Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

INHERITANCE. Fitur OOP Encapsulation Inheritance Polymorphism.

Presentasi serupa


Presentasi berjudul: "INHERITANCE. Fitur OOP Encapsulation Inheritance Polymorphism."— Transcript presentasi:

1 INHERITANCE

2 Fitur OOP Encapsulation Inheritance Polymorphism

3 Inheritance Sebuah class dapat melakukan penurunan. Penurunan class berhubungan dengan member class (attribut dan method). Parent/induk : class yang memiliki member class Child/anak : class yang mewarisi member class dari parent. Parent Child

4 Pernyataan : Class B merupakan turunan dari class A – Maka class B memiliki semua member dari class A. Class C merupakan turunan dari class B – Maka class C memiliki semua member dari class B dan class A.

5 Hirarki Superclass class yang letaknya di atas class tertentu di dalam hierarki. Subclass class yang letaknya di bawah class tertentu di dalam hierarki. A B C D

6 Hirarki A B C D Direct superclass Undirect superclass

7 Hirarki A B C D Direct subclass Undirect subclass

8 Implementasi Menggunakan keyword extends. Ditulis ketika deklarasi class. Satu class hanya dapat memiliki satu parent (Single- inheritance). Syntax : Contoh : class Kucing extends Mamalia { } class namaclass extends namaclass_parent { }

9 Kapan kita menerapkan inheritance? Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang dapat diperluas dari class lain.

10 Misal terdapat class Pegawai public class Pegawai { public String nama; public double gaji; }

11 Misal terdapat class Manager public class Manajer { public String nama; public double gaji; public String departemen; }

12 Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada tambahan data member departemen. Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member departemen. Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita tuliskan seperti berikut

13 public class Manajer extends Pegawai { public String departemen; }

14 Turunan TurunanOrang.java Program penurunan Orang

15 Kesimpulan Subclass yang paling bawah memiliki member class lebih banyak, hasil turunan dari superclass-nya. Untuk melakukan inheritance antar class digunakan keyword extends. Subclass merupakan perluasan dari superclass-nya. Class tidak dapat memiliki lebih dari satu parent. Parent 1 Child Parent 2

16 Other Class Modifier Final

17 Final Class Jika sebuah class ber-modifier final berarti class tersebut tidak dapat diturunkan. final class Macan { } class Singa extends Macan { } Syntax error!! Cannot inherit from final Macan

18 Method Override Sebuah method yang dideklarasikan dalam superclass dapat dideklarasi ulang dalam subclass. Deklarasi ulang method superclass pada subclass inilah yang disebut dengan method override. Override merupakan salah satu bentuk polymorfisme dalam konsep OOP. Syarat override : deklarasi method harus sama persis. Namun content/body method dapat berbeda.

19 Contoh Implementasi public class Animal { public void SetVoice() { System.out.println(“Blesepblesep”); } public class Dog extends Animal { public void SetVoice() { System.out.println(“Hug hug”); }

20 Constructor pada inheritance Misalkan kita buat class parent bernama Person sbb : public class Person { protected String name; protected String address; public Person(){ System.out.println(“Inside Person:Constructor”); }

21 Constructor pada inheritance Sekarang, kita buat class lain bernama Student yang meng-extends class Person. public class Student extends Person { public Student(){ System.out.println(“Inside Student:Constructor”); }

22 Alur Eksekusi Constructor Ketika sebuah object Student diinstansiasi, default constructor dari superclass Student dipanggil secara implisit untuk melakukan inisialisasi seperlunya. Setelah itu, pernyataan di dalam constructor subclass baru dijalankan.

23 Penjelasan Untuk memperjelasnya, perhatikan kode dibawah ini, Dalam kode ini, kita membuat sebuah object dari class Student. Hasil dari program adalah: public static void main( String[] args ){ Student anna = new Student(); } Inside Person:Constructor Inside Student:Constructor

24 Diagram Alur Eksekusi Constructor

25 Keyword “this” dan “super” Selain menggunakan variabel reference, variabel dan method yang ada pada class dapat diakses dengan menggunakan keyword this atau super. “this” digunakan untuk me-refer member class yang ada pada class itu sendiri. “super” digunakan untuk me-refer member class pada superclass. “this” dan “super” tidak dapat digunakan pada method bertipe static.

26 Format “this” Format penulisannya adalah sebagai berikut : – this.attribut  merujuk pada variabel/attribut class itu sendiri – this.method()  merujuk pada method atau fungsi class itu sendiri – this()  merujuk pada constructor class itu sendiri

27 Format “super” Format penulisannya adalah sebagai berikut : – super.attribut  merujuk pada variabel/attribut dari superclass – super.method()  merujuk pada method atau fungsi dari superclass – super()  merujuk pada constructor dari superclass

28 “this” pada Attribut – Format : this.attribut. – Merujuk pada variabel/attribut yang dimiliki class itu sendiri.

29 Contoh “this” pada Attribut Berapa nilai variabel area?? Output : 6 class Point{ int x=2,y=3; void getArea() { int area = this.x*this.y; System.out.println(area); }

30 Contoh implementasi “this” Kadangkala, dalam sebuah class perlu dibedakan anggota (baik field maupun method) dari object- object tertentu. getArea(4,5) Output : 6 class Point{ int x=2,y=3; void getArea(int x,int y) { int area = this.x*this.y; System.out.println(area); } Akses instance variabel menggunakan this

31 “super” pada Attribut – Format : super.attribut. – Merujuk pada variabel/attribut dari superclass.

32 “super” pada Attribut Berapa nilai variabel area?? Output : 6 class Shape extends Point{ int x=4,y=5; int getArea() { int area = super.x*super.y; return area; }

33 Berapa nilai variabel area? getArea(4,5) Output : 4 class Point{ int x=2,y=3; void getArea(int x,int y) { int area = (x-this.x)*(y-this.y); System.out.println(area); } Latihan

34 class Parent { public int x = 5; } class Child extends Parent { public int x = 10; public void Info(int x) { System.out.println("Nilai x sebagai parameter = " + x); System.out.println("Data member x di class Child = " + this.x); System.out.println("Data member x di class Parent = " + super.x); } public class NilaiX { public static void main(String args[]) { Child tes = new Child(); tes.Info(20); }

35 Hasil Nilai x sebagai parameter = 20 Data member x di class Child = 10 Data member x di class Parent = 5

36 “this” pada Method Merujuk pada method atau fungsi yang dimiliki class itu sendiri. Format : this.method()

37 Contoh “this” pada Method Berapa nilai variabel area?? Output : 25 Class Point2{ int x=5; int getX() { return x; } int getArea() { int area = 5*this.getX(); return area; }

38 “super” pada Method Merujuk pada method atau fungsi dari superclass. Format : super.method()

39 Contoh “super” pada Method Berapa nilai variabel area?? Output : 10 class Shape extends Point2{ int x=2; int getArea() { int area = this.x*super.getX(); return area; }

40 “this” & “super” pada Constructor “this” dan “super” dapat digunakan untuk memanggil construcor. Syaratnya : 1) Pemanggilan this atau super harus dilakukan didalam constructor. 2) statement this atau super tersebut harus diletakkan pada baris pertama.

41 Keyword “this” (pada constructor) Output : 3 class Point{ int x=2,y=3; Point(){ this(1); } Point(int x){ this.x = x; } int getArea() { int area = this.x*this.y; return area; } public static void main(String[] args) { Point p = new Point(); System.out.print(" " + p.getArea()); }

42 Keyword “super” (pada constructor) Output : 3 class Shape extends Point{ int x=4,y=5; int getArea() { int area = super.x*super.y; return area; } Shape() { super(); int z; } public static void main(String[] args) { Shape s = new Shape(); System.out.print(" " + s.getArea()); }

43 t r Catatan: Lingkaran : memiliki jari-jari (r) Silinder : Selain memiliki jari-jari (r) lingkaran pada kedua ujungnya silinder juga memiliki tinggi silinder (t), Contoh r

44 Lingkaran double jariJari void setJariJari(double) double getJariJari() double hitungLuas() double hitungkeliling() Silinder double jariJari double tinggi void setJariJari(double) void setTinggi(double) double getJariJari() double getTinggi() double hitungLuas() double hitungVolume() Kemudian kita coba membandingkan class Lingkaran dengan class Silinder yang akan kita buat :

45 Secara Lengkap program dapat dilihat sbb: 1// // Definisi class Lingkaran 3// class Lingkaran 5{ 6private double jariJari; 7public Lingkaran() 8{ 9setJariJari(1); 10} 11public Lingkaran(double r) 12{ 13if (r > 0) 14jariJari = r; 15else 16jariJari = 1.0; 17}

46 18public void setJariJari (double r) 19{ 20if (r>0) 21jariJari=r; 22} 23public double getJariJari() 24{ 25return (jariJari); 26} 27public double hitungLuas() 28{ 29return (Math.PI * jariJari * jariJari); 30} 31public double hitungKeliling() 32{ 33return (Math.PI * 2.0 * jariJari); 34} 35}

47 36// // Definisi class Silinder 38// class Silinder extends Lingkaran 40{ 41private double tinggi; 42public Silinder() 43{ 44setJariJari (1); 45setTinggi (1); 46} 47public Silinder(double r, double t) 48{ 49setJariJari (r); 50SetTinggi (r); 51}

48 52public void setTinggi (double t) 53{ 54if (t>0) tinggi = r; 55} 56public double getTinggi() 57{ 58return (tinggi); 59} 60public double hitungLuas() 61{ 62 return (super.hitungLuas() * super.hitungKeliling() * tinggi); 63} 64public double hitungVolume() 65{ 66return (Math.PI * jariJari *jarijari * tinggi); 67} 68 }

49 69// // Definisi class utama 71// public class CobaSilinder 73{ 74public static void main (String[] args) 75{ 76Silinder abc = new Silinder(); 77Silinder xyz = new Silinder(23.5, 73.1); 78System.out.println (“Data Silinder ABC :”); 79System.out.println (“ ”); 80System.out.println (“Jari-Jari ABC : ” + abc.getJariJari()); 81System.out.println (“Tinggi ABC : ” + abc.getTinggi()); 82System.out.println (“Luas ABC : ” + abc.hitungLuas()); 83System.out.println (“Luas ABC : ” + abc.hitungVolume()); 84System.out.println ();

50 85System.out.println (“Data Silinder XYZ :”); 86System.out.println (“ ”); 87System.out.println (“Jari-Jari ABC : ” + xyz.getJariJari()); 88System.out.println (“Tinggi ABC : ” + xyz.getTinggi()); 89System.out.println (“Luas ABC : ” + xyz.hitungLuas()); 90System.out.println (“Luas ABC : ” + xyz.hitungVolume()); 91System.out.println (); 92} 93}


Download ppt "INHERITANCE. Fitur OOP Encapsulation Inheritance Polymorphism."

Presentasi serupa


Iklan oleh Google