460 likes | 720 Views
KELAS dan OBJEK Lanjutan. Komposisi. Kelas A dapat memiliki referensi ke obyek dari kelas-kelas lain sebagai anggota . Kadang-kadang disebut sebagai hubungan “ has -a ”.
E N D
Komposisi • Kelas A dapat memiliki referensi ke obyek dari kelas-kelas lain sebagai anggota. • Kadang-kadang disebut sebagai hubungan “has-a”. • Sebagai contoh, sebuah objek kelas Karyawan perlu mengetahui tanggallahir dan tanggalmulaibekerja, sehingga perlumemasukkan dua referensi ke obyek Tanggalsebagai anggota dari objek Karyawan . • Salah satu bentuk penggunaan kembali perangkat lunak (software reuse) adalah komposisi, di mana kelas memiliki referensi anggota untuk objek kelas lainnya.
AnggotaKelasStatik • Atribut (field) Statik • Juga disebutsebagai variabel kelas • Merepresentasikan informasi/data kelassecara luas • Digunakan ketika: • semua objek kelas harus berbagi nilai data yang sama dari variabel instanatau • variabel instanharus dapat diakses,bahkan ketika objek belumdiinstansiasi • Dapat diakses melaluinama kelas atau nama objek dan operator titik (.) • Harus diberinilaiinisialisasi ketika dideklarasi, atau kompiler akan menginisialisasi dengan nilai default (0 untuk int)
AnggotaKelasStatik (lanjutan) • Gunakan variabel statikketika semua objek dari sebuah kelas harus mendapatkannilai data yang sama darivariabeldi saat yang sama. • Variabeldanmetodestatikkelasdapatdigunakansecaralangsung, walaupuntidakadainstansiasiobjekdarikelastersebut. • Pemanggilan metode statikdapatmenggunakan nama kelas diikuti operator titik (.), danhalitumenandakanbahwa metode yang dipanggil merupakanmetode statik.
AnggotaKelasStatik (lanjutan) • Metode statik tidak dapat mengakses anggota kelas non-statik, juga didalamnyatidak dapat digunakan referensi this. • Sebuah kesalahan kompilasi akanterjadi ketikametode statikmemanggilmetode non-statikdi kelas yang sama dengan hnya menggunakan nama metode. Demikian pula, kesalahan kompilasi terjadi jika metode statis mencoba untuk mengakses variabel instandi kelas yang sama dengan hanya menggunakan nama variabel.
Import Statik • Deklarasi import statik • Memungkinkan programmer mengimportanggota statiklayaknya dideklarasikan pada kelas pemakai. • Import statik tunggal • Import statiktunggal:import static namaPaket.namaKelas.namaAnggotaStatik; • import statiksesuai kebutuhan • import static namaPaket.namaKelasStatik.*; • importsemua anggota statikdari kelas tertentu
Variabelfinal • Prinsip Pemrograman • Kode program harus dapatmengontrolbahwahanya bolehmelakukanperubahannilai data jikamemangdiperlukan. Sehinggadibutuhkanlayaknyavariabel yang harusbernilaikonstan. • Keyword final • Untukmendeklarasikanlayaknyavariabel yang nilaidatanyatidakdapatdimodifikasi (konstan)sebagaikonstanta. • Variabel finaldapat diinisialisasi saatdideklarasi. • Jika tidak diinisialisasi ketikadeklarasi, makaharus diinisialisasi di semua konstruktor.
Variabelfinal (lanjutan) • Mendeklarasikan variabel instanfinal dapatmembantu menegakkan prinsip dasardalampemrograman. Jika variabel instanmemilikinilai data yang tidak harus diubah, makadapatdideklarasikansebagai variabelfinaluntuk mencegah terjadinyamodifikasi.
Stack dan Heap • Dalam java, dikenal 2 buah jenis memory, yaitu : • Stack (tempat local variable dan tumpukan method) • Heap (tempat instance variable dan object) • Perhatikan contoh program berikut:
Stack dan Heap • Pada contoh program di atas: • Yang terletak di stack : • Metode main() • Metode myMethod() • Variabel reference a (baris 7) • Yang terletak di heap : • Variable reference b1 (baris 2) • Variable reference s (baris 3) • Variabel i (baris 4) • Object dari kelas B (baris 2) • Object String dengan nilai “halo” (baris 3) • Object dari kelas A (baris 7)
Garbage Collector (GC) • Garbage Collector • Sebuah objek dialokasi di memori ketika dibuat. • JVM selalumenandai objek untuk garbage collector ketika tidak ada lagi yang mereferensi ke objek tersebut. • Garbage collector dariJVM akan mengaturmemori objekdiatasagar dapat digunakan yang lain.
Garbage Collector (GC) • Pembahasan garbage collector ini dibatasi hanya pada object-object non String. • Garbage collector (GC) menyediakan solusi otomatis dalam pengelolaan memory. • Pada kebanyakan kasus, GC membebaskan programer dari mengatur logic memory management dalam aplikasi.
Garbage Collector (GC) • Tugas utama GC adalah menyediakan free space pada heap sebanyak mungkin, tapi tidak ada jaminan bahwa di heap ada memory yang cukup untuk agar program java berjalan. Hal ini dilakukan dengan menemukan dan menghapus object pada heap yang sudah tidak direference oleh variable apapun. • Kapan GC dijalankan? • Ditentukan oleh JVM. • Melalui program, programer dapat menyarankan JVM untuk menjalankan GC, tetapi yang memutuskan tetap GC. • Biasanya JVM akan menjalankan GC bila dirasa free memory sedang rendah. • Algorithma GC tidak dapat dibaca dan diubah. • Program Java masih bisa terjadi run out of memory, bila terlalu banyak objek dialokasikan di memori,meskipun ada GC.
Syarat Objek di-dealokasi dari memori • Suatu objet layak di-dealokasi dari memori, ketika tidak ada thread yang dapat mengakses objek tersebut. • 4 hal yang membuat suatu object layak didealokasi dari memori: • Memberikan nilai null pada variable reference. • Mereferensi suatu variable referensi ke objek lain. • Objek yang direferensi oleh variabel lokal. • Isolating reference.
Dealokasi Objek • Memberikan nilai null pada variable reference.
Dealokasi Objek • Mereferensi variable referensi ke objek lain.
Dealokasi Objek • Objek yang direferensi oleh variabel lokal.
Dealokasi Objek • Objek yang direferensi oleh variabel lokal.
Dealokasi Objek • Isolating reference.
Meminta JVM melakukan GC • Melalui kode program, programmer dapat meminta JVM melakukan GC. JVM akan berusaha melakukan GC, meski tidak ada jaminan akan terpenuhi. • Ada 2 cara untuk meminta JVM melakukan GC, yaitu: • Menggunakan metode System.gc() • Metode gc() dari instansiasi kelas Runtime
Metode finalize • Metode finalize • Semua kelas di Java memiliki metode finalizesebagaiwarisandari kelas Object • metode finalize akandipanggiloleh garbage collector(gc) ketika melakukan terminasiterhadapobjek. • metode finalize tidakber-parameter dan mempunyaipengembalian bertipe void.
Metode finalize • Java menyediakan suatu mekanisme untuk menjalankan suatu kode sebelum suatu objek dihapus oleh GC. Metode tersebut adalah metode finalize yang diturunkan dari kelas Object. • Karena kita tidak dapat mengantungkan pada GC untuk menghapus suatu object, maka kode yang terdapat di metode finalize tidak dijamin akan dijalankan. • Metode finalize maksimal dijalankan 1 kali (yang berarti dapat tidak dijalankan)
ENUMERASI • Untuk mendefinisikanserangkaiankonstanta yang direpresentasikan sebagai identifikasi unik. • Tipeenum • Dideklarasikan dengan menggunakan keyword enum • Daftar konstanta enum dipisahkan dengankoma • Deklarasikan kelas enum dengan batasan sebagai berikut: • tipe enum secara implisit berbentukfinal • konstanta enum secara implisit statik • Mencoba untuk membuat obyek dari tipe enum dengan menggunakannewakanmengakibatkankesalahan kompilasi • Konstanta enum dapat digunakan di mana saja layaknyanilai data, seperti untuknilaikonstantapadacasedalampernyataan switch dan dapatdipakaidalampernyataanpengulanganfor. • Konstruktorenum • Sebagaimanadalamkonstruktorkelas, dapat mempunyaiparameter maupun di-”overload”.
ENUMERASI (lanjutan) • Deklarasienumsederhanaadalahsbb.: • Untukmengaksessuatuenumadalahsbb.:
ENUMERASI (lanjutan) • Sebuahenumdapatdiubahmenjadisuatukelasbiasadengansetiap enumerated list padaenumadalahvariabelbermodifier public static final dengantipe data kelastersebut.Enumerasiyang dideklarasikandalambentukkelastidakdianjurkanuntukdipakaidalamimplementasi program. (Hanyauntukpemberianpemahaman).
ENUMERASI (lanjutan) • Metode statik “values” • Dibuatoleh kompilator padasetiap enum • Mengembalikan sebuah array konstanta enum dalam urutan sesuaideklarasinya • Metode statikpadakelasEnumSet • Memilikidua parameter, konstanta enum pertamasebagainilaiawaldan keduasebagainilaiakhir • Mengembalikan sebuah EnumSet berisi konstanta dalam kisarankedua parameter di atas, termasuk: • Nilaipeningkatan (penambahan) padapernyataan for untuk digunakandalamiterasi melalui konstantaarray EnumSet