Demonstrating various methods of Person class:
public class TestPerson{
public static void main(String [] args) {
// create a new Person
Person bob = new Person("Robert","Smith",1985);
// create another person
Person mary = new Person("Mary","Green",1987);
System.out.println("Testing names:");
// expect to print: Robert
System.out.println(bob.getFirstName());
//expect to print: Green
System.out.println(mary.getLastName());
// expect to print: Mary Green
System.out.println(mary.getFullName());
System.out.println("Changing name:");
bob.changeName("Bob","");
// expect: Bob Smith
System.out.println(bob.getFullName());
System.out.println("Checking the age:");
int year = 2010;
// expected: 25
System.out.println("In the year " + year + " " + bob.getFullName() +
" turned or will turn " + bob.age(year));
year = 2011;
// expected: 24
System.out.println("In the year " + year + " " + mary.getFullName() +
" turned or will turn " + mary.age(year));
// write and test a method "isOlder"
// write toString method so that a Person object
// can be printed directly with System.out.println
}
}
The Person class:
/**
This simple class describes a person: their name (first, last) and date of birth.
**/
public class Person {
// instance variables (a.k.a. fields):
// different for each instance of a person
// private variables are invisible outside of the
// Person class: no other part of the program can change them
// or even see them
private String firstName;
private String lastName;
private int yearBirth; //for simplicity only have year
// Constructor method
// note: no return type, not even void
/** creates a person with the given first and last names
* and a given year of birth
* A year that's < 0 or > 2011 causes the program to exit
**/
public Person(String first, String last, int year) {
firstName = first;
lastName = last;
// check if the year is valid, exit the program if
// it's not. We will learn a better approach to error
// handling later, but this will do for now
if (year < 0 || year > 2011) {
System.out.println("invalid year");
System.exit(0);
}
yearBirth = year;
}
/**
* returns the person's first name
**/
public String getFirstName() {
return firstName;
}
/**
* returns the person's last name
**/
public String getLastName() {
return lastName;
}
/**
* returns the person's full name: concatenation
* of their first and last name separated by a space,
* e.g. Robert Smith
**/
public String getFullName() {
return firstName + " " + lastName;
}
/**
* the method changes the first and the last name of the person
* to the given strings. If the new first name or the
* the new last name is an empty string ""
* then the correspinding name is not changed
**/
public void changeName(String newFirst, String newLast) {
if (! newFirst.equals("")) {
firstName = newFirst;
}
if (! newLast.equals("")) {
lastName = newLast;
}
}
/**
* The method takes a year and returns the age the person turns in
* that year
**/
public int age(int year) {
return year - yearBirth;
}
}