8.7. Date Class Declaration
/**
* Date
* Monica I H
* PBO
*/
public class Date
{
private int month;
private int day;
private int year;
private static final int[] daysPerMonth =
{0,31,28,31,30,31,30,31,31,30,31,30,31};
public Date(int theMonth, int theDay, int theYear)
{
month = checkMonth( theMonth );
year = theYear;
day = checkDay (theDay);
System.out.printf(
"Date object constructor for date %s\n", this);
}
private int CheckMonth(int testMonth)
{
if (testMonth > 0 && testMonth <=12)
return testMonth;
else
throw new IllegalArgumentException ("month must be 1-12");
}
private int checkDay(int testDay)
{
if (testDay > 0 && testDay <= daysPerMonth [month])
return testDay;
if(month == 2 && testDay == 29 && (year % 400 == 0 ||
(year % 4 == 0 && year % 100 != 0 )))
return testDay;
throw new IllegalArgumentException(
"day out-of-range for the specified month and year");
}
public String toString()
{
return String.format("%d/%d/%d", month, day, year);
}
}
8.8. Employee Class with References to other objects
/**
* Employee
* Monica I H
* PBO
*/
public class Employee
{
private String firstName;
private String lastName;
private Date birthDate;
private Date hireDate;
public Employee (String first, String last, Date dateOfBirth,
Date dateOfHire)
{
firstName = first;
lastName = last;
birthDate = dateOfBirth;
hireDate = dateOfHire;
}
public String toString()
{
return String.format ("%s, %s Hired: %s Birthday: %s",
lastName, firstName, hireDate, birthDate);
}
}
8.9. Composition Demonstration
/**
* EmployeeTest
* Monica I H
* PBO
*/
public class EmployeeTest
{
public static void main (String[] args)
{
Date birth = new Date (7,24,1949);
Date hire = new Date (3,12,1988);
Employee employee = new Employee ("Bob", "Blue", birth, hire);
System.out.println(employee);
}
}
8.10. Declaring an enum type with constructor and explicit instance fields and accessors for these fields
/**
* Enumeration class Book
* Monica I H
* PBO
*/
public enum Book
{
JHTP( "Java How to Program", "2012" ),
CHTP( "C How to Program", "2007" ),
IW3HTP( "Internet & World Wide Web How to Program", "2008" ),
CPPHTP( "C++ How to Program", "2012" ),
VBHTP( "Visual Basic 2010 How to Program", "2011" ),
CSHARPHTP( "Visual C# 2010 How to Program", "2011" );
private final String title;
private final String copyrightYear;
Book (String bookTitle, String year)
{
title = bookTitle;
copyrightYear = year;
}
public String getTitle()
{
return title;
}
public String getCopyrightYear()
{
return copyrightYear;
}
}
8.11. Testing an Enum Type
/**
* EnumTypeTesting
* Monica I H
* PBO
*/
import java.util.EnumSet;
public class EnumTest
{
public static void main(String[] args)
{
System.out.println("All books:\n");
for (Book book : Book.values() )
System.out.printf("%-10s%-45s%s\n", book,
book.getTitle(), book.getCopyrightYear() );
System.out.println("\nDisplay a range of enum constants:\n");
for (Book book : EnumSet.range(Book.JHTP, Book.CPPHTP))
System.out.printf("%-10s%-45s%s\n", book,
book.getTitle(), book.getCopyrightYear() );
}
}
8.12. Static Variable Used to Maintain a Count of The Number of Employee Object in Memory
/**
* Employee2
* Monica I H
* PBO
*/
public class Employee2
{
private String firstName;
private String lastName;
private static int count=0;
public Employee2(String first, String last)
{
firstName = first;
lastName = last;
++count;
System.out.printf("Employee constructor: %s %s; count = %d\n",
firstName, lastName, count);
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public static int getCount()
{
return count;
}
}
8.13. Static Member Demonstration
/**
* Employee2Testing
* Monica I H
* PBO
*/
public class Employee2Test
{
public static void main (String[] args)
{
System.out.printf("Employees before instantiation: %d\n",
Employee2.getCount());
Employee2 e1 = new Employee2("Susan", "Baker");
Employee2 e2 = new Employee2("Bob", "Blue");
System.out.println( "\nEmployees after instantiation: " );
System.out.printf( "via e1.getCount(): %d\n", e1.getCount());
System.out.printf( "via e2.getCount(): %d\n", e2.getCount());
System.out.printf( "via Employee2.getCount(): %d\n",
Employee2.getCount() );
System.out.printf("\nEmployee 1 : %s %s \nEmployee 2: %s %s \n",
e1.getFirstName(), e1.getLastName(),
e2.getFirstName(), e2.getLastName());
e1 = null;
e2 = null;
}
}


