420 likes | 666 Views
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 ).
E N D
Tujuan Di akhirpertemuan, mahasiswadiharapkan : • Memahamikonsepkelas & objek • Mampumengidentifikasiperbedaanantarakelas & objek • Mampumembuatkelas & objekdi Java • Mampumembuatdanmenjalankan method di Java
Kelas (Class) • Adalahcetakbiru (blueprint) atauprototipe yang mendefinisikanvariabel-variabel (data) danmethod-method (perilaku) umumdarisebuahobjek. • Membuatkelasbaru == membuattipe data baru • Variabel yang tipedatanyaberupakelas variabel reference • Membuatkelas != membuatobjek • Membuatobjek == membuat instance drkelas
Contoh • Kelas Mobil • KelasManusia Mobil Manusia warna merk tipe kapasitastangki nama tinggibadan beratbadan usia data/atribut start stop dipercepat bersuara berjalan belajar perilaku/ method
MembuatKelas classNamaKelas { tipe data1; tipe data2; … tipedataN; tipe method1(daftar-parameter) { //kodeuntuk method1 } • tipe method2(daftar-parameter) { • //kodeuntuk method2 • } • … • tipemethodN(daftar-parameter) { • //kodeuntukmethodN • } } instance variable class members
Contoh //DeklarasiKelas class Kotak { double panjang; double lebar; double tinggi; } //Membuatobjek //deklarasi Kotak k; //alokasi k = new Kotak(); Kotak panjang lebar tinggi k
ContohPenggunaan (1) class DemoKotak1 { public static void main(String[] args) { double volume; Kotak k = new Kotak(); // Mengisikannilaikedalam data-data kelasKotak k.panjang = 4; k.lebar = 3; k.tinggi = 2; // Menghitungisi/volume kotak volume = k.panjang * k.tinggi * k.lebar; // Menampilkannilai volume kelayar monitor System.out.println("Volume kotak = " + volume); } }
ContohPenggunaan (2) class DemoKotak2 { public static void main(String[] args) { double volume1, volume2; Kotak k1 = new Kotak(); // mendeklarasikanobjek k1 Kotak k2 = new Kotak(); // mendeklarasikanobjek k2 // Mengisikannilaikedalamobjek k1 k1.panjang = 4; k1.lebar = 3; k1.tinggi = 2; // Mengisikannilaikedalamobjek k2 k2.panjang = 6; k2.lebar = 5; k2.tinggi = 4; // Menghitungisi/volume dariobjek k1 volume1 = k1.panjang * k1.tinggi * k1.lebar; // Menghitungisi/volume dariobjek k2 volume2 = k2.panjang * k2.tinggi * k2.lebar; // Menampilkannilai volume k1 dan k2 kelayar monitor System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); } }
MembuatObjek • Ada 2 tahap : • Mendeklarasikanvariabel • Mengalokasikanmemori & memasangkannya dg variabel yang telahdideklarasikan dg operator new • Contoh : //mendeklarasikanvariabel Kotak k; // melakukanalokasidanmemasangkan k = new Kotak ();
ContohPenggunaan (3) class DemoReferensi1 { public static void main(String[] args) { double volume1, volume2; Kotak k1, k2; k1 = new Kotak(); k2 = k1; // Mengisikannilaikedalamobjek k1 k1.panjang = 4; k1.lebar = 3; k1.tinggi = 2; // Menghitungisi/volume dariobjek k1 volume1 = k1.panjang * k1.tinggi * k1.lebar; // Menghitungisi/volume dariobjek k2 volume2 = k2.panjang * k2.tinggi * k2.lebar; // Menampilkannilai volume k1 dan k2 kelayar monitor System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); } }
ContohPenggunaan (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; // Sebelumnilai 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 = new Kotak(); k1.panjang = 6; k1.lebar = 5; k1.tinggi = 4; // Setelahnilai k1 diubah volume1 = k1.panjang * k1.tinggi * k1.lebar; volume2 = k2.panjang * k2.tinggi * k2.lebar; System.out.println("\nSetelah k1 diubah:"); System.out.println("Volume k1 = " + volume1); System.out.println("Volume k2 = " + volume2); } }
Latihan A. Buatlahkelas-kelasberikut : 1. 3. 2. 4. Mobil Manusia MataKuliah KartuATM warna tahun merek nama usia tinggibadan nama bobotSKS semester noKartu namaPemilik noRekening
Latihan (cont.) B. Buatlah program berikut : 1. Buatlahobjekdarikelas Mobil bernamam1. Isilahwarnanyadenganhitam, merekAvanza, dantahun 2011. Tuliskankelayar “Mobil Avanzawarnahitamkeluarantahun 2011”. 2. BuatlahobjekdarikelasManusiabernamaaku. Isilahnamanya dg namaanda, usiadg usiaanda, dantinggidg tinggibadananda. Tuliskankelayar : Nama: [nama] Usia: [usia] th Tinggibadan : [tinggibadan] cm
3. BuatlahobjekdarikelasMatakuliah. Isikannama =“Kalkulus”, semester 2, bobotSKS 2. Tuliskankelayar “Kalkulusdiberikanpada semester 2 denganbobot 2 SKS.” Kemudianubahlahsemesternyamenjadi 3, tuliskankelayar “Kalkulusdipindahke semester 3” 4. BuatlahobjekbertipeKartuATM. Isilah variabel2nya (isinyabebas). Tampilkankelayar: Data nasabahpemegangkartudengannomor [noKartu]: Nama : [namaPemilik] No. rekening [noRek]
Pengantar • Method merupakansalahsatuanggotakelas. • Method dapatdi-OVERLOAD • Rumus method : • tipe : tipe data yang akandikembalikan method; terbagimenjadivoiddanbukan-void • tipe void : jika method tidakmengembalikannilai • tipebukan-void : ditandaidenganada keyword returnpadakode method; bisa : tipe data primitif, array, ataukelas Contoh : returnnilai; tipenamaMethod(daftar-parameter) { //kode method }
Mendefinisikan Method • Menambahkan method cetakVolume() padakelasKotak. • Method tidakmengembalikannilai tipekembalian : void voidcetakVolume(){ System.out.println(“Volume kotak = ” + (panjang*lebar*tinggi)); }
Membuat method hitungVolume(), method akanmengembalikan volume kotak yang tipenyadouble. double hitungVolume(){ double volume; volume = panjang * lebar * tinggi; return volume; }
Method dengan Parameter • Parameter adalahnilai yang dikirimkandaripemanggilke method yang dipanggil. Nilai-nilaiiniakandigunakandidalam method. • Contoh : menambahkan method isiDatakekelasKotak yang digunakanuntukmengisinilaipanjang, lebar, dantinggi. parameter voidisiData(double p, double l, double t){ panjang = p; lebar = l; tinggi = t; }
Constructor • Constructor : method khusus yang didefinisikandidalamkelasdanakandipanggilsecaraotomatissetiapmembuatobjek. • Constructor digunakanuntukinisialisasivariabel-variabelobjek. • Apabilatidakmendefinisikan constructor, maka Java akanotomatismembuatnya DEFAULT CONSTRUCTOR • DEFAULT CONSTRUCTOR menginisialisasiseluruhvariabeldengannilai NOL/NULL.
Tetapi, ketikakitamembuatconstructorbaruuntuksebuahkelas, maka Java TIDAK akanmembuat default constructor. • Constructor dapat MEMILIKI/TIDAK MEMILIKI parameter. • Constructor dapatdi-OVERLOAD
Format penulisan constructor : • Constructor TIDAK memilikitipekembalian. namaKelas (daftar-parameter) { //kodeconstructor }
Contoh Constructor Kotak () { panjang = 7; lebar = 6; tinggi = 5; } Kotak (int p, int l, int t) { panjang = p; lebar = l; tinggi = t; }
Katakunci : this • thisdigunakansebagaireferensikeobjek yang sedangaktif • Contoh : • penggunaanthispada constructor (ketikanama parameter samadengannamaatributkelas) Kotak (intpanjang, intlebar, inttinggi) { this.panjang = p; this.lebar = l; this.tinggi = t; }
Overload • Overload dapatditerapkanthd constructor dan method • Overload mendefinisikan constructor/method dengannama yang samanamunberbeda parameter dalamsatukelas. • Parameter disebutberbeda, jika : • Jumlahnyaberbeda, meskipuntipenyasama • Tipedatanyaberbeda, meskijumlahnyasama • Jumlahdantipenyaberbeda • Urutannyaberbeda
Overload Method intbagi (int a, int b) { return a/b; } doublebagi (double a, double b){ return a/b; } overload method intbagi (int a, int b) { return a/b; } doublebagi (int a, int b){ return a/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 • Pemilihankeduajenisdiatasotomatisdilakukanoleh Java bergantungpadatipe parameter method. • Jika parameter merupakantipe data primitif pass by value • Jika parameter berupaobjek pass by reference
ContohObjeksbgNilaiKembalian & Parameter //objeksbgtipekembalian Kotakperbesar(int m){ Kotaktmp = new Kotak(m*panjang, m*lebar, m*tinggi); return tmp; } //objeksbg parameter booleansamaBentuk(Kotak k){ if (k.panjang==panjang && k.lebar==lebar && k.tinggi==tinggi) return true; else return false; }
ContohPemanggilan 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);; booleansama; sama = k1.samaBentuk(k2); if (sama==true) System.out.println("k1 & k2 samabentuknya."); else System.out.println("k1 & k2 tidaksamabentuknya."); } }
Latihan Buatlahkelasberikut : 1. • Penjelasan method : • Bolaadalah constructor yang akanmenginisialisasiketigavariabel Bola dg nilaitertentu • hitungVolumeadalah method yang akanmengembalikanhasilperhitungan volume bola dengan radius tertentu. Rumus volume bola = • cetakVolumeadalah method yang akanmenuliskankelayar “Bola dengan radius … volume adalah …” Bola warna radius merek Bola hitungVolume cetakVolume
2. • Penjelasan method : • PesanKamaradalah constructor yang akanmenginisialisasiseluruhatribut dg nilaitertentu • totalBayarakanmengembalikanberapa yang harusdibayarolehpemesan. Rumusnya = lamaInap*jumlahKamar*harga • cetakBillakanmenuliskankelayar “Tagihanuntuk Tn./Ny. … sebesarRp …” PesanKamar jumlahKamar lamaInap harga namaPemesan PesanKamar totalBayar cetakBill
3. • Penjelasan method : • Waktuadalah constructor yang akanmenginisialisasiseluruhatribut dg nilaitertentu • cetakWaktuakanmenuliskankelayar “Waktusaatinijam:menit:detik” • setJamakanmengisinilai jam. Method memiliki parameter 1 integer yaitunilai jam yang ingindimasukkan. Nilai yang diperbolehkanadalah 0<= jam <= 23 • setMenitakanmengisinilaimenit. Method memiliki parameter 1 integer yaitunilaimenit yang ingindimasukkan. Nilai yang diperbolehkanadalah 0<= jam <= 59 • setDetikakanmengisinilai jam. Method memiliki parameter 1 integer yaitunilaidetik yang ingindimasukkan. Nilai yang diperbolehkanadalah 0<= jam <= 59 Waktu jam menit detik Waktu cetakWaktu setJam setMenit setDetik
Modifier Data & Method • Modifier pada data & method menentukansejauhmana data & method dapatdiaksesolehobjek lain. • Keyword yang digunakan : • private hanyabisadiaksesdidalamkelasnya • public bisadiaksesdikelasmanapun • protected hanyabisadiaksesdikelasnya & turunannya • Keyword diletakkansebelumdeklarasi data / method • Jikatidakmencantumkanketiganyamakatingkataksesnyaadalah DEFAULT.
Keyword private • KelasKotak public class Kotak{ private intpanjang; private intlebar; private inttinggi; } Kotak - panjang - lebar - tinggi
EfekAdanyaprivate public class DemoKotak { public static void main(String[] args) { Kotak k1 = new Kotak(10,5,17); k1.panjang = 12; } Salah, krnvariabelpanjangbersifatprivate, sehinggatidakbolehdiakseslangsung. Solusinya : sediakan method untukmengaksesvariabel
Inner Class • Inner class merupakankelas yang dibuat/dideklarasikandidalamsebuahkelas. • Inner class hanyadapatdiaksesdidalamkelasluarnya.
Package (Paket) • Package/paketmemungkinkankitauntukmengelompokkankelas-kelas. • Caranya : tuliskan : package [nama_package]dibarispertamakelas • Nama package bersifatbebas. • Data & method dg tipeaksesdefaulthanyadapatdiakses/dikenalidi package yang sama.