Pemrograman Berorientasi Obyek OOP berputar pada konsep dari
Pemrograman Berorientasi Obyek • OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Obyek dalam dunia nyata dikarakterisasi oleh atribut dan tingkah lakunya. • Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. • Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method.
3 Konsep Dasar OOP 1) Inheritance • Inheritance (pewarisan) proses pewarisan data dan method dari suatu kelas kepada kelas lain. • Pewarisan bersifat menyeluruh • Semua data dan method milik kelas asalnya diturunkan ke kelas baru. • Kelas yang mewariskan Super Class atau Kelas Induk • Kelas yang diwariskan Sub Class atau Kelas Anak
• Misal : kelas B adalah kelas anak dari kelas A, maka sifat dari kelas A otomatis akan dimiliki juga oleh kelas B. • Jika kelas induk merupakan turunan dari kelas lain, maka data dan method yang berasal dari kelas tersebut akan ikut diwariskan pula kepada kelas anaknya. • Contoh : o Kelas C adalah kelas anak dari kelas B o Kelas B merupakan kelas anak dari kelas A. o Maka sifat yang diwariskan kelas A ke kelas B juga akan diwariskan ke kelas C. • Keyword untuk pewarisan : extends
Contoh
Keuntungan Inheritance (Pewarisan) • Bersifat reusable Tidak harus menyalin semua data dan method dari suatu kelas jika akan menggunakannya lagi • Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama Untuk memodifikasi suatu data atau method untuk semua subkelas / kelas anak, maka tidak perlu melakukan perubahan di masing kelas anak melainkan hanya pada kelas induk saja.
2) Encapsulation • Encapsulation adalah menyembunyikan attribute suatu objek dari objek lain. • Attribute maupun method disembunyikan dengan cara memberikan modifire private • method setter : method dalam kelas yang sama, yang memberikan nilai pada attribute private • method getter : method masih dalam kelas yang sama, yang mengambil nilai dari attribute private
public class Persegi. Panjang{ private double panjang; // attribute yg di hide private double lebar; // attribute yg di hide private double tinggi; // attribute yg di hide public Persegi. Panjang() { panjang = 0; lebar = 0; } private double luas(double p, double l) { // return p*l; } public void set. Panjang(double panjang) { this. panjang = panjang; } public void set. Lebar(double lebar) { this. lebar = lebar; } public double get. Panjang() { return panjang; } public double get. Lebar() { return lebar; } public double get. Luas() { return luas(panjang, lebar); } }
public class Main. Persegi. Panjang { public static void main(String[] srgs) { Persegi. Panjang pp = new Persegi. Panjang(); pp. set. Panjang(10); pp. set. Lebar(20); System. out. println("Panjang : "+ pp. get. Panjang()); System. out. println("Lebar : "+ pp. get. Lebar()); System. out. println("Luas : "+ pp. get. Luas()); } } OUTPUT
• Polimorfisme sesuatu yang memiliki banyak bentuk. • Dalam pemrograman, polimorfisme dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour (tingkah laku) yang berbeda sehingga listing code implementasinya juga berbeda Ada 2 cara Java dalam mengimplementasikan polimorfisme , yaitu: • Methode overloading • Methode overriding
Contoh Overloading
Contoh Overriding
Contoh 1 class Ekspresi. Wajah{ public String respons() { return("Perhatikan ekspresi wajah saya"); } } class Gembira extends Ekspresi. Wajah{ public String respons() { return("ha ha ha. . "); } } class Sedih extends Ekspresi. Wajah{ public String respons() { return("hik ngeee. . "); } } class Marah extends Ekspresi. Wajah{ public String respons() { return("Hai kurang ajar. . !"); } }
class Main. Ekspresi. Wajah{ public static void main(String args[]) { Ekspresi. Wajah obj. Ekspresi = new Ekspresi. Wajah(); Gembira obj. Gembira = new Gembira(); Sedih obj. Sedih = new Sedih(); Marah obj. Marah = new Marah(); Ekspresi. Wajah[] arr. Ekspresi = new Ekspresi. Wajah[4]; arr. Ekspresi[0] = obj. Ekspresi; arr. Ekspresi[1] = obj. Gembira; arr. Ekspresi[2] = obj. Sedih; arr. Ekspresi[3] = obj. Marah; System. out. println("Ekspresi[0]: "+arr. Ekspresi[0]. respons()); System. out. println("Ekspresi[1]: "+arr. Ekspresi[1]. respons()); System. out. println("Ekspresi[2]: "+arr. Ekspresi[2]. respons()); System. out. println("Ekspresi[3]: "+arr. Ekspresi[3]. respons()); } }
Output Contoh 1
Contoh 2 public class Employee { private String name; private double salary; protected Employee(String n, double s) { name = n; salary = s; } protected String get. Details() { return "Name : "+name+ "n. Salary : "+salary; } public void cetak() { System. out. println("Coba di Employee"); } }
public class Manager extends Employee { private String department; public Manager(String nama, double salary, String dep) { super(nama, salary); department = dep; } public String get. Department() { return department; } public String get. Details() { return super. get. Details()+"n. Department : "+get. Department(); } public void cetak() { System. out. println("Coba di Manager"); } }
public class View { public static void main(String[] args) { Employee e = new Employee("Ali", 1200000); Employee em = new Manager("Ali", 1200000, "Informatika"); System. out. println("Data employee : n"+e. get. Details()); System. out. println("Data manager : n"+em. get. Details()); em. cetak(); } } Output :
- Slides: 19