Pertemuan 2 PBO Imam Solikin, M.Kom.
Kelas dan Obyek Kelas Blueprint untuk objek. (Memuat semua data dan metoda/fungsi yang bersifat umum). Obyek Dalam bahasa Java segala sesuatu adalah objek. Dapat juga diartikan sebagai obyek – obyek pada dunia nyata.
Sehingga obyek juga memuat data & metoda. Contoh: Tukul (Obyek) Dosen (KELAS) Instansiasi Adi, Jasson, Hendro, Jessica, Indrastanti (OBJEK). Sehingga obyek juga memuat data & metoda. Contoh: Tukul (Obyek) Data : Nama, alamat, dsb. Metoda : Kuliah, makan, pacaran, dsb.
Pembungkusan (Encapsulation) Penyembunyian Data dan Metoda/Fungsi Dalam Suatu Objek. Derajad Kenampakan Data dan Metoda/Fungsi : Private, Public, Protected.
Penentu Akses / Access Modifier Merupakan hak akses data dan variable. Public Dapat diakses dari luar kelas. Private Hanya bisa diakses kelas itu sendiri (tidak bisa dari luar kelas). Protected Dapat diakses kelas itu & turunannya.
Setter dan Getter Digunakan untuk mengakses variable yang berada di luar kelas yang biasanya tidak diperbolehkan.
Class Buku
Class TestBuku
Pewarisan Membuat suatu kelas dengan memanfaatkan kelas yang sudah ada. Mewarisi semua metoda dan variabelnya.
Kelas A disebut Super Kelas (Parent Class). Kelas B disebut Sub Kelas (Child Class).
Class Manusia
Class Andi
Class TestInheritance
Akses Modifier Protected untuk mengatur agar suatu variabel ataupun metode yang terdapat pada sebuah kelas dapat diakses pada kelas itu sendiri dan pada subkelas/ kelas turunan.
Kelas dasar : Manusia.java public class Manusia { private String nama; protected int umur = 0; public void infoUmur() { System.out.println("umur: " + this.umur); }
Kelas turunan : Andi.java public class Andi extends Manusia{ String hobi; } Pada kelas turunan (Andi) kita tidak dapat mengakses variabel yang memiliki akses modifier berjenis private yaitu nama yang terdapat pada kelas dasar (Manusia).
Kelas uji: TestInheritance Kelas uji: TestInheritance.java public class TestInheritance { public static void main(String[] args) { Andi andi = new Andi(); andi.infoUmur(); System.out.println("umur andi: " + andi.umur); System.out.println("nama andi: "+andi.nama); }
Agar dapat diakses hanya oleh kelas turunan saja, kita dapat mengganti akses modifier variabel nama yang semula private menjadi protected.
Metode Superkelas Adakalanya perlu untuk memanggil metode superkelas dari subkelas. Untuk keperluan ini, Java menyediakan keyword super yang berarti superkelas.
Kelas dasar : Manusia.java public class Manusia { protected String nama; protected int umur = 0; public void infoUmur() { System.out.println("umur: " + this.umur); }
Kelas turunan : Andi.java public class Andi extends Manusia { String hobi; public void infoUmur() { super.infoUmur(); // memanggil metode super kelas }
Terlihat bahwa kelas turunan (Andi) mendefinisikan metode infoUmur, sementara kelas dasarnya (Manusia) juga memiliki metode infoUmur(). Hal seperti ini diperbolehkan dan sering dikatakan sebagai ”method overridding” atau ”penimpaan metode”.
Kelas uji: TestInheritance.java public class TestInheritance { public static void main(String[] args) { Andi andi = new Andi(); andi.umur=15; andi.infoUmur(); System.out.println("umur andi: " + andi.umur); }
Konstruktor Superkelas Pada contoh-contoh sebelumnya superkelas tidak memiliki konstruktor. Bagaimana halnya jika superkelas memiliki konstruktor? Bagaimana caranya bila subkelas hendak memanggil konstruktor? Kita dapat menggunakan keyword super untuk keperluan tersebut dengan bentuk: super(argumen1,argumen2,...);
Kelas dasar : Manusia.java public class Manusia { private int umur; // konstruktor public Manusia() { this.umur = 0; } public void infoUmur() { System.out.println("umur: " + this.getUmur()); public int getUmur() { return umur; public void setUmur(int umur) { this.umur = umur;
Kelas dasar : Manusia.java public class Manusia { private int umur; // konstruktor public Manusia() { this.umur = 0; } public void infoUmur() { System.out.println("umur: " + this.getUmur()); public int getUmur() { return umur; public void setUmur(int umur) { this.umur = umur;
Kelas uji: TestInheritance.java public class TestInheritance { public static void main(String[] args) { Andi andi = new Andi(15,"berenang"); andi.infoUmur(); System.out.println("hobi andi: " + andi.hobi); }
Polimorfisme kemampuan untuk berhubungan dengan berbagai tipe berdasarkan pada fitur yang sama.
Class Makanan
Class MakananLokal extends Makanan
Class Soto extends MakananLokal
Class TestPolimorfisme
TAKE HOME
Buatlah sebuah kelas Buku2 yang mewarisi kelas buku kemudian buatlah Modifikasilah kelas Buku yang sudah dibuat tadi sehingga terdapat atribut judul, pengarang, jumlahBuku, hargaSatuan kemudian buatlah sebuah method untuk mencetak! Buatlah sebuah kelas Buku2 yang mewarisi kelas buku kemudian buatlah method hargaBuku yang digunakan untuk menghitung hargaBayar dengan ketentuan sbb hargaBayar = hargaSatuan*jumlahBuku
method hargaDiskon Bila hargaBayar >= 100000 maka mendapatkan diskon 10% Bila hargaBayar >= 200000 maka mendapatkan diskon 15%
Buatlah kelas TestBuku untuk mengakses kedua kelas tersebut, sehingga output yang akan diberikan adalah sebagai berikut:
KETENTUAN : Dikerjakan secara berkelompok, Terlambat, copy paste, nilai = 0 ! Yang di kumpul : Sourcode/file.java, printscreen output program seperti contoh, jelaskan sejelas mungkin. Dikirim ke e-mail imam_solikin@mail.binadarma.ac.id Nama Subject : PBOL_NIM1_NIM2 Nama File : PBOL_NIM1_NIM2.rar Kumpul paling lambat: jum’at, 09-10-2015