Top Banner
PEMROGRAMAN LANJUT Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya KONSEP OOP: PEWARISAN / INHERITANCE Dr. Eng. Herman Tolle Informatika FILKOM UB Semester Genap 2015/2016
33

PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Jun 10, 2019

Download

Documents

lamcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

PEMROGRAMAN LANJUT

Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya

KONSEP OOP:PEWARISAN / INHERITANCE

Dr. Eng. Herman Tolle

Informatika FILKOM UBSemester Genap 2015/2016

Page 2: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Outline Keyword

• Inheritance

• Superclass

• Subclass

• Extends

• Reusability

• Override

• This & super

• Final Class, Final Method

Page 3: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Inheritance (Pewarisan)

• Pewarisan suatu class pada class lainnya

• Seorang ayah dapat mewariskan beberapa sifat yang sama pada anak-anaknya, konsep tersebut dikenaldengan istilah inheritance

• Namun setiap anak dapat memiliki sifat yang berbedadan tidak dimiliki oleh ayah maupun saudara-saudaranya

• Suatu class dapat mewariskan class member (atribut dan method) kepada class lain

Page 4: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Inheritance (Pewarisan)

• Inheritance | Inheritans | Pewarisan

• Suatu class dapat mewariskan atribut dan method kepada class lain (subclass), serta membentuk class hierarchy

• Penting untuk Reusability

• Java Keyword:extends

Page 5: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Syntax Inheritance

class subClass extends superClass {

// definisi class

}

• subClass nama class turunan yang kita

buat, merupakan sub-class dari sebuah class

lain

• superClass class yang kita ingin wariskan

sifat-sifatnya ke class baru yang kita buat

Page 6: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Ilustrasi Inheritance

subClasssuperClass<< extends >>

• Hasil dari inheritance adalah class member padasuperClass akan diwariskan kepada subClass

• Sehingga subClass juga memiliki class member yang sama dengan superclass

• Merupakan hubungan Generaliasasi (is-A) (tanda panah dengan segitiga full)

Page 7: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Contoh inheritance

class Kendaraan{

boolean mesin;

int kapasitas;

void jalan(){

}

void berhenti(){

}

}

class MobilBeraksi{

public static void main(String args[]){

Mobil sedan = new Mobil();

sedan.mesin = true;

sedan.kapasitas = 5;

sedan.Tahun = 2014;

sedan.jalan();

}

}

class Mobil extends Kendaraan

{

int Tahun;

String JenisMobil;

String Produsen;

}

Page 8: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

• Class Mobil merupakan turunan dari class Kendaraan, sehingga class member dari Kendaraanotomatis diwariskan kepada Mobil

• Class Mobil tidak perlu mendefinisikan ulangseluruh class member tersebut, cukup menambahkan class member baru yg hanya ada pada Class Mobil saja.

class Kendaraan

mesin

kapasitas

jalan( )

berhenti( )

<< extends >>

class Mobil

mesin

kapasitas

jalan( )

berhenti( )

Page 9: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Manfaat Inheritance

• Pewarisan Sifat: Superclass ke Subclass

• Menyusun Hirarki

• Reusability: (Penggunaan kembali code) kodemethod bisa ditulis sekali saja dan dapat digunakanoleh semua subclass.

• Object Complexity: Subclass hanya perlumengimplementasikan perbedaannya sendiri daninduknya. Objek yang kompleks dapat dibangun dari kumpulan objek lain yang lebih sederhana

Page 10: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Semua Class adalah turunan Kelas Object

• Dalam Java, semua class, termasuk class yang membangunJava API, adalah subclassesdari superclass Object.

Page 11: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Tipe Inheritans

• Catatan: java hanya mengenal single superclass tidak ada multiple superclass

Page 12: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

LATIHAN

• Buat contoh kelas induk dan kelas turunan:

– Person Student

– MahasiswaUBMahasiswaFilkom

Page 13: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Access level pada class member

Modifier Class Package Sub-class Class lain

public Ya Ya Ya Ya

protected Ya Ya Ya Tidak

tanpa modifier Ya Ya Tidak Tidak

private Ya Tidak Tidak Tidak

Page 14: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Access level pada class member

• Class member yang memiliki modifier public dapat diaksesoleh semua class dimanapun class itu berada

• Class member yang memiliki modifier protected: dapatdiakses hanya oleh class-class yang berada dalam package yang sama dan sub-class pada package yang lain

• Class member tanpa modifier hanya dapat diakses olehclass-class dalam package yang sama

• Class member yang memiliki modifier private hanya dapatdiakses dari dalam class tersebut saja

Page 15: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

//program 9.3a. Nama file:Coba.java

package prog;

public class Coba{

public int varA;

protected int varB;

int varC;

private int varD;

public static void main(String args[]){

Coba buat = new Coba();

buat.varA = 1; //sukses

buat.varB = 3; //sukses

buat.varC = 5; //sukses

buat.varD = 7; //sukses

}

}

Page 16: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

//program 9.3b. Nama file:Saja.java

package prog;

class Saja{

public static void main(String args[]){

Coba akses = new Coba();

akses.varA = 1; //

akses.varB = 3; //

akses.varC = 5; //

akses.varD = 7; //

}

}

Page 17: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

//program 9.3c. Nama file:Turunan.java

import prog.Coba;

class Turunan extends Coba{

public static void main(String args[]){

Turunan sifat = new Turunan();

sifat.varA = 1; //

sifat.varB = 3; //

sifat.varC = 5; //

sifat.varD = 7; //

}

}

Page 18: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

//program 9.3d. Nama file:Lagi.java

import prog.Coba;

class Lagi{

public static void main(String args[]){

Coba baca = new Coba();

baca.varA = 1; //

baca.varB = 3; //

baca.varC = 5; //

baca.varD = 7; //

}

}

Page 19: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Ilustrasi kode program

package prog

class Saja

class Coba

varA

varB

varC

varD

objek akses

varA

varB

varC

class Lagi

objek baca

varA

class Turunan

objek sifat

varA

varB

<< extends >>

<< import >>

Page 20: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

• Class Saja, Turunan, dan Lagi tidak dapatmengakses varD karena varD bersifat privatesehingga hanya bisa diakses dari dalam class Coba

• Class Turunan dan Lagi tidak dapat mengaksesvarC karena varC bersifat package-private sehinggahanya bisa diakses dari dalam package prog

• Class Lagi tidak dapat mengakses varB karena varBbersifat protected sehingga hanya bisa diakses daridalam package prog atau dari class yang merupakan sub-class Coba

Page 21: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

OVERLOADING METHOD IN INHERITANCE

Page 22: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Overriding Method dalam Inheritans

• “Anak kadang sedikit berbeda dari bapaknya”

• Overriding adalah membuat method yang menggantikan method induknya.

• Jadi method yang sudah diturunkan dari kelas induk kita (superclass), kita buat lagi dengan nama yang sama tapi dengan isi yang berbeda pada kelas turunan (subclass).

• Dalam java dikenal dengan penambahan kata kunci @override .

• Teknik ini digunakan untuk mengubah definisi dari functionagar lebih spesifik dan sesuai dengan sub-class yang dirancang

Page 23: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

// program 9.4. contoh overriding

class Kendaraan{

boolean mesin;

int kapasitas;

void jalan(){

System.out.println("kendaraan dijalankan");

}

void berhenti(){}

}

class Mobil extends Kendaraan{

@Override

void jalan(){

System.out.println("masukkan kunci");

System.out.println("putar kunci");

System.out.println("injak gas");

}

Page 24: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

public Class MobilBeraksi

{

public static void main(String args[]){

Mobil sedan = new Mobil();

sedan.jalan();

}

}

• Kelas Mobil dan Kelas Kendaraan sama-sama memiliki fungsi jalan()

• Fungsi jalan() pada kelas Mobile meng-override fungsi jalan()dari kelas induknya

• Pemanggilan fungsi jalan() dari objek Mobil akan mengeksekusi fungsi jalan() dari kelas Mobil (subclass) bukan fungsi jalan yang ada pada kelas Kendaraan (superclass)

Page 25: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

this vs super

• Keyword this mengacu pada atribut danmethod yang terdapat pada class itu sendiriContoh:

this.cetak()

• Keyword super mengacu pada atribut danmethod yang terdapat pada class parentnya.Contoh:

super.cetak()

Page 26: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Contoh this & superclass 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); // Tuliskan output dari perintah ini!}

}

Page 27: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Final Class

• Class yang tidak boleh di extends lagi dapat dibuat dengan menambahkan keyword final

Contoh:public final class KelasFinal {...}

• Contoh final class dalam java package:

– java.lang.System

– java.lang.String

Page 28: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Final Method

• Method yang tidak dapat di override oleh sub class

Contoh deklarasi:public final void contohFinalMethod()

{...}

Page 29: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Final Variabel

• Variabel Final adalah variabel yang hanya dapat diinisialisasi satu kali saja.

Contoh deklarasi:public final double nilaiEuler;

Page 30: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

Latihan

• Buat 2 buah kelas berikut

• Kelas Induk: Persegi

– Atribut: panjang, lebar

– Method: HitungLuas, set-get

• Kelas Turunan: Kotak

– Atribut: tinggi

– Method: HitungLuas (override), HitungVolume

Page 31: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

class Persegi

{

private int panjang;

private int lebar;

public Persegi(int P, int L){

this.panjang = P;

this.lebar = L;

}

public int hitungLuas()

{

return panjang*lebar; }

public void CetakLuas()

{

System.out.printf(“Persegi dengan panjang = %d, dan Lebar = %d, Luas= %d”, panjang, lebar, this.hitungLuas());

}

}

public int getPanjang()

{

return panjang;

}

public int getLebar()

{

return lebar;

}

Page 32: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

class Kotak extends Persegi

{

private int tinggi;

public Kotak(int P, int L, int T){

super(P, L);

this.tinggi = T;

}

public int hitungVolume()

{

return super.hitungLuas()*tinggi; }

@override

public int hitungLuas()

{

int Luas = (2 * super.hitungLuas()) + (2 * getPanjang()* tinggi) + (2 * getLebar() * tinggi);

return Luas;

}

@override

public void CetakLuas() {}

Page 33: PEMROGRAMAN LANJUT - hermantolle.com file•This & super •Final Class, Final Method. Inheritance (Pewarisan) •Pewarisan suatu class pada class lainnya •Seorang ayah dapat mewariskan

class KotakBeraksi

{

public static void main(String[] arg)

{

Persegi Box1 = new Persegi(5, 10);

Box1.CetakLuas();

Kotak Box2 = new Kotak(5, 10, 8);

Box2.CetakLuas();

}

}