Mengenal Composition
Komposisi merupakan keadaan dimana sebuah kelas dapat memiliki referensi ke obyek dari kelas-kelas lain sebagai anggota atau dapat disebut sebagai kepemilikan hubungan.
/**
* Write a description of class date here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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.
/**
* Write a description of class employee here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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.
/**
* Write a description of class EmployeeTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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);
}
}
Mengenal Enumerations
Enumerasi merupakan pengidentifikasi unik yang mendefinisikan suatu set konstanta. Sebuah objek bertipe Enumeration dapat mengakses isi dari kumpulan nilai pada enumerasi. Seperti kelas, semua jenis enum adalah jenis referensi. Setiap deklarasi enum menyatakan kelas enum dengan batasan sebagai berikut:
1. Konstanta enum secara implisit final, karena mereka menyatakan konstanta yang tidak boleh diubah.2. Konstanta enum secara implisit statis.
3. Setiap usaha untuk menciptakan sebuah objek dari tipe enum dengan operator hasil baru dalam kesalahan kompilasi.
8.10 | Declaring an enum type with constructor and explicit instance fields and accessors for these fields.
/**
* Write a description of class Book here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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.
/**
* Write a description of class EnumTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
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());
}
}
Mengenal Static Class Members
Setiap objek memiliki salinan dari semua variabel instance dari kelas. Dalam kasus tertentu, hanya satu salinan dari variabel tertentu harus dimiliki oleh semua objek dari kelas. Sebuah variabel statis mewakili classwide-information semua objek dari suatu kelas pada data yang sama. Deklarasi variabel statis dimulai dengan kata kunci static.
Sebuah
metode statis tidak dapat mengakses anggota kelas non-statis, karena
metode statis dapat dipanggil bahkan ketika tidak ada objek yang telah dipakai dari kelas. Untuk alasan yang sama, referensi tidak dapat digunakan dalam metode statis. Referensi harus mengacu ke objek tertentu dari kelas, dan ketika metode
statis dipanggil, bisa jadi tidak ada benda dari kelasnya dalam memori.
8.12 | Static variable used to maintain a count of the number of Employee objects in memory.
/**
* Write a description of class employee here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class Employee
{
private String firstName;
private String lastName;
private static int count = 0;
public Employee(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.
/**
* Write a description of class EmployeeTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class EmployeeTest
{
public static void main(String[] args)
{
System.out.printf("Employees before instantiation: %d\n", Employee.getCount());
Employee e1 = new Employee("Susan", "Baker");
Employee e2 = new Employee("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 Employee.getCount(): %d\n", Employee.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