PBO - Komposisi, Enumerasi, dan Static Field

Monday, March 6, 2017

PBO - Komposisi, Enumerasi, dan Static Field


Sebuah kelas dapat memiliki beberapa reference ke class lain sebagai anggota class nya. Ini dapat disebut sebagai komposisi dan dapat disebut memiliki hubungan has-a relationship. Contohnya adalah, misal ada sebuah objek jam alarm. Jam alarm harus mengetahui waktu saat itu dan waktu dimana ia harus membunyikan alarmnya. Jadi didalam object JamAlarm akan ada dua reference ke objek Waktu, dimana yang satu adalah waktu saat itu, dan yang satu lagi waktu dimana alarm akan berbunyi.

Contoh komposisi dibawah ini memiliki 3 class, Date, Employee, dan EmployeeTest.

Class Date mendeklarasikan variabel month, day, dan year untuk merepresentasikan sebuah tanggal. Konstruktor mendapatkan 3 parameter int. Method checkMonth digunakan untuk memvalidasi bulan. Jika bulan lebih dari 12, yang berarti out of range, method akan mengeluarkan exception. checkDay berfungsi hampir sama dengan checkMonth, namun ia memeriksa validasi dari tanggal, berdasarkan bulan dan tahun didalam tanggal tersebut. Namun, jika semisal tanggal tidak valid, akan diperiksa terlebih dahulu apakah bulan yang dimasukkan adalah Februari atau tahun itu adalah kabisat, namun jika masih salah akan dikeluarkan exception.

Class Employee memiliki instance variable firstName, lastName, birthDate dan hireDate. birthDate dan hireDate adalah referensi ke object Date. Dengan menggunakan Date sebagai parameter birthDate dan hireDate dapat menjadi instance variable yang mereferensi objek dari class lain. Constructor Employee mengambil 4 parameter - first, last, dateOfBirth dan dateOfHire. Saat method toString dipanggil, ia akan return sebuah String yang berisi nama pegawai dan representasi String dari kedua objek Date. Setiap String ini didapatkan dengan panggilan implisit dari method toString menuju class Date.

Class EmployeeTest membuat dua objek Date untuk mewakili tanggal ulang tahun dan tanggal diterimanya pegawai itu. Kemudian instance variable Employee dibuat dengan passing constructor dua objek String dan dua objek Date. Seteah itu method toString milik class Employee dipanggil secara implisit untuk output.

Berikut adalah kode ketiga class:

Class Date:


Class Employee:


Class EmployeeTest:


Berikut adalah hasil output:



Enumerations

Didalam program ini, akan dibahas tentang hubungan antara enum dan class. Enum dideklarasikan dengan enum declaration, yang berisi konstanta enum yang diurutkan dengan koma. Deklarasi ini bisa berisi komponen lain dari class, seperti constructor, field atau method. Didalam program ini akan ada dua class, yaitu Book dan EnumTest.

Didalam class book ditunjukkan bagaimana cara mendeklarasika instance variable, constructor, dan method didalam enum. Deklarasi enum berisi dua bagian, bagian konstanta enum dan bagian enum lainnya. Masing-masing bagian dapat diikuti argumen yang berlanjut ke enum constructor.
Berikut adalah contoh kedua class:

Class Book:


Class EnumTest:


Berikut adalah output dari program:
 


Static Class Members

Setiap objek pasti memiliki instance variable yang sama di tiap class. Namun dalam beberapa kasus, hanya ada satu variable tertentu yang harus dibagikan oleh semua objek didalam class. Dalam kasus seperti demikian, static field digunakan. Variabel static menunjukkan classwide information - semua objek didalam class menggunakan data yang sama. Deklarasi variabel static dimulai dengan keyword static.

Didalam program dibawah ini akan dideklarasikan dua buah class - Employee dan EmployeeTest. Class Employee mendeklarasikan variabel count static dan method static getCount. Variabel count static dinisialisasi dari 0. Jika variabel static tidak diinisialisasi, compiler akan menggunakan nilai default - dalam kasus ini 0, sebagai nilai default untuk tipe int. Variabel count menghitung jumlah objek yang class Employee telah buat.

Berikut adalah contoh kedua class:

Class  Employee:


Class EmployeeTest:

Contoh output:

0 comments :

Post a Comment