300 likes | 466 Views
Pemrograman Berorientasi Objek. Oleh : Sri Herawati, S.Kom. INHERITANCE. D3 MANAJEMEN INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS TRUNOJOYO. Sub Topik. Inheritance (Pewarisan) Abstract class Abstract Method Interface. Inheritance. Inheritance merupakan salah satu dari 3 konsep dasar OOP.
E N D
Pemrograman Berorientasi Objek Oleh : Sri Herawati, S.Kom INHERITANCE D3 MANAJEMEN INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS TRUNOJOYO
Sub Topik • Inheritance (Pewarisan) • Abstract class • Abstract Method • Interface
Inheritance • Inheritance merupakan salah satu dari 3 konsep dasar OOP. • Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. • Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
Inheritance • Suatu class yang mempunyai class turunan dinamakan parent class atau base class superclass • Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. • Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class. • Misal : kelas B adalah kelas anak dari kelas A, maka sifat – sifat dari kelas A otomatis akan dimiliki juga oleh kelas B.
Inheratance • Dengan 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. • Bentuk : class kelasturunan extends kelasparent { tubuhkelas }
Inheritance • Kita baruperlumenerapkan inheritance padasaatkitajumpaiadasuatu class yang dapatdiperluasdari class lain. • Konsep inheritance yang adadi Java adalah Java hanyamemperkenankanadanyasingle inheritance. • Konsep single inheritance hanyamemperbolehkansuatusublassmempunyaisatu parent class.
Contoh : parent class class Alpha{ private int a = 5; public void info(){ System.out.println("a= "+a); System.out.println("Dipanggil pada "+ this.getClass().getName()); } } Ket : this.getClass().getName() utk memperoleh nama kelas
Contoh : child class class Bravo extends Alpha { public static void main(String[] args){ Bravo obj= new Bravo(); obj.info(); } }
Penentu akses protected • protected berguna utk mengatur agar suatu variabel instan atau metode yg terdapat pada sebuah kelas dpt diakses pada kelas itu sendiri dan sub kelas.
Contoh :parent class class Alpha{ private int a = 5; protected int b = 7; public void info(){ System.out.println("Dipanggil pada "+ this.getClass().getName()); System.out.println("a= "+ a); System.out.println("b= "+ b); } }
Contoh : child class class Delta extends Alpha { private int c = 9; public void info(){ System.out.println("Dipanggil pada " + this.getClass().getName()); System.out.println("b = " + b); System.out.println("c = " + c); } }
Memanggil parent dan child class class PenentuProtect { public static void main(String[] args){ Alpha objx = new Alpha(); objx.info(); Delta objy = new Delta(); objy.info(); } }
Metode superkelas • Cara untuk memanggil metode superkelas dari subkelas dgn kata kunci super yang berarti superkelas.
Contoh : class Echo extends Alpha { private int c = 9; public void info(){ super.info(); System.out.println("c = " + c); } }
class superkelas { public static void main(String[] args) { Echo obj = new Echo(); obj.info(); } }
Konstruktor • Konstruktor adalah metode yg dpt digunakan utk memberikan nilai awal saat objek diciptakan. • Sifat kontruktor : • namanya sama dgn nama kelas • tidak memiliki nilai balik ( tdk boleh ada kata kunci void) Contoh : new Mobil(“Merah”, 2003)
Overloading • Overloading adalah suatu mekanisme pembuatan kontruktor yg memiliki bentuk lebih dari satu. • Misal: new Mobil(“Merah”,2003) new Mobil()
Contoh : class Mobil{ //variabel instan private String warna; private int tahunproduksi; //konstruktor pertama public Mobil(String warna,int tahunproduksi){ this.warna = warna; this.tahunproduksi=tahunproduksi; } //konstruktor kedua public Mobil(){ } //metode public void info(){ System.out.println("Warna : " +this.warna); System.out.println("Tahun : " +this.tahunproduksi); } } public class kontruktor{ public static void main(String[] args){ Mobil mobilku = new Mobil("Merah", 2003); mobilku.info(); Mobil mobilmu = new Mobil(); mobilmu.info(); } }
Abstract class & Abstract Method • Method abstract adalah suatu metode yg ditentukan dari dalam kelas tetapi tidak disertai dengan definisinya. • Class abstract adalah kelas yg tidak disertai definisinya.
Contoh : class dan method abstact public abstract class kendaraan { protected String nama; public abstract void jalankan(); }
Contoh :tesabstrak class Sepeda extends kendaraan{ public Sepeda(String nama){ this.nama = nama; } public void jalankan(){ System.out.println("Duduklah di atas sadel " +this.nama + " dan kayuhlah.."); } } class Minibus extends kendaraan{ public Minibus(String nama){ this.nama = nama; } } public void jalankan(){ System.out.println("Duduklah di atas setir " +this.nama + " dan hidupkan mesin.."); } } public class tesabstrak{ public static void main(String[] args){ Sepeda sepedaku = new Sepeda("sepeda ontel"); sepedaku.jalankan(); Minibus mobilku = new Minibus("Minibus Keri"); mobilku.jalankan(); } }
Interface • Interface adalah mekanisme yg memungkinkan berbagi konstanta atau menentukan bentuk metode yg dpt digunakan oleh sejumlah kelas. • Variabel dlm interface hanya diperkenankan utk menggunakan public static final.
Mendeklarasikan interface • Bentuk : public interface namainterface{ //metode tanpa implementasi //definisi konstanta }
Menggunakan interface • Sebuah class dpt menggunakan interface melalui kata kunci implements. • Bentuk : class namakelas1 [extends namakelas2] implements namainterface1[,namainterface2]{ //tubuh kelas }
Contoh : interface Intlampu{ public static final int keadaan_hidup =1; public static final int keadaan_mati =0; public abstract void hidupkan(); public abstract void matikan(); } //akhir interface interface Intlampupenyuram extends Intlampu{ public static final int posisi_maks =10; public static final int posisi_min =0; public abstract void redupkan(); public abstract void buatlebihterang(); }
Contoh : class lampupenyuram implements Intlampupenyuram{ private int statuslampu = 0; public void hidupkan(){ this.statuslampu = posisi_maks; System.out.print("hidupkan!: "); System.out.print("Lampu hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); } public void matikan() { this.statuslampu = posisi_min; System.out.print("Matikan ! : "); System.out.println("Lampu mati."); }
Contoh: public void redupkan(){ if (this.statuslampu != posisi_min); this.statuslampu--; System.out.print("redupkan! : "); if (this.statuslampu ==posisi_min) System.out.println("Lampu mati"); else { System.out.print("Lampu Hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); } }
Contoh: public void buatlebihterang(){ if (this.statuslampu != posisi_maks); this.statuslampu++; System.out.print("Buat lebih terang "); System.out.print("Lampu Hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); } } //akhir kelas
Contoh: public class tesinterface{ public static void main(String[] args){ lampupenyuram lampukamar = new lampupenyuram(); lampukamar.hidupkan(); lampukamar.redupkan(); lampukamar.redupkan(); lampukamar.buatlebihterang(); lampukamar.matikan(); lampukamar.buatlebihterang(); } }