// ANSWERS:
// (1) Think of a new property that a person can have and add
// it to the Person class. You should be able to do this
// by copying the pattern of the other properties of the
// Person class. Four changes to the program listing are
// needed:
// (1a) Add the name of the property and its type to the
// "properties" section of the class.
//
// For the answer to this question let's suppose the new
// property we are going to add is "height", which measures
// the height in centimeters.
private int height;
//
// (1b) Add an extra parameter to the the constructor so
// that the property gets initialised correctly.
//
// ANSWER: The constructor will be changed to this:
public Person(String aName, int anAge, int aHeight) {
name = aName;
age = anAge;
height = aHeight;
}
//
// (1c) Modify the main method so that the Luke Skywalker
// and Winston Peters objects get the appropriate value of
// the new property.
//
// The main method might be changed to this:
public static void main(String[] args) {
Person ls = new Person("Luke Skywalker",34,180);
Person wp = new Person("Winston Peters",48,173);
ls.talk();
wp.talk();
}
//
// (1d) Modify the talk method so that the new property is
// printed to the screen when the talk method is called.
//
// The "talk" method would be changed to this:
public void talk() {
System.out.println("Hi, my name's " + name);
System.out.println("and my age is " + age);
System.out.println("and my height is " + height);
System.out.println();
}
//
// (2) Modify the commentAboutAge method to print the
// message "old person" if the person's age is greater
// than 40.
//
// ANSWER: The following code should be added inside the
// "commentAboutAge" method:
if (age > 40) {
System.out.println("old person");
}
//
// (3) In the main method add two calls to commentAboutAge,
// one for Luke Skywalker and one for Winston Peters.
//
// ANSWER: These two lines should be added towards the end
// of the main method:
ls.commentAboutAge();
wp.commentAboutAge();
//
// (4) Write a method growOlder that adds one year to the
// person's age. Make Winston Peters get older by one year
// by putting a call in the main method to do this.
// HINT: Look at the talk and the commentAboutAge methods to
// see how to define a method.
//
// ANSWER: Here is how to define the method:
public void growOlder() {
age = age + 1;
}
// Alternatively, you can write "age++" or "++age" or
// "age+=1" in the place of "age=age+1". These statements
// all do the same thing.
// To make Winston Peters grow older, put the following
// line into the main method:
wp.growOlder();
//
// (5) Write a method giveKnighthood that adds the word
// "Sir" to the beginning of a person's name. Then make
// Winston Peters become "Sir Winston Peters" by calling
// this method from the main method.
// HINT: This is much like question (4), except you are
// adding strings instead of numbers.
//
public void giveKnighthood() {
name = "Sir " + name;
}
// To call the method, put
wp.giveKnighthood();
// in the main method.
//
// (6) How is it possible to print the value of Luke
// Skywalker's age directly from inside the main method
// without calling the talk method?
// HINT: The talk method has a line of code to print the
// person's age. Copy this code to the main method, but
// since you are in another class from the age property, you
// will need to mention the name of the object in front of
// the age property, so age becomes ls.age.
// Also, you will need to change the definition of the age
// property from private to public to get this change to
// work. Why you need to do this will be covered in more
// detail in another tutorial.
//
//
// ANSWER: The following code in the main method will print
// Luke Skywalker's age:
System.out.println("Luke Skywalker's age is " + ls.age);
//
// (7) Delete the calls to commentAboutAge that you added in
// question (3), and instead put a call to commentAboutAge
// in the talk method. Note that when you are calling a
// method of the same class you are in, you don't have to
// put the object name in front of the method.
// Your program should generate similar output to what it
// did before.
//
// ANSWER: Simply add the following line to the end of the "talk"
// method:
commentAboutAge();
//
// (8) Write a growOlderBy method which is similar to the
// growOlder method, except that it has an int parameter
// called years which says how many years the person should
// grow older by. In the main method, place a call to
// growOlderBy to make Luke Skywalker age by ten years.
//
public void growOlderBy(int years) {
age = age + years;
}
// To call this method, use the following line:
ls.growOlderBy(10);
//