Didalam class date akan ada dua waktu (waktu sekarang dan waktu yang lain) yang dimana waktu yang lain dapat di setting sendiri sesuai kebutuhan.
1. Date Class Declaration
// Fig. 8.7: Date.java
// Date class declaration.
public class Date
{
private int month; // 1-12
private int day; // 1-31 based on month
private int year; // any year
private static final int[] daysPerMonth = // days in each month
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// constructor: call checkMonth to confirm proper value for month;
// call checkDay to confirm proper value for day
public Date( int theMonth, int theDay, int theYear )
{
month = checkMonth( theMonth ); // validate month
year = theYear; // could validate year
day = checkDay( theDay ); // validate day
System.out.printf(
"Date object constructor for date %s\n", this );
} // end Date constructor
// utility method to confirm proper month value
private int checkMonth( int testMonth )
{
if ( testMonth > 0 && testMonth <= 12 ) // validate month
return testMonth;
else // month is invalid
throw new IllegalArgumentException( "month must be 1-12" );
// end method checkMonth
}
// utility method to confirm proper day value based on month and year
private int checkDay( int testDay )
{
// check if day in range for month
if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
return testDay;
// check for leap year
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" );
} // end method checkDay
// return a String of the form month/day/year
public String toString()
{
return String.format( "%d/%d/%d", month, day, year );
} // end method toString
} // end class Date
3. Employee class with references to other objects
// Fig. 8.8: Employee.java
// Employee class with references to other objects.
public class Employee
{
private String firstName;
private String lastName;
private Date birthDate;
private Date hireDate;
// constructor to initialize name, birth date and hire date
public Employee( String first, String last, Date dateOfBirth,
Date dateOfHire )
{
firstName = first;
lastName = last;
birthDate = dateOfBirth;
hireDate = dateOfHire;
} // end Employee constructor
// convert Employee to String format
public String toString()
{
return String.format( "%s, %s Hired: %s Birthday: %s",
lastName, firstName, hireDate, birthDate );
} // end method toString
} // end class Employee
4. Composition demonstration
// Fig. 8.9: EmployeeTest.java
// Composition demonstration.
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 );
} // end main
} // end class EmployeeTest
Out put:
Date object constructor for date 7/24/1949
Date object constructor for date 3/12/1988
Blue, Bob Hired: 3/12/1988 Birthday: 7/24/1949
5. Declaring an enum type with constructor and explicit in
// Fig. 8.10: Book.java
// Declaring an enum type with constructor and explicit instance fields
// and accessors for these fields
public enum Book
{
// declare constants of enum type
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" );
// instance fields
private final String title; // book title
private final String copyrightYear; // copyright year
// enum constructor
Book( String bookTitle, String year )
{
title = bookTitle;
copyrightYear = year;
} // end enum Book constructor
// accessor for field title
public String getTitle()
{
return title;
} // end method getTitle
// accessor for field copyrightYear
public String getCopyrightYear()
{
return copyrightYear;
} // end method getCopyrightYear
} // end enum Book
6. Testing enum type Book
// Fig. 8.11: EnumTest.java
// Testing enum type Book.
import java.util.EnumSet;
public class EnumTest
{
public static void main( String[] args )
{
System.out.println( "All books:\n" );
// print all books in enum Book
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" );
// print first four books
for ( Book book : EnumSet.range( Book.JHTP, Book.CPPHTP ) )
System.out.printf( "%-10s%-45s%s\n", book,
book.getTitle(), book.getCopyrightYear() );
} // end main
} // end class EnumTest
Output :
All books:
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
Display a range of enum constants:
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
7. Static variable used to maintain a count of the number of Employee objects in memory
// Fig. 8.12: Employee.java
// Static variable used to maintain a count of the number of
// Employee objects in memory.
public class Employee
{
private String firstName;
private String lastName;
private static int count = 0; // number of Employees created
// initialize Employee, add 1 to static count and
// output String indicating that constructor was called
public Employee( String first, String last )
{
firstName = first;
lastName = last;
++count; // increment static count of employees
System.out.printf( "Employee constructor: %s %s; count = %d\n",
firstName, lastName, count );
} // end Employee constructor
// get first name
public String getFirstName()
{
return firstName;
} // end method getFirstName
// get last name
public String getLastName()
{
return lastName;
} // end method getLastName
// static method to get static count value
public static int getCount()
{
return count;
} // end method getCount
} // end class Employee
8. Static member demonstration
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
// Fig. 8.13: EmployeeTest.java
// static member demonstration.
public class EmployeeTest
{
public static void main( String[] args )
{
// show that count is 0 before creating Employees
System.out.printf( "Employees before instantiation: %d\n",
Employee.getCount() );
// create two Employees; count should be 2
Employee e1 = new Employee( "Susan", "Baker" );
Employee e2 = new Employee( "Bob", "Blue" );
// show that count is 2 after creating two Employees
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 Employee.getCount(): %d\n",
Employee.getCount());
// get names of Employees
System.out.printf( "\nEmployee 1: %s %s\nEmployee 2: %s %s\n",
e1.getFirstName(), e1.getLastName(),
e2.getFirstName(), e2.getLastName() );
// in this example, there is only one reference to each Employee,
// so the following two statements indicate that these objects
// are eligible for garbage collection
e1 = null;
e2 = null;
}// end main
} // end class EmployeeTest
Output:
Employees before instantiation: 0
Employee constructor: Susan Baker; count = 1
Employee constructor: Bob Blue; count = 2
Employees after instantiation:
via e1.getCount(): 2
via e2.getCount(): 2
via Employee.getCount(): 2
Employee 1: Susan Baker
Employee 2: Bob Blue
Tidak ada komentar:
Posting Komentar