In this Application, you will do two things simultaneously: test an existing program and modify its code to create a new program. To complete this Application, follow the series of steps below. Each step is labeled either "existing" or "new" so you know whether you should be working within the confines of the existing program (to provide a contextual example) or need to code within the new program you are creating (entitled Dog-unit5).
(existing) Download and compile the project Person-v1.
(existing) Create the following two Person objects:
An object named peter representing a 37-year-old man named Peter Santos
An object named lisa, representing a 23-year-old woman named Lisa Nielson
(existing) Right-click on each object to invoke methods that ensure the full name and birthday in each object are correct.
(existing) Today is Lisa's birthday, and she is now 24 years old. Invoke the birthday method on lisa to increase her age by one year. Invoke the age method to verify that Lisa's age is now correct.
(existing) So far, you have created two objects of type Person. The following UML class diagram describes the Person class.
Person
+ age : int
+ name : String
+ birthday() : void
+ age() : int
+ name() : String
Compare the source code in BlueJ with the UML diagram above. Note how each line of the UML diagram corresponds to individual lines of code in the program Person-v1.
(new) In Step 5 above, you examine the relationship between a UML class diagram and an existing program. In this step, you will do the opposite: construct a class given a UML class diagram. Start a new BlueJ project called Dog-unit1. Include a single class called Dog, based on the UML class diagram below.
Dog
+ age : int
+ owner : String
+ setOwner( String newOwner ) : void
+ getOwner() : String
+ birthday() : void
+ dogAge() : int
A point of order for the Dog class: dogAge() should use the traditional method to calculate age in dog years-it multiplies the age value (expressed in human years) by seven.
(new) Create two new dog objects named pluto and bess. Pluto is a 7-year-old dog owned by Mark Smith, and Bess is a 2-year-old dog owned by Jens Hanson. Your BlueJ window should resemble the following screenshot.
(existing) Open the project titled person-v2. Recreate one of the Person objects from Step 2 (peter or lisa). Right-click the object to see the methods you can invoke on the object, including a few new methods that were not present in person-v1: isSeniorCitizen() and isTeenager(). Call each of the methods for the object and explore how the methods are coded, because your next goal will be to incorporate similar code into your dog-week1 program.
(new) In the Dog class of the program you are writing, create the following method:
public Boolean isPuppy()
In the context of this Application, a dog is a puppy if it is less than 3 "dog years" old.
Hint: Your dogAge() method should report the object's age in dog years.
(existing) Open the project person-v3. Once again, recreate the two person objects from Step 2 (lisa and peter). Additional methods have been added since the last incarnation of the program in Step 8. Right-click to invoke a method that tests whether or not Peter and Lisa are married and/or in love.
(existing) Assume that Lisa is in love with and married to Peter. However, Peter is more in love with himself than he is with Lisa. Invoke the methods setLover(...) and setSpouse(...) to reflect this new information. Hint: You can set Lisa's lover to Peter by right-clicking on the object lisa, selecting the setLover(...) method, and supplying the argument peter. Note that peter is an object, not the String "peter," so you should not enclose the name in double quotes (" ").
(existing) Right-click on object peter and select "Inspect" to open the object inspector.
The values of the object's fields (which are also called attributes) are displayed.
The age attribute of the object is 37 and the name is "Peter Santos"; and lover and spouse attributes are references to other objects. To dig deeper and uncover those references, double-click on each attribute. For example, the following window is displayed when you double-click spouse.
What do you get when you click on lover? And why?
(new) Update the Dog class, adding the two new attributes and four new methods in the following UML class diagram. Note that the arguments Dog m and Dog f refer to male and female dogs, respectively.
Dog
+ age : int
+ owner : String
+ mother : Dog
+ father : Dog
+ setOwner( String newOwner ) : void
+ getOwner() : String
+ birthday() : void
+ dogAge() : int
+ setMother(Dog m) : void
+ setFather(Dog f) : void
+ hasMother() : Boolean
+ hasFather() : Boolean
(new) Create Dog objects based on the pedigree (dog family tree) below and relate them (the dog's name is, for example, "Ch Ji Jo"). Omit the rightmost column of the pedigree, so your program should contain seven new objects at the conclusion of this step.