KONSEP OOP: PEWARISAN / INHERITANCE

dokumen-dokumen yang mirip
KONSEP OOP: PEWARISAN / INHERITANCE

KONSEP OOP: PEWARISAN / INHERITANCE

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

Inheritance dan Kata Kunci static

Inheritance (Pewarisan) Pengertian dasar inheritance

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

Pemrograman Berbasis Objek Inheritance

subclass class manapun private default protected public package yang sama

Inheritance. Topik 5/17/2013

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Pemrograman Berorientasi. Inheritance

IKG2I4 / Software Project I

KONSEP OOP: POLYMORPHISM

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

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

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

KONSEP OOP: POLYMORPHISM

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

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

Bahasa Pemrograman :: Polimorfism and Abstraction

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

(INHERITANCE) Nurochman

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

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

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

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

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

BAB 6 INHERITANCE Tujuan:

Konsep Dasar Pemrograman Berorientasi Objek

Praktikum 3 Konsep Class, Attribute dan Method

8 - Overriding dan Overloading

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Pewarisan Sifat Objek. Nur Hasanah, M.Cs

Modul Bahasa Pemrograman 1

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

Gambar 1: Hirarki class

Composition dan Inheritance

Bahasa Pemrograman 2.

Pemrograman Berorientasi. Polimorfisme dan Binding

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Pemrograman Berorientasi. Abstract & Interface

Bahasa Pemrograman :: Inheritance

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

Membuat dan Menggunakan Class

Pemrograman Berorientasi. Class dan Obyek 2

Pewarisan, Polimorfisme, dan Interface

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

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

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

Pertemuan 4 Halaman 1/1. Class Inheritance

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

Pemrograman Lanjut. Class : Deeper Look 2

Polymorphism (Polimorfisme)

OOP Java. 05 Encapsulation & Inheritance

PEMROGRAMAN BERORIENTASI OBJEK

Pewarisan atau Inheritance

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Bahasa Pemrograman 2.

Pemrograman Berorientasi Objek

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

ENKAPSULASI Data Hiding

PRAKTIKUM I Class dan Obyek

Bahasa Pemrograman 2.

Pemrograman Lanjut Review Class dan Object PTIIK

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi Objek Danu Wira Pangestu

INTERAKSI ANTAR OBJECT

Bahasa Pemrograman 2.

Jobsheet 09. Overloading and Overriding Method

POLIMORPHISM PEMROGRAMAN LANJUT. Dr. Eng. Herman Tolle. Sistem Informasi FILKOM UB Semester Genap 2016/2017

public class B extends A {... }

MODUL 1. CLASS, OBJECT, CONSTRUCTOR DAN METHOD

MODUL 1. Class, Object, Constructor dan Method

CSG2H3 Object Oriented Programming. Inheritance -RSM-

UJIAN TENGAH SEMESTER GENAP TA 2011/2012

INHERITANCE. Gambar 1. Kelas Hierarki Java

Jelaskan tentang konsep Cohesion & Coupling!

Polymorphism. Oleh : Agus Priyanto, M.Kom

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

IKG2I4 / Software Project I

UJIAN TENGAH SEMESTER GENAP TA 2011/2012

BAB IV KONSEP PEMROGRAMAN BERORIENTASI OBJEK

PEWARISAN SIFAT OBYEK

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

LAPORAN RESMI INHERITANCE

Overriding Method Overloading Method Class(iii) [Superclass and subclass] [constructor overloading] Keyword Super

Like mother, like daughter... [common saying]

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

Parent dan Child di Java

PERTEMUAN 5 OOP. Objektif : Praktikan mengetahui konsep OOP. Praktikan dapat membuat program sederhana dengan konsep OOP.

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

Praktikum 6 Abstract, Interface, Overloading, Overriding, dan Package

BAB 7 OVERLOADING DAN OVERRIDING

IKG2I4 / Software Project I

CLASS, METHOD DAN MODIFIER

MINGGU V : PBO (PEWARISAN)

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

Chapter 10 Polimorphism

Transkripsi:

PEMROGRAMAN LANJUT Sistem Informasi FILKOM UB Semester Genap 2016/2017 KONSEP OOP: PEWARISAN / INHERITANCE Dr. Eng. Herman Tolle Fakultas Ilmu Komputer, Universitas Brawijaya

Outline Keyword Inheritance Superclass Subclass Extends Reusability Override This & super Final Class, Final Method

Inheritance (Pewarisan) Pewarisan suatu class pada class lainnya Seorang ayah dapat mewariskan beberapa sifat yang sama pada anak-anaknya, Namunsetiapanakdapat memiliki sifat yang berbeda dan tidak dimiliki oleh ayah maupun saudara-saudaranya Suatu class dapat mewariskan class member (atribut dan method) kepada class lain, konsep tersebut dikenal dengan istilah inheritance

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

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

Ilustrasi Inheritance superclass << extends >> subclass Hasil dari inheritance adalah class member pada superclass akan diwariskan kepada subclass Sehingga subclass juga memiliki class member yang sama dengan superclass Merupakan hubungan Generaliasasi (is-a) (tanda panah dengan segitiga full)

Contoh inheritance class Kendaraan{ boolean mesin; int kapasitas; void jalan(){ void berhenti(){ class Mobil extends Kendaraan { int Tahun; String JenisMobil; String Produsen; class MobilBeraksi{ public static void main(string args[]){ Mobil sedan = new Mobil(); sedan.mesin = true; sedan.kapasitas = 5; sedan.tahun = 2014; sedan.jalan();

class Kendaraan mesin kapasitas jalan( ) berhenti( ) << extends >> class Mobil mesin kapasitas jalan( ) berhenti( ) Class Mobil merupakan turunan dari class Kendaraan, sehingga class member dari Kendaraan otomatis diwariskan kepada Mobil Class Mobil tidak perlu mendefinisikan ulang seluruh class member tersebut, cukup menambahkan class member baru yg hanya ada pada Class Mobil saja.

Manfaat Inheritance Pewarisan Sifat: Superclass ke Subclass Menyusun Hirarki Reusability: (Penggunaan kembali code) kode method bisa ditulis sekali saja dan dapat digunakan oleh semua subclass. Object Complexity: Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan induknya. Objek yang kompleks dapat dibangun dari kumpulan objek lain yang lebih sederhana

Semua Class adalah turunan Kelas Object Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclassesdari superclass Object.

Tipe Inheritans Catatan: java hanya mengenal single superclass tidak ada multiple superclass

LATIHAN Buat contoh kelas induk dan kelas turunan: Person à Student MahasiswaUB à MahasiswaFilkom

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

Access level pada class member Class member yang memiliki modifier public dapat diakses oleh semua class dimanapun class itu berada Class member yang memiliki modifier protected: dapat diakses hanya oleh class-class yang berada dalam package yang sama dan sub-class pada package yang lain Class member tanpa modifier hanya dapat diaksesoleh class-class dalam package yang sama Class member yang memiliki modifier private hanya dapat diakses dari dalam class tersebut saja

Ilustrasi kode program package prog class Coba vara varb varc << extends >> << import >> class Lagi objek baca vara vard class Saja objek akses class Turunan objek sifat vara varb vara varb varc

//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

//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; //

//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; //

//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; //

Class Saja, Turunan, dan Lagi tidak dapat mengakses vard karena vard bersifat private sehingga hanya bisa diakses dari dalam class Coba Class Turunan dan Lagi tidak dapat mengakses varc karena varc bersifat package-private sehingga hanya bisa diakses dari dalam package prog Class Lagi tidak dapat mengakses varb karena varb bersifat protected sehingga hanya bisa diakses dari dalam package prog atau dari class yang merupakan sub-class Coba

OVERLOADING METHOD IN INHERITANCE

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 function agar lebihspesifik dansesuai dengansub-class yang dirancang

// 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");

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)

THIS, SUPER & KONSTRUKTOR

this vs super Keyword this mengacu pada atribut dan method yang terdapat pada class itu sendiri Contoh: this.cetak() Keyword super mengacu pada atribut dan method yang terdapat pada class parentnya. Contoh: super.cetak()

class Parent{ public int x = 5; Contoh this & super 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!

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 Gunakan kata kunci Super utk memanggil konstruktor dan fungsi yang ada di di kelas induk

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 int getpanjang() { return panjang; public int getlebar() { return lebar; public void CetakLuas() { System.out.printf( Persegi dengan panjang = %d, dan Lebar = %d, Luas = %d, panjang, lebar, this.hitungluas());

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() {

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();

Konstruktor dalam Inheritance Subclass mewarisi semua member (fields, methods, dan nested classes) dari superclass-nya. Konstruktor tidak termasuk member class, jadi konstruktor tidak diturunkan ke subclass, Tetapi, konstruktor dari superclass dapat dipanggil dari subclass dengan kata kunci super. Konstruktor superclass Otomatis dipanggil sebelum kode pada konstruktor subclass dijalankan

CAUTION You must use the keyword super to call the superclass constructor. Invoking a superclass constructor s name in a subclass causes a syntax error. Java requires that the statement that uses the keyword super appear first in the constructor. 33

Constructor Chaining Constructing an instance of a class invokes all the superclasses constructors along the inheritance chain. This is known as constructor chaining. public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 34

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); 1. Start from the main method public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 35

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); 2. Invoke Faculty constructor public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 36

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); 3. Invoke Employee s noarg constructor class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 37

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); 4. Invoke Employee(String) constructor class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 38

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); 5. Invoke Person() constructor class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 39

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); 6. Execute println class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 40

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); 7. Execute println class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 41

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); 8. Execute println class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 42

animation Trace Execution public class Faculty extends Employee { public static void main(string[] args) { new Faculty(); public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); 9. Execute println class Employee extends Person { public Employee() { this("(2) Invoke Employee s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); public Employee(String s) { System.out.println(s); class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); 43

FINAL CLASS, FINAL METHOD

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

Final Method Method yang tidak dapat di override oleh sub class Contoh deklarasi: public final void contohfinalmethod() {...

Contoh Final Method class ChessAlgorithm { enum ChessPlayer { WHITE, BLACK... final ChessPlayer getfirstplayer() { return ChessPlayer.WHITE;...

Final Variabel Variabel Final adalah variabel yang hanya dapat diinisialisasi satu kali saja. Contoh deklarasi: public final double nilaieuler;

Relasi Antar Kelas Suatu class dapat dibangun dari ataupun memiliki keterkaitan dengan kelas yang lain Secara umum relasi antar class adalah: Depedensi ( uses-a ); (relasi menggunakan) Agregasi ( has-a ); (relasi mempunyai ) Inheritance ( is-a ); (relasi adalah)

IS-A IS-A is a way of saying : This object is a type of that object. public class Animal { public class Mammal extends Animal{ public class Reptile extends Animal{ public class Dog extends Mammal{ Now, if we consider the IS-A relationship, we can say Mammal IS-A Animal Reptile IS-A Animal Dog IS-A Mammal Hence : Dog IS-A Animal as well

Overriding vs. Overloading public class Test { public static void main(string[] args) { A a = new A(); a.p(10); a.p(10.0); class B { public void p(double i) { System.out.println(i * 2); class A extends B { // This method overrides the method in B public void p(double i) { System.out.println(i); public class Test { public static void main(string[] args) { A a = new A(); a.p(10); a.p(10.0); class B { public void p(double i) { System.out.println(i * 2 ); class A extends B { // This method overloads the method in B public void p(int i) { System.out.println(i); 51

The Object Class and Its Methods Every class in Java is descended from the java.lang.object class. If no inheritance is specified when a class is defined, the superclass of the class is Object. public class Circle {... Equivalent public class Circle extends Object {... 52