Pemrograman Lanjut Class : Deeper Look 2
PTIIK - 2013
Objectives Mampu menggunakan variabel dan method static dan final. Mampu meng-import static member dari sebuah kelas. Mampu membuat package dan meng-import package yang didefinisikan oleh user
Static Class Member Setiap object mempunyai copy dari semua instance variable dari sebuah class. Pada kasus tertentu hanya satu copy dari variabel tertentu yang di-share kepada semua object dari sebuah kelas, disebut sebagai variabel static.
Static Class Member Variable static mempunyai class scope: Sebuah member class public static bisa diakses melalui sebuah reference untuk setiap object dari sebuah kelas, atau mereka dapat diakses dengan qualifying nama member dengan nama class dan sebuah dot (.), seperti Math.random. Sebuah member class private static dapat diaskes hanya melalui method dari kelas tersebut. Sebenarnya, member static class ada walaupun tidak ada object dari sebuah kelas . Untuk mengkases sebuah member dari private static ketika tidak ada object dari class, sebuah public static method harus ada dan method tersebut dipanggil dengan meng-qulifying namanya dengan nama class dan dot.
Deklarasi dari sebuah static variable dimulai dengan keyword static
Static Class Member static fields Juga dikenal sebagai class variables Mewakili informasi class-wide (secara luas) Digunakan ketika: • Semua object dari class harus membagi (share) copy yang sama dari setiap instance variable, atau • instance variable ini harus dapat diakses meskipun tidak ada object dari class yang ada.
Dapat diakses dengan nama class atau nama object dan sebuah dot (.) Harus diinisialisasi pada pendeklarasiannya, atau compiler akan menginisialisasi dengan nilai default (0 untuk int)
Static class variables dan methods bisa langsung digunakan, meskipun tidak ada object dari class tersebut yang telah di-instansiasi
Final Instances Variables Konsep privilege paling sedikit (least privilege) adalah sangat penting dalam software engineering. Kita dapat menggunakan keyword final untuk menentukan apakah sebuah variabel tidak bisa diubah (i.e., it is a constant) dan bila diubah akan menimbulkan error . Sebagai contoh, private final int PERCEPATAN = 5; Mendeklarasikan sebuah final (constant) instance variable PERCEPATAN dengan tipe int. Setiap final harus diinisialisasi
Final Instances Variables Selain dapat diinisialisasi ketika dideklarasikan, constants bisa juga diinisialisasi oleh setiap constructors. Jika class menyediakan banyak constructors, setiap constructor harus menginisialisasi final variable. Sebuah final variable tidak bisa diubah oleh assignment setelah diinisialisasi.
Catatan Mencoba mengubah sebuah final instance variable setelah diinisialisasi akan menghasilkan error Sebuah final field jika dibuat static maka harus diinisialisasi pada pendeklarasiannya. Setelah sebuah final field diinisialisasi pada pendeklarasiannya, nilainya tidak akan berubah. Oleh karena itu, tidak perlu membuat copy field pada setiap object pada class. Dengan membuat field static membuat semua object mempunyai final field.
Catatan Tidak menginisialisasi sebuah final instance variable pada pendeklarasiannya atau pada setiap constructor dari class menghasilkan error yang menandakan bahwa variabel mungkin belum diinisialisasi. Error yang sama terjadi jika class menginisialisasi variabel pada beberapa dari class constructors.
Package Kegunaan dari package adalah: Membantu programmer untuk mengorganisasi kompleksitas komponen apliakasi Memfasilitasi software reuse dengan mengimport class dari paket lain Menyediakan sebuah nama class yang unik untuk menghindari nama class yang sama.
Sebelum sebuah class di import ke beberapa aplikasi, class tersebut harus di letakkan pada sebuah package agar bisa digunakan kembali (reusable). Langkah-langkah : Deklarasikan sebuah public class. Jika class tidak public, class tersebut hanya bisa dipakai oleh class lain dalam satu package. Memilih sebuah nama package dan tambahkan sebuah deklarasi package. Pada setiap java source-code hanya ada satu package deklarasi saja. Compile class tersebut supaya bisa ditempatkan pada struktur direktori package. Import class tersebut
Ingat kembali ! Visibility Modifier Jika public atau private tidak digunakan, secara default classes, methods, dan data fields dapat diakses oleh semua class dalam suatu package yang sama disebut juga package-private atau package-access Package1 •public class C1{ public int x; int y; private int z; public void m1(){ } void m2(){ } private void m3(){ }
}
Package 2 • Public class C2{ Void aMethod() { C1 o = new C1() can access o.x; can access o.y; can’t access o.z; can invoke o.m1(); can invoke o.m2(); can’t invoke o.m3(); } }
•Public class C3{ Void aMethod() { C1 o = new C1() can access o.x; can’t access o.y; can’t access o.z; can invoke o.m1(); can’t invoke o.m2(); can’t invoke o.m3(); } }
Tugas Implementasikan static, final dan manajemen package pada class di latihan pertemuan sebelumnya.
[email protected] 081 331 834 734 / 088 160 127 40