Writing your own classes in Java

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;	
	}	
}

CSci 2101 course web site.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.