BAB 6 INHERITANCE Tujuan:

dokumen-dokumen yang mirip
Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Inheritance. Topik 5/17/2013

Pemrograman Berbasis Objek Inheritance

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

subclass class manapun private default protected public package yang sama

Inheritance (Pewarisan) Pengertian dasar inheritance

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

public class B extends A {... }

(INHERITANCE) Nurochman

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Modul Bahasa Pemrograman 1

JOBSHEET 8 INHERITANCE (PEWARISAN)

BAB 7 OVERLOADING DAN OVERRIDING

Inheritance dan Kata Kunci static

Dasar-Dasar OOP di Java

KONSEP OOP: PEWARISAN / INHERITANCE

Dasar-Dasar OOP di Java

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

KONSEP OOP: PEWARISAN / INHERITANCE

PEWARISAN D E W I S A R T I K A, M. K O M

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Polymorphism. Oleh : Agus Priyanto, M.Kom

A. TUJUAN PEMBELAJARAN 1. Memahami konsep package dan import 2. Menggunakan kata kunci this

7 Inheritance. + berjalan() + berhenti PENDAHULUAN

8 - Overriding dan Overloading

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

PEMROGRAMAN BERORIENTASI OBJEK

Jobsheet 09. Overloading and Overriding Method

Bahasa Pemrograman :: Polimorfism and Abstraction

BAB 3 CLASS DAN OBJECT. Tujuan:

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Employee employee=new Manager();

INTERAKSI ANTAR OBJECT

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Bab 8. Dasar-Dasar OOP

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

IKG2I4 / Software Project I

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Pemrograman Berorientasi Objek Danu Wira Pangestu

KONSEP OOP: PEWARISAN / INHERITANCE

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Praktikum Inheritace PERCOBAAN 1 Tujuan: Prosedur Percobaan:

BAB II VARIABEL DAN TIPE DATA

Pemrograman Berorientasi. Polimorfisme dan Binding

Pemrograman Berorientasi. Inheritance

LAPORAN RESMI INHERITANCE

Dengan menggunakan encapsulation kita dapat membatasi akses langsung suatu class atau program kecuali melalui suatu method yang sudah diberikan.

Class & Object 2. Imam Fahrur Rozi

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

Bahasa Pemrograman 2.

[Lanjutan] Nurochman

PRAKTIKUM III & IV PEMROGRAMAN BERORIENTASI OBJEK

Pewarisan Sifat Objek. Nur Hasanah, M.Cs

Ismail Wibi Wicaksono

PEMOGRAMAN JAVA. Yoannita, S.Kom. Class(ii) [Constructor] [keyword this] Modifier Passing parameter [by value] [by references]

Pewarisan atau Inheritance

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

adalah cara pandang yang memandang SEGALA SESUATU sebagai OBJEK. Semua aspek dalam Java programming dapat dianggap sebagai objek, -kecuali

Membuat dan Menggunakan Class

BAB 5 INTERAKSI OBJEK. Tujuan:

Bahasa Pemrograman 2.

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Modul 4: Lebih Dalam lagi tentang Class, Objek dan Method

Pengenalan pemrograman berorientasi obyek

PAKET DAN INTERFACE MUH. IZZUDDIN MAHALI, M.CS. PT. Elektronika FT UNY

2 TIPE DATA DAN VARIABEL

Paket dan Interface. Nur Hasanah, M.Cs

A. TUJUAN PEMBELAJARAN. 1. Menerapkan konsep enkapsulasi pada class 2. Mendeklarasikan suatu constructor

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

Pertemuan 4 Halaman 1/1. Class Inheritance

Praktikum 3 Konsep Class, Attribute dan Method

Keyword this untuk memanggil private String pengarang; private String judul;

3 Class dan Object (2)

Pemrograman Berorientasi Objek INHERITANCE

BAB IV KONSEP PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Lanjut Review Class dan Object PTIIK

Pemrograman Berorientasi. Class dan Obyek 2

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

PRAKTIKUM I Class dan Obyek

Pemrograman Berorientasi Objek (PBO) By : Jeffry Montolalu, ST PERTEMUAN XII KELAS DAN OBYEK

Composition dan Inheritance

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

UML : Class Diagram 23/11/ Area Pokok Class. Kaidah Penulisan Nama Class. Class Diagram (1) Contoh Class. Class Diagram (2) SHINTA P.

Praktikum 6 Class Design (Encapsulation)

BAB 12 ENKAPSULASI, INHERITANCE DAN POLIMORPISME

OOP Java. 05 Encapsulation & Inheritance

Pemrograman Berorientasi Objek

Konsep Dasar Pemrograman Berorientasi Objek

Pemrograman Berorientasi. Abstract & Interface

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

IKG2I4 / Software Project I

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Transkripsi:

BAB 6 INHERITANCE Tujuan: Setelah mengikuti matakuliah ini mahasiswa harusnya mampu untuk 1. Menjelaskan konsep inheritance 2. Mengimplementasikan inheritance dalam Java 3. Memahami cara pengaksesan member dari superklas dan subklas 4. Memahami penggunaan kata kunci super

6.1. Konsep Inheritance Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan. Suatu class yang mempunyai class turunan dinamakan parent class atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa- apa yang dipunyai oleh parent class- nya, sehingga member dari suatu subclass adalah terdiri dari apa- apa yang ia punyai dan juga apa- apa yang ia warisi dari class parent- nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class- nya. Di dalam Java untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class- nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class. Berikut adalah contoh deklarasi inheritance: public class B extends A {... Contoh diatas memberitahukan kompiler Java bahwa kita ingin meng- extend class A ke class B. Dengan kata lain, class B adalah subclass (class turunan) dari class A, sedangkan class A adalah parent class dari class B. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.

Dalam konsep dasar inheritance dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class- nya. Contoh : public class Pegawai { public String nama; public double gaji; public class Manajer extends Pegawai { public String departemen; Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai, maka ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian, class Manajer mempunyai data member yang diwarisi oleh Pegawai (nama, gaji), ditambah dengan data member yang ia punyai (departemen). Pengaksesan member yang ada di parent class dari subclass- nya tidak jauh berbeda dengan pengaksesan member subclass itu sendiri. Contoh: Suatu parent class dapat tidak mewariskan sebagian member- nya kepada subclass- nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di dalam java, control pengaksesan dapat digambarkan dalam tabel berikut ini: Modifier private class yang package yang subclass default protected class manapu public Kata kunci super dipakai untuk merujuk pada member dari parent class, sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Adapun format penulisannya adalah sebagai berikut:

super.data_member merujuk pada data member pada parent class super.function_member() merujuk pada function member pada parent class. Sedangkan super()merujuk pada konstruktor pada parent class. Catatan: penggunaan super() hanya bisa digunakan pada baris pertama di dalam konstruktor subklas. Tidak bisa selain itu. Contoh: public class Siswa { private int nrp; public setnrp(int nrp) { this.nrp=nrp; 6.2. Menggunakan kata kunci super Seperti dijelaskan di atas, kata kunci super bisa digunakan untuk mengakses atribut dan method yang dimiliki oleh superklas. Pengakssan dilakukan dari subklas. Berikut ini listing penggunaan kata kunci super. 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); Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini : Nilai x sebagai parameter = 20 Data member x di class Child = 10 Data member x di class Parent = 5

6.3. Kontrol pengaksesan Buatlah class Pegawai seperti dibawah ini: public class Pegawai { private String nama; public double gaji; Kemudian buatlah class Manajer seperti ini dibawah ini. public class Manajer extends Pegawai { public String departemen; public void IsiData(String n, String d) { nama=n; departemen=d; Sekarang cobalah untuk mengkompilasi class Manajer diatas. Apa yang terjadi?. Pesan kesalahan akan muncul seperti ini: Manajer.java:5: nama has private access in Pegawai nama=n; Ini membuktikan bahwa class Manajer tidak mewarisi data member nama dari parent class- nya (Pegawai). 6.4. Konstruktor tidak diwariskan Buatlah class kosong bernama Parent seperti dibawah: public class Parent { Buatlah class Child yang menurunkan class Parent seperti dibawah ini:

public class Child extends Parent { int x; public Child() { x = 5; super(); Lakukan kompilasi pada Child diatas. Apa yang terjadi?. Pasti disana terjadi error. Sekarang ubahlah sedikit class Child diatas seperti dibawah ini: public class Child extends Parent { int x; public Child() { super(); x = 5; Setelah dikompilasi, anda tidak mendapatkan error sebagaimana yang sebelumnya. Ini yang harus kita perhatikan bahwa untuk pemanggilan konstruktor parent class, kita harus melakukan pemanggilan tersebut di baris pertama pada konstruktor subclass. Dalam Java hanya mengenal Single dan Multilevel inheritance. Tidak mengenal Multiple inheritance. Maksudnya di Java suatu subklas hanya bisa memiliki satu superklas (single) dan suatu subklas bisa menjadi superklas dari subklas yang lain. Di bawah ini digambarkan diagram UML untuk relasi single Inheritance Bangundatar +alas: int +tinggi: int Segitiga -sisimiring: float Bujursangkar -diagonal: float Untuk langkah2 implementasinya: 1. Buka project MyOop, dan buat paket baru yaitu paket latihan4 2. Dalam paket latihan4 buat klas Bangundatar, Segitiga dan Bujursangkar serta Main.

3. Lengkapi klas Bangundatar sebagai berikut: public class BangunDatar { public int alas; public int tinggi; public BangunDatar() { public BangunDatar(int alas, int tinggi) { this.alas = alas; this.tinggi = tinggi; 4. Lengkapi klas Segitiga sebagai berikut public class Segitiga extends BangunDatar{ private float sisimiring; public Segitiga(float sisimiring) { this.sisimiring = sisimiring; public Segitiga(int alas, int tinggi, float sisimiring) { super( alas, tinggi); this.sisimiring = sisimiring; public float getsisimiring() { return sisimiring; public void setsisimiring(float sisimiring) { this.sisimiring = sisimiring; 5. Lengkapi klas Bujursangkar sebagai berikut public class Bujursangkar extends BangunDatar{ private float diagonal; public Bujursangkar(float diagonal) { this.diagonal = diagonal; public Bujursangkar(int alas, int tinggi, float diagonal) { super(alas, tinggi); this.diagonal = diagonal;

6. Lengkapi klas Main public Bujursangkar() { public float getdiagonal() { return diagonal; public void setdiagonal(float diagonal) { this.diagonal = diagonal; public class Main { public static void main(string[] argv){ Bujursangkar b = new Bujursangkar(); b.alas = 3; b.tinggi = b.alas; b.setdiagonal((float) Math.sqrt(Math.pow(b.alas, 2)+Math.pow(b.tinggi, 2))); System.out.println("Alas Bujursangkar = "+b.alas); System.out.println("Tinggi Bujursangkar = "+b.tinggi); System.out.println("Diagonal Bujursangkar = "+b.getdiagonal()); System.out.println("************************************* *******"); Bujursangkar b1 = new Bujursangkar(5,5,(float) Math.sqrt(Math.pow(5, 2)+Math.pow(5, 2))); System.out.println("Alas Bujursangkar = "+b1.alas); System.out.println("Tinggi Bujursangkar = "+b1.tinggi); System.out.println("Diagonal Bujursangkar = "+b1.getdiagonal()); 7. Jalankan klas Main dan hasilnya akan seperti di bawah ini run: Alas Bujursangkar = 3 Tinggi Bujursangkar = 3 Diagonal Bujursangkar = 4.2426405 ******************************************** Alas Bujursangkar = 5 Tinggi Bujursangkar = 5 Diagonal Bujursangkar = 7.071068 BUILD SUCCESSFUL (total time: 0 seconds) Di baawah ini diberikan contoh untuk multilevel inheritance. Terlihat bahwa klas Bujursangkar yang merupakan subklas dari klas Bangundatar, menjadi superklas juga untuk Kubus.

Bangundatar +alas: int +tinggi: int Segitiga -sisimiring: float Bujursangkar -diagonal: float Kubus -jumlahsisi: float -volume: float Langkah simulasinya adalah sebagai berikut: 1. Pada paket latihan4 yang di dalamnya sudah terdapat klas BangunDatar, Segitiga, bujursangkar dan Main, tambahkan satu klas lagi yaitu klas Kubus. 2. Lengkapi klas Kubus sebagai berikut public class Kubus extends Bujursangkar{ private float jumlahsisi; private float volume; public Kubus(int alas, int tinggi, float diagonal, float jumlahsisi, float volume) { super(alas, tinggi, diagonal); this.jumlahsisi = jumlahsisi; this.volume = volume; public float getjumlahsisi() { return jumlahsisi; public void setjumlahsisi(float jumlahsisi) { this.jumlahsisi = jumlahsisi; public float getvolume() { return volume; public void setvolume(float volume) { this.volume = volume;

3. Ubah klas Main menjadi seperti di dawah ini public class Main { public static void main(string[] argv){ Bujursangkar b = new Bujursangkar(); b.alas = 3; b.tinggi = b.alas; b.setdiagonal((float) Math.sqrt(Math.pow(b.alas, 2)+Math.pow(b.tinggi, 2))); System.out.println("Alas Bujursangkar = "+b.alas); System.out.println("Tinggi Bujursangkar = "+b.tinggi); System.out.println("Diagonal Bujursangkar = "+b.getdiagonal()); System.out.println("************************************* *******"); Bujursangkar b1 = new Bujursangkar(5,5,(float) Math.sqrt(Math.pow(5, 2)+Math.pow(5, 2))); System.out.println("Alas Bujursangkar = "+b1.alas); System.out.println("Tinggi Bujursangkar = "+b1.tinggi); System.out.println("Diagonal Bujursangkar = "+b1.getdiagonal()); System.out.println("************************************* *******"); Kubus k = new Kubus(5, 5, (float) Math.sqrt(Math.pow(5, 2)+Math.pow(5, 2)), 6, (5*5*5)); System.out.println("Sisi kubus = "+k.alas); System.out.println("Jumlah sisi = "+k.getjumlahsisi()); System.out.println("Volume = "+k.getvolume()); 4. Jalankan klas Main run: Alas Bujursangkar = 3 Tinggi Bujursangkar = 3 Diagonal Bujursangkar = 4.2426405 ******************************************** Alas Bujursangkar = 5 Tinggi Bujursangkar = 5 Diagonal Bujursangkar = 7.071068 ******************************************** Sisi kubus = 5 Jumlah sisi = 6.0 Volume = 125.0 BUILD SUCCESSFUL (total time: 0 seconds)