Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

INHERITANCE.

Presentasi serupa


Presentasi berjudul: "INHERITANCE."— 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 A B C D Superclass class yang letaknya di atas class tertentu di dalam hierarki. Subclass class yang letaknya di bawah class tertentu di dalam hierarki.

6 Hirarki Direct superclass A B C D Undirect superclass

7 Hirarki Direct subclass A B C D 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 TurunanOrang.java Program penurunan Orang Turunan

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 class Shape extends Point{ int x=4,y=5;
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?
Latihan Berapa nilai variabel area? 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); } getArea(4,5) Output : 4

34 Latihan 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)
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()); } Output : 3

42 Keyword “super” (pada constructor)
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()); } Output : 3

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

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

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

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

47 36 // ---------------------------------------------
37 // Definisi class Silinder // class Silinder extends Lingkaran { private double tinggi; public Silinder() setJariJari (1); setTinggi (1); } public Silinder(double r, double t) setJariJari (r); SetTinggi (r);

48 public void setTinggi (double t)
{ if (t>0) tinggi = r; } public double getTinggi() return (tinggi); public double hitungLuas() return (super.hitungLuas() * super.hitungKeliling() * tinggi); public double hitungVolume() return (Math.PI * jariJari *jarijari * tinggi);

49 // ---------------------------------------------
// Definisi class utama public class CobaSilinder { public static void main (String[] args) Silinder abc = new Silinder(); Silinder xyz = new Silinder(23.5, 73.1); System.out.println (“Data Silinder ABC :”); System.out.println (“ ”); System.out.println (“Jari-Jari ABC : ” + abc.getJariJari()); System.out.println (“Tinggi ABC : ” + abc.getTinggi()); System.out.println (“Luas ABC : ” + abc.hitungLuas()); System.out.println (“Luas ABC : ” + abc.hitungVolume()); System.out.println ();

50 System.out.println (“Data Silinder XYZ :”);
System.out.println (“Jari-Jari ABC : ” + xyz.getJariJari()); System.out.println (“Tinggi ABC : ” + xyz.getTinggi()); System.out.println (“Luas ABC : ” + xyz.hitungLuas()); System.out.println (“Luas ABC : ” + xyz.hitungVolume()); System.out.println (); }


Download ppt "INHERITANCE."

Presentasi serupa


Iklan oleh Google