P. 1
Inheritance

Inheritance

|Views: 190|Likes:
Published by ameenul

More info:

Published by: ameenul on Apr 03, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

03/13/2015

pdf

text

original

Pewarisan (Inheritance

)
Pada bab sebelumnya telah dijelaskan mengenai Kelas dan objek sebagai fundamental OOP, bab ini akan menguraikan sifat OOP yang sangat berperan pada fitur reusable pada desain kelas diagram berbasis Object(OO), yaitu inheritance. Ide dasar dari sifat inheritance pada OOP adalah membuat kelas baru yang dibangun dari kelas ± kelas yang sudah ada. Artinya kelas baru tersebut mewarisi semua field dan behavior dari kelas lain. Sehingga bisa dikatakan kelas baru tersebut juga berjenis kelas yang diwarisinya.

Hirarki Class, Superclass, dan Subclass.
Salah satu relasi antar kelas dalam desain diagram yang sering terjadi adalah inheritance, dimana suatu kelas mewarisi kelas lain. Hali ini dapat terjadi sampai beberapa kelas hingga membentuk Hirarki kelas secara inheritance(Hirarki pewarisan kelas) Semakin Generic dan Abstract Superclass

Pegawai

Manager

Sekretaris

Programmer

Eksekutif Manager Semakin Spesifik Subclass

Istilah Pada hirarki diatas :  Superclass : Kelas yang mewariskan data dan methodnya kepada kelas lain. Kelas ini disebut juga sebagai ParentClass  Subclass : Kelas yang mewarisi data dan method dari Superclass

Namun pada kasus ± kasus tertentu kita membutuhkan data yang hanya bisa diakses oleh kelas yang memiliki hubungan turunan (se-package ataupun lain package) atau kelas lain yang se-package.pada situasi ini kita dapat menggunakan tingkat akses protected sehingga data dan method tersebut bisa diakses oleh kelas yang memiliki hubungan turunan (se-package ataupun lain package) atau kelas lain yang se-package. Eksekutif Manager ADALAH Manager dan juga ADALAH pegawai Sifat Inheritance pada java y Subclass mewarisi data dan method dari Superclassnya (untuk modifier yang visible : public dan protected) y Subclass dapat menjalankan method dari Superclass (untuk modifier yang visible : public dan protected) tetapi tidak berlaku sebaliknya y Methode Superclass implementasinya dapat diOverride oleh Subclassnya (kecuali untuk method yang final dan private) y Penggunaan kata kunci ³super´ di dalam Subclass untuk mengakses anggota Superclass (data maupun methode) dan juga bisa untuk memanggil konstruktor Superclass y y Semua kelas dapat diturunkan kecuali untuk kelas yang final Java tidak mendukung Multiple Inheritance Cara membuat kelas turunan (Subclass) [access modifier] Class [namaKelasAnak] extends [namaKelasInduk] { } Tingkat Akses Protected Pada bab sebelumnya kita telah mengenal akses private dimana method ± method dan data yang diberikan akses private dalam suatu kelas hanya bisa diakses oleh kelas itu sendiri. . Relasi pada kelas diagram tersebut merupakan jenis relasi ³ADALAH ´ maka bisa dikatakan Programmer ADALAH Pegawai.Sekretaris ADALAH Pegawai.Sifat dari hirarki pewarisan pada kelas diagram tersebut semakin ke atas semakin generic dan abstract (digunakan pada pemrograman generic).Lingkungan diluar kelas tersebut bahkan turunannya pun tidak dapat mengakses method dan data private tersebut.

} } Public class B extends A { @override Public void getDeskripsi() { System. } } . Public class A { Public void getDeskripsi() { System.out.println(³method A´). Dengan melakukan overriding method maka method yang akan dieksekusi oleh objek kelas turunan adalah method yang berada pada kelas turunan tersebut bukan method yang berada pada kelas induk.Overriding Method Pada saat kita mendefinisikan suatu method di dalam kelas turunan (subclass) yang nama dan daftar parameternya sama persis dengan yang terdapat pada kelas induk (superclass )maka dikatakan kita telah melakukan overriding method. Penggunaan override yaitu jika kita ingin mendefinisikan lain suatu method di dalam kelas induk.out.println(³method B´).

masing kelas turunannya. baru akan diimplementasi oleh masing . Kelas abstract dapat mempunyai method yang abstract pula yaitu method yang didalamnya tidak ada implementasi sama sekali. Pemanggilan method kelas induk : super.Kata kunci ³ super ´ Pada inheritance kata kunci ³super´ digunakan untuk memanggil konstruktor kelas induk dan juga bisa digunakan untuk mengakses method ± method dan data pada kelas induk yang visible (akses public atau protected). Membuat abstract class : [access modifier] abstract class [nama kelas] Membuat method abstract [access modifier] [tipe method] [nama method] ( [parameter] ) .Perlu diperhatikan Method abstract hanya ada pada kelas abstract dan kelas abstract tidak dapat di instansiasi.data dari kelas ± kelas tersebut yang bersifat umum seperti data nama.[nama method kelas induk]([argumen]) Pemanggilan konstruktor kelas induk : super([argumen]) Abstract Class Pada hirarki kelas inheritance pegawai telah kita ketahui bahwa semakin keatas tingkatanya maka sifatnya akan semakin abstract atau bisa dikatakan bersifat umum. Maka kelas person dapat dibuat abstract. Nama dimiliki oleh person maka pegawai pun mempunyai nama. maka dengan perluasan hingga abstract terdapat data . dimana manager adalah pegawai dan juga adalah person.begitu juga programmer.manager dan sekretaris. Maka bisa dikatakan perluasan dari kelas pegawai adalah kelas person. Begitu juga dengan Programmer dan sekretaris.

getNama()+"adalah mahasiswa". // method abstract tanpa implementasi public abstract String getDeskripsi().nama = nama. } } . } } // method non abstract public class Mahasiswa extends Person { public Mahasiswa(String nama) { super.public abstract class Person { // membuat kelas abstract private String nama. } @Override // override methode abstract public String getDeskripsi() { return super. } // method non abstract public void setNama(String nama) { this. public String getNama() { return nama.setNama(nama).

.getTime(). GregorianCalendar calendar = new GregorianCalendar(year. int year.Percobaan 1 : Inheritance Kelas Employee 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100.name = name. import java.hireDay = calendar.1. } } public double getSalary() { return salary. this. } public Employee(String name. this.*. day). public class Employee { private String name.salary = salary.int month. private double salary. month . } public Date getHireDay() { return hireDay. double salary.util. private Date hireDay.int day) { this. } public String getName() { return name. salary += raise.

day). double salary.bonus = bonus. year. int day) { super(name. private double bonus. } public void setBonus(double bonus) { this.Kelas Manager 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 } public double getSalary() { double baseSalary = super.out. return baseSalary+bonus. salary.out.println("nama Boss = " +boss. } public Manager(String name. 12. int month. int year. 1989. public static void main(String[] args) { public class ManagerTest { .getSalary()). 50000. } System.getSalary()).println("nama staff = " +staff. 1987. 15). bonus = 0. month.getName()+".getSalary(). boss. Employee staff = new Employee("Donni Chen".Salary = " +staff. 1). 10.Salary = " +boss.setBonus(5000). Manager boss = new Manager("Steven Seagel". public class Manager extends Employee { } Kelas ManagerTest 1 2 3 4 5 6 7 8 9 10 11 12 13 14 } System.getName()+". 80000.

Pada ketiga kelas yang telah dibuat method manakah yang teroverride dan milik kelas apa method tersebut? Dan method manakah yang mengoverride dan milik kelas apa? 10. apa yang terjadi b. gunakan key ³super´ untuk pemanggilan method kelas induk. Jelaskan maksud dari baris ke 1 kelas Employee? 3. melalui objek yang telah ada di kelas ManagerTest 9. Ubah access modifier method pada kelas Employee menjadi : a. Tambah kode pada kelas ManagerTest untuk menampilkan hasil keluaran method pada soal no 6. Protected. Private. Jelaskan maksud dari baris ke 15 kelas Manager? 7.Pertanyaan : 1. Buatlah method baru bernama getInfo pada kelas manager dengan tipe kembalian String yang fungsinya untuk memberikan info nama dan hireDay. kelas anak dan kelas utama (main class) ? Apa keluaran dari kelas utama ? 2. Jelaskan maksud dari baris ke 1 kelas Manager? 5. 8. manakah yang merupakan kelas induk. Pada ketiga kelas yang telah dibuat. Jelaskan maksud dari baris ke 7-12 kelas Employee? 4. Jelaskan maksud dari baris ke 6 kelas Manager? 6. apa yang terjadi Kesimpulan Percobaan: .

} private String college.name = name. public Students(String name. private String name. } public Person(String name) { this.Percobaan 2 : Abstract Class Kelas abstract Person 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 } public abstract String getDescription(). } public String getName() { return name.String c) { super(name). college = c. public class Students extends Person { . public abstract class Person { Kelas Student 1 2 3 4 5 6 7 8 9 10 11 } } public String getDescription() { return "a student study in "+college.

apakah hasilnya ? Person andi = new Person(³Andi Virmansyah ³) . Jelaskan maksud baris ke 4 -7 pada kelas Student 3. public class AbstractTes { Pertanyaan 1. Jelaskan hubungan baris ke 9 ± 11 pada kelas Student dengan baris 13 pada kelas person 4.apa yang terjadi? Kesimpulan Percobaan : ."Informatika").Kelas AbstractTes 1 2 3 4 5 6 7 8 9 } } public static void main (String[] args) { Students mahasiswa = new Students("Budi". Jalankan main program anda.getName( ). System.out.getDescription()). Jelaskan maksud baris ke 1 dan ke 13 pada kelas Person 2. Tambahkan code di bawah ini pada kelas AbstractTes baris ke 7 . Apa hasil keluaran dari kelas utama 5. Buatlah method abstract bernama getNim pada kelas student. 6. Andi.println(mahasiswa.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->