Selasa, 14 Maret 2017

PBO Classes and Objects (A Deeper Look II) (tugas 4)

Classes and Objects 8.7 - 8.13

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

Tidak ada komentar:

Posting Komentar