Kelas & Objek
Tujuan Di akhir pertemuan, mahasiswa diharapkan : Memahami konsep kelas & objek Mampu mengidentifikasi perbedaan antara kelas & objek Mampu membuat kelas & objek di Java Mampu membuat dan menjalankan method di Java
kelas & objek
Kelas (Class) Adalah cetak biru (blueprint) atau prototipe yang mendefinisikan variabel-variabel (data) dan method-method (perilaku) umum dari sebuah objek. Membuat kelas baru == membuat tipe data baru Variabel yang tipe datanya berupa kelas variabel reference Membuat kelas != membuat objek Membuat objek == membuat instance dr kelas
Contoh Kelas Mobil Kelas Manusia Mobil warna merk tipe kapasitas tangki start stop dipercepat Manusia nama tinggi badan berat badan usia data/atribut bersuara berjalan belajar perilaku/ method
Membuat Kelas class NamaKelas { tipe data1; tipe data2; … tipe dataN; tipe method1(daftar-parameter) { //kode untuk method1 } tipe method2(daftar-parameter) { //kode untuk method2 tipe methodN(daftar-parameter) { //kode untuk methodN instance variable class members
Contoh Kotak panjang lebar tinggi k //Deklarasi Kelas class Kotak { double panjang; double lebar; double tinggi; } //Membuat objek //deklarasi Kotak k; //alokasi k = new Kotak();
Contoh Penggunaan (1) class DemoKotak1 { public static void main(String[] args) { double volume; Kotak k = new Kotak(); // Mengisikan nilai ke dalam data-data kelas Kotak k.panjang = 4; k.lebar = 3; k.tinggi = 2; // Menghitung isi/volume kotak volume = k.panjang * k.tinggi * k.lebar; // Menampilkan nilai volume ke layar monitor System.out.println("Volume kotak = " + volume); }
Contoh Penggunaan (2) class DemoKotak2 { public static void main(String[] args) { double volume1, volume2; Kotak k1 = new Kotak(); // mendeklarasikan objek k1 Kotak k2 = new Kotak(); // mendeklarasikan objek k2 // Mengisikan nilai ke dalam objek k1 k1.panjang = 4; k1.lebar = 3; k1.tinggi = 2; // Mengisikan nilai ke dalam objek k2 k2.panjang = 6; k2.lebar = 5; k2.tinggi = 4; // Menghitung isi/volume dari objek k1 volume1 = k1.panjang * k1.tinggi * k1.lebar; // Menghitung isi/volume dari objek k2 volume2 = k2.panjang * k2.tinggi * k2.lebar; // Menampilkan nilai volume k1 dan k2 ke layar monitor System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); }
Membuat Objek Ada 2 tahap : Contoh : //mendeklarasikan variabel Mengalokasikan memori & memasangkannya dg variabel yang telah dideklarasikan dg operator new Contoh : //mendeklarasikan variabel Kotak k; // melakukan alokasi dan memasangkan k = new Kotak ();
Contoh Penggunaan (3) class DemoReferensi1 { public static void main(String[] args) { double volume1, volume2; Kotak k1, k2; k1 = new Kotak(); k2 = k1; // Mengisikan nilai ke dalam objek k1 k1.panjang = 4; k1.lebar = 3; k1.tinggi = 2; // Menghitung isi/volume dari objek k1 volume1 = k1.panjang * k1.tinggi * k1.lebar; // Menghitung isi/volume dari objek k2 volume2 = k2.panjang * k2.tinggi * k2.lebar; // Menampilkan nilai volume k1 dan k2 ke layar monitor System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); }
Contoh Penggunaan (4) class DemoReferensi2 { public static void main(String[] args) { double volume1, volume2; Kotak k1, k2; k1 = new Kotak(); k2 = k1; k1.panjang = 4; k1.lebar = 3; k1.tinggi = 2; // Sebelum nilai k1 diubah volume1 = k1.panjang * k1.tinggi * k1.lebar; volume2 = k2.panjang * k2.tinggi * k2.lebar; System.out.println("Sebelum k1 diubah:"); System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); k1.panjang = 6; k1.lebar = 5; k1.tinggi = 4; // Setelah nilai k1 diubah System.out.println("\nSetelah k1 diubah:"); }
Latihan A. Buatlah kelas-kelas berikut : 1. 3. 2. 4. Mobil warna tahun merek MataKuliah nama bobotSKS semester Manusia nama usia tinggi badan KartuATM noKartu namaPemilik noRekening
Latihan (cont.) B. Buatlah program berikut : 1. Buatlah objek dari kelas Mobil bernama m1. Isilah warnanya dengan hitam, merek Avanza, dan tahun 2011. Tuliskan ke layar “Mobil Avanza warna hitam keluaran tahun 2011”. 2. Buatlah objek dari kelas Manusia bernama aku. Isilah namanya dg nama anda, usia dg usia anda, dan tinggi dg tinggi badan anda. Tuliskan ke layar : Nama : [nama] Usia : [usia] th Tinggi badan : [tinggi badan] cm
3. Buatlah objek dari kelas Matakuliah 3. Buatlah objek dari kelas Matakuliah. Isikan nama =“Kalkulus”, semester 2, bobotSKS 2. Tuliskan ke layar “Kalkulus diberikan pada semester 2 dengan bobot 2 SKS.” Kemudian ubahlah semesternya menjadi 3, tuliskan ke layar “Kalkulus dipindah ke semester 3” 4. Buatlah objek bertipe KartuATM. Isilah variabel2nya (isinya bebas). Tampilkan ke layar: Data nasabah pemegang kartu dengan nomor [noKartu] : Nama : [namaPemilik] No. rekening [noRek]
Method
Pengantar Method merupakan salah satu anggota kelas. Method dapat di-OVERLOAD Rumus method : tipe : tipe data yang akan dikembalikan method; terbagi menjadi void dan bukan-void tipe void : jika method tidak mengembalikan nilai tipe bukan-void : ditandai dengan ada keyword return pada kode method; bisa : tipe data primitif, array, atau kelas Contoh : return nilai; tipe namaMethod(daftar-parameter) { //kode method }
Mendefinisikan Method Menambahkan method cetakVolume() pada kelas Kotak. Method tidak mengembalikan nilai tipe kembalian : void void cetakVolume(){ System.out.println(“Volume kotak = ” + (panjang*lebar*tinggi)); }
Membuat method hitungVolume(), method akan mengembalikan volume kotak yang tipenya double. double hitungVolume(){ double volume; volume = panjang * lebar * tinggi; return volume; }
Method dengan Parameter Parameter adalah nilai yang dikirimkan dari pemanggil ke method yang dipanggil. Nilai-nilai ini akan digunakan di dalam method. Contoh : menambahkan method isiData ke kelas Kotak yang digunakan untuk mengisi nilai panjang, lebar, dan tinggi. parameter void isiData(double p, double l, double t){ panjang = p; lebar = l; tinggi = t; }
Constructor Constructor : method khusus yang didefinisikan di dalam kelas dan akan dipanggil secara otomatis setiap membuat objek. Constructor digunakan untuk inisialisasi variabel-variabel objek. Apabila tidak mendefinisikan constructor, maka Java akan otomatis membuatnya DEFAULT CONSTRUCTOR DEFAULT CONSTRUCTOR menginisialisasi seluruh variabel dengan nilai NOL/NULL.
Tetapi, ketika kita membuat constructor baru untuk sebuah kelas, maka Java TIDAK akan membuat default constructor. Constructor dapat MEMILIKI/TIDAK MEMILIKI parameter. Constructor dapat di-OVERLOAD
Format penulisan constructor : Constructor TIDAK memiliki tipe kembalian. namaKelas (daftar-parameter) { //kode constructor }
Contoh Constructor Kotak () { panjang = 7; lebar = 6; tinggi = 5; } Kotak (int p, int l, int t) { panjang = p; lebar = l; tinggi = t; }
Kata kunci : this this digunakan sebagai referensi ke objek yang sedang aktif Contoh : penggunaan this pada constructor (ketika nama parameter sama dengan nama atribut kelas) Kotak (int panjang, int lebar, int tinggi) { this.panjang = p; this.lebar = l; this.tinggi = t; }
Overload Overload dapat diterapkan thd constructor dan method Overload mendefinisikan constructor/method dengan nama yang sama namun berbeda parameter dalam satu kelas. Parameter disebut berbeda, jika : Jumlahnya berbeda, meskipun tipenya sama Tipe datanya berbeda, meski jumlahnya sama Jumlah dan tipenya berbeda Urutannya berbeda
Overload Method int bagi (int a, int b) { return a/b; } double bagi (double a, double b){ overload method int bagi (int a, int b) { return a/b; } double bagi (int a, int b){ bukan overload method
Overload Constructor class Kotak { double panjang; double lebar; double tinggi; Kotak (){ panjang = 0; lebar = 0; tinggi = 0; { Kotak (double p, double l, double t){ panjang = p; lebar = l; tinggi = t; } overload constructor
Pengiriman Parameter (passing parameter) Terdapat 2 jenis passing parameter : pass by value pass by reference Pemilihan kedua jenis di atas otomatis dilakukan oleh Java bergantung pada tipe parameter method. Jika parameter merupakan tipe data primitif pass by value Jika parameter berupa objek pass by reference
Contoh Objek sbg Nilai Kembalian & Parameter //objek sbg tipe kembalian Kotak perbesar(int m){ Kotak tmp = new Kotak(m*panjang, m*lebar, m*tinggi); return tmp; } //objek sbg parameter boolean samaBentuk(Kotak k){ if (k.panjang==panjang && k.lebar==lebar && k.tinggi==tinggi) return true; else return false;
Contoh Pemanggilan public class DemoKotak { public static void main(String[] args) { Kotak k1 = new Kotak(10,5,17);; Kotak k2; k1.cetakVolume(); k2 = k1.perbesar(2); k2.cetakVolume(); }
public class DemoKotak { public static void main(String[] args) { Kotak k1 = new Kotak(10,5,17); Kotak k2 = new Kotak(10,5,17);; boolean sama; sama = k1.samaBentuk(k2); if (sama==true) System.out.println("k1 & k2 sama bentuknya."); else System.out.println("k1 & k2 tidak sama bentuknya."); }
Latihan Buatlah kelas berikut : 1. Penjelasan method : Bola adalah constructor yang akan menginisialisasi ketiga variabel Bola dg nilai tertentu hitungVolume adalah method yang akan mengembalikan hasil perhitungan volume bola dengan radius tertentu. Rumus volume bola = cetakVolume adalah method yang akan menuliskan ke layar “Bola dengan radius … volume adalah …” Bola warna radius merek hitungVolume cetakVolume
2. Penjelasan method : PesanKamar PesanKamar adalah constructor yang akan menginisialisasi seluruh atribut dg nilai tertentu totalBayar akan mengembalikan berapa yang harus dibayar oleh pemesan. Rumusnya = lamaInap*jumlahKamar*harga cetakBill akan menuliskan ke layar “Tagihan untuk Tn./Ny. … sebesar Rp …” PesanKamar jumlahKamar lamaInap harga namaPemesan totalBayar cetakBill
3. Penjelasan method : Waktu jam menit detik cetakWaktu setJam Waktu adalah constructor yang akan menginisialisasi seluruh atribut dg nilai tertentu cetakWaktu akan menuliskan ke layar “Waktu saat ini jam:menit:detik” setJam akan mengisi nilai jam. Method memiliki parameter 1 integer yaitu nilai jam yang ingin dimasukkan. Nilai yang diperbolehkan adalah 0<= jam <= 23 setMenit akan mengisi nilai menit. Method memiliki parameter 1 integer yaitu nilai menit yang ingin dimasukkan. Nilai yang diperbolehkan adalah 0<= jam <= 59 setDetik akan mengisi nilai jam. Method memiliki parameter 1 integer yaitu nilai detik yang ingin dimasukkan. Nilai yang diperbolehkan adalah 0<= jam <= 59 Waktu jam menit detik cetakWaktu setJam setMenit setDetik
Tingkat Akses data & method
Modifier Data & Method Modifier pada data & method menentukan sejauh mana data & method dapat diakses oleh objek lain. Keyword yang digunakan : private hanya bisa diakses di dalam kelasnya public bisa diakses di kelas manapun protected hanya bisa diakses di kelasnya & turunannya Keyword diletakkan sebelum deklarasi data / method Jika tidak mencantumkan ketiganya maka tingkat aksesnya adalah DEFAULT.
Keyword private Kelas Kotak public class Kotak{ private int panjang; private int lebar; private int tinggi; } Kotak - panjang - lebar - tinggi
Efek Adanya private public class DemoKotak { Salah, krn variabel panjang bersifat private, sehingga tidak boleh diakses langsung. Solusinya : sediakan method untuk mengakses variabel public class DemoKotak { public static void main(String[] args) { Kotak k1 = new Kotak(10,5,17); k1.panjang = 12; }
Inner Class Inner class merupakan kelas yang dibuat/dideklarasikan di dalam sebuah kelas. Inner class hanya dapat diakses di dalam kelas luarnya.
Contoh
Package (Paket) Package/paket memungkinkan kita untuk mengelompokkan kelas-kelas. Caranya : tuliskan : package [nama_package] di baris pertama kelas Nama package bersifat bebas. Data & method dg tipe akses default hanya dapat diakses/dikenali di package yang sama.