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