As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Class dan Object As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com
Karena setiap object Button dibuat dari Class yang sama Mengapa semua object Button memiliki bentuk, warna, ukuran, serta karakteristrik yg sama ? Karena setiap object Button dibuat dari Class yang sama
Setiap object dapat diubah karakteristiknya tanpa mempengaruhi object yang lain. Setiap object memiliki Properties dan Events (Functions) yang sama, yang juga didapatkan dari class
Properties dapat dianggap sebagai karakteristik, sifat, atau ciri yang dimiliki oleh sebuah object. Events atau functions dapat dianggap sebagai tingkah laku atau apa yang object tersebut dapat lakukan.
Object Lingkaran1 Class Lingkaran Object Lingkaran2 Object Lingkaran3 Object Lingkaran4 Setiap object mengikuti karakteristik maupun perilaku dari class asalnya
Object Lingkaran1 Class Lingkaran Object Lingkaran2 Object Lingkaran3 Object Lingkaran4 Namun setiap object dapat diubah karakteristik agar berbeda dari satu object dengan object yg lain
Apa tujuan membuat class ??? Memudahkan pemrograman karena untuk membuat object tidak perlu membuat berulang-ulang bagian program yg sama Hanya diperlukan sebuah class untuk membuat sebanyak-banyaknya object yg diperlukan
Wajibkah merancang dahulu class sebelum membuat aplikasi ??? Tidak wajib karena class digunakan untuk membuat aplikasi yg besar dan terstruktur Agar mempermudah pengembangan aplikasi tersebut di masa depan
Contoh Merancang Class
Merancang Class Gelas Gelas memiliki karakteristik/perilaku sebagai berikut: Memiliki tinggi Memiliki diameter Memiliki daya tampung maksimum Gelas dapat kosong atau terisi Memiliki warna Memiliki pegangan/tidak Dapat diisi minuman Dapat diminum isinya Dapat dipecahkan
Class Gelas tinggi diameter kosong warna pegangan diisi( ) diminum( ) Karakteristik / properties memiliki nilai tertentu kosong warna pegangan diisi( ) Perilaku / functions apa yang dapat dilakukan atau terjadi diminum( ) dipecahkan( ) isiMaksimum( )
Pada kenyataannya, hasil perancangan dari class dapat berbeda dengan definisi dari class yang akan jadi nantinya, semuanya bergantung dari analisa tiap programmer
Contoh Definisi dari Class Gelas (6.1) float tinggi; float diameter; boolean kosong; String warna; boolean pegangan; Gelas(){ //constructor dari class Gelas: //memberikan nilai karakteristik //awal kepada gelas yg //baru dibuat } void diisi(){ //perintah untuk mengisi gelas
void diminum(){ //perintah untuk mengosongkan gelas } void dipecahkan(){ //perintah untuk memecahkan double isiMaksimum(){ //berapa banyak yg dapat //ditampung oleh gelas return 0;
Membuat Object Object di Java dapat dibuat dengan menggunakan kata kunci new. NamaClass namaObject = new NamaClass(); atau NamaClass namaObject = new NamaClass([arg1],[arg2], … [argN]);
Penambahan argumen pada pembuatan class bergantung dari ada atau tidaknya parameter pada constructor class Object dapat dibuat sebanyak yang diperlukan Contoh membuat 2 buah object dari class Gelas: Gelas minum = new Gelas(); Gelas cangkir = new Gelas();
Object minum tinggi diameter kosong warna pegangan diisi( ) diminum( ) Setiap object memiliki properties dan functions masing-masing, dimana nilai setiap properties pada tiap object tidak dapat bercampur satu dengan yang lain Object minum tinggi diameter kosong warna pegangan diisi( ) diminum( ) dipecahkan( ) isiMaksimum( ) Object cangkir tinggi diameter kosong warna pegangan diisi( ) diminum( ) dipecahkan( ) isiMaksimum( )
Memberikan nilai properties pada object yang telah dibuat Nama property ditulis menggunakan tanda titik untuk memisahkan antara nama object dengan property atau function minum.tinggi = 12.4f; minum.diameter = 6.0f; minum.kosong = true; minum.warna = “Transparan”; minum.pegangan = false;
cangkir.tinggi = 7.5f; cangkir.diameter = 6.5f; cangkir.kosong = true; cangkir.warna = “Putih”; cangkir.pegangan = true;
Object minum tinggi=12.4f diameter=6.0f kosong=true warna=“Transparan” pegangan=false diisi( ) diminum( ) dipecahkan( ) isiMaksimum( ) Object cangkir tinggi=7.5f diameter=6.5f kosong=true warna=“Putih” pegangan=true diisi( ) diminum( ) dipecahkan( ) isiMaksimum( )
Membaca nilai property Contoh berikut akan mencetak property warna dari object cangkir: System.out.println(cangkir.warna); Contoh berikut menghitung maksimum air yg dapat ditampung oleh object minum final float phi = 3.14f; float jari = minum.diameter / 2; double isi = phi * (jari * jari) * minum.tinggi;
Menjalankan function pada object Contoh menjalankan function diminum() pada object minum minum.diminum(); Contoh menjalankan function isiMaksimum() pada object cangkir double isi; isi = cangkir.isiMaksimum();
Sekilas tentang constructor Constructor memiliki nama yang sama dengan nama class Constructor dijalankan (secara implisit oleh Java) sesaat setelah sebuah objek dibuat Constructor biasanya digunakan untuk memberikan nilai awal pada properties dari objek tersebut
Melengkapi definisi dari class Gelas (6.2) float tinggi; float diameter; boolean kosong; String warna; boolean pegangan; Gelas(){ //constructor dibiarkan kosong } void diisi(){ this.kosong = false; System.out.println("gelas penuh");
void diminum(){ this.kosong = true; System.out.println("gelas kosong"); } void dipecahkan(){ this.tinggi = 0f; this.diameter = 0f; System.out.println("gelas pecah"); double isiMaksimum(){ final float phi = 3.14f; float jari = this.diameter / 2; double isi = phi * (jari * jari) * this.tinggi; return isi;
Membuat aplikasi dari class Gelas Aplikasi dari contoh kasus class Gelas di atas dapat dibuat dengan beberapa cara, yaitu: Langsung menambahkan function main( ) pada class Gelas agar class tersebut dapat dijalankan sebagai sebuah aplikasi Membuat class/aplikasi lain (dalam file java yang sama) yang akan menggunakan class Gelas Membuat class/aplikasi lain (dalam file java yang terpisah) menggunakan sistem package (akan dibahas pada materi berikutnya)
Contoh menggunakan cara 1 (6.3) class Gelas{ float tinggi; float diameter; boolean kosong; String warna; boolean pegangan; Gelas(){ //constructor dibiarkan kosong } void diisi(){ this.kosong = false; System.out.println("gelas penuh");
void diminum(){ this.kosong = true; System.out.println("gelas kosong"); } void dipecahkan(){ this.tinggi = 0f; this.diameter = 0f; System.out.println("gelas pecah"); double isiMaksimum(){ final float phi = 3.14f; float jari = this.diameter / 2; double isi = phi*(jari*jari)*this.tinggi; return isi;
public static void main(String args[]){ Gelas minum = new Gelas(); Gelas cangkir = new Gelas(); minum.tinggi = 12.4f; minum.diameter = 6.0f; minum.kosong = true; minum.warna = "Transparan"; minum.pegangan = false; cangkir.tinggi = 7.5f; cangkir.diameter = 6.5f; cangkir.kosong = true; cangkir.warna = "Putih"; cangkir.pegangan = true;
System.out.println(cangkir.warna); final float phi = 3.14f; float jari = minum.diameter / 2; double isi = phi*(jari*jari)*minum.tinggi; System.out.println(isi); minum.diminum(); isi = cangkir.isiMaksimum(); }
Contoh menggunakan cara 2 (6.4) class Gelas{ float tinggi; float diameter; boolean kosong; String warna; boolean pegangan; Gelas(){ //constructor dibiarkan kosong } void diisi(){ this.kosong = false; System.out.println("gelas penuh");
void diminum(){ this.kosong = true; System.out.println("gelas kosong"); } void dipecahkan(){ this.tinggi = 0f; this.diameter = 0f; System.out.println("gelas pecah"); double isiMaksimum(){ final float phi = 3.14f; float jari = this.diameter / 2; double isi = phi*(jari*jari)*this.tinggi; return isi;
class Aplikasi{ public static void main(String args[]){ Gelas minum = new Gelas(); Gelas cangkir = new Gelas(); minum.tinggi = 12.4f; minum.diameter = 6.0f; minum.kosong = true; minum.warna = "Transparan"; minum.pegangan = false; cangkir.tinggi = 7.5f; cangkir.diameter = 6.5f; cangkir.kosong = true; cangkir.warna = "Putih"; cangkir.pegangan = true; System.out.println(cangkir.warna);
final float phi = 3.14f; float jari = minum.diameter / 2; double isi = phi * (jari * jari) * minum.tinggi; System.out.println(isi); minum.diminum(); isi = cangkir.isiMaksimum(); }
Sekilas tentang keyword this Keyword this digunakan untuk merujuk pada objek yang sedang digunakan Contoh pemanggil function isiMaksimum(): isi = cangkir.isiMaksimum(); Pada statement di atas, yang memanggil function isiMaksimum adalah objek cangkir.
Ini berarti bahwa kata this di dalam function isiMaksimum merujuk pada objek cangkir, bukan objek minum Sehingga ekspresi this.diameter dan this.tinggi akan merujuk pada property diameter dan tinggi yang dimiliki oleh objek cangkir Keyword this juga digunakan untuk membedakan antara property dengan parameter function yang memiliki nama yang sama
Pada contoh kode di bawah akan menampilkan nilai nol dikarenakan function setIsi() tidak bekerja sebagaimana mestinya Program 6.5 class Coba{ int isi; void setIsi(int isi){ isi = isi; } public static void main(String args[]){ Coba saja = new Coba(); saja.setIsi(7); System.out.println(saja.isi);
Hal ini disebabkan karena pada function setIsi() memiliki parameter dengan nama yang sama dengan nama property, yaitu “isi” Sehingga penulisan statement “isi = isi;” yang bermaksud untuk memberikan nilai kepada property “isi” tidak sukses karena yang terjadi adalah nilai parameter “isi” akan diberikan kepada parameter itu sendiri sehingga tidak mempengaruhi nilai property “isi”
Masalah tersebut dapat diselesaikan seperti contoh kode di bawah, yaitu dengan mengubah nama parameter sehingga tidak sama dengan nama property. Program 6.6 class Coba{ int isi; void setIsi(int isinya){ isi = isinya; } public static void main(String args[]){ Coba saja = new Coba(); saja.setIsi(7); System.out.println(saja.isi);
-- atau --
Atau menggunakan cara yang lebih lazim digunakan di Java, yaitu dengan memanfaatkan keyword this seperti contoh kode berikut: Program 6.7 class Coba{ int isi; void setIsi(int isi){ this.isi = isi; } public static void main(String args[]){ Coba saja = new Coba(); saja.setIsi(7); System.out.println(saja.isi);
Penggunaan keyword this pada contoh kode di atas memberikan penjelasan kepada compiler Java bahwa nama “isi” tersebut adalah nama property, bukan nama parameter Sehingga “this.isi” dan “isi” dianggap sebagai dua nama yang berbeda, yang satu dianggap sebagai property dan yang kedua dianggap sebagai parameter/variabel