FONDASI PEMROGRAMAN & STRUKTUR DATA #7

Slides:



Advertisements
Presentasi serupa
Konsep OOP di Java TRASPAC, Mei 2009 Oleh : Siwi Arie Widadi.
Advertisements

Membuat class sendiri.
Other OOP Basic Viska Mutiawani, M.Sc. Konsep penting Method overloading Encapsulation this keyword final static.
Nur Hayatin, S.ST Jurusan Teknik Informatika Universitas Muhammadiyah Malang Sem Genap 2010.
Workshop SCS: Java Game Programming
INHERITANCE.
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
POLIMORFISM Ery Setiyawan Jullev A.
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
Praktikum 8 Pemrograman Berbasis Obyek
Encapsulation, Inheritance, polymorphism, dan interface
Variabel, Method & Constructor Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
INHERITANCE, POLYMORPHISM, DAN INTERFACE
Pewarisan, Polimorfisme, dan Interface
Inheritance (Pewarisan)
ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM
Class, Inheritance, Encapsulation & Interface
Object Oriented Struktur Data.
Pertemuan : Object Oriented Programming
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Pemrograman Berorientasi Obyek dengan JAVA Interface
Inheritance Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
07 Advanced Class Features
Object Oriented Programming with JAVA 2011/2012
Pertemuan 7 inheritance.
Inheritance Konsep Inheritance Protected Member
Teknik Pemrograman Terstruktur Linked lis & Inheritance 1/12 Pointer (Lanjutan…) Pemrograman Berorientasi Objek.
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
Inheritance, polymorphism, dan interface
Pemrograman Berorientasi Obyek (PBO)
1 Pertemuan 9 Inheritance Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
INHERITANCE (Oleh : Nur Hayatin, S.ST)
Algoritma &Pemrograman 1
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Perancangan dan Pemrograman Web
FONDASI PEMROGRAMAN & STRUKTUR DATA #5
Enkapsulasi.
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
Access Modifier.
Inheritance dan Kata Kunci static
Outline: Pewarisan/Inheritance Polymorphism
@kovazzevic | SMKN 24 Jakarta
Method & Constructor METHOD.
Inheritance Pertemuan 8
Pewarisan Disusun Oleh: Reza Budiawan Untuk:
Abstract Class.
Algoritma & Pemrograman 1
Enkapsulasi, Accessor Method, Mutator Method
Association, Composition dan Inheritance
MEMBUAT CLASS SENDIRI 2.
Inheritance.
Inheritance (Turunan)
INHERITANCE SUSSI.
Pemrograman Berorientasi Object
Visibility, Getter Setter, Pewarisan, Overloading dan Overriding
Object Oriented Programming
Polimorphism Dosen Pengampu : Nur Iksan.
@kovazzevic | SMKN 24 Jakarta
Pertemuan 5 Inheritance
Oleh : Rahmat Robi Waliyansyah, M.Kom
Pemrograman berorientasi objek
Pemrograman Berorientasi Obyek (PBO) Disusun oleh : Khairan Marzuki, M.Kom Fakultas Teknik dan Kesehatan, Universitas Bumigora.
DPH1C4 Pemrograman berorientasi Obyek
FONDASI PEMROGRAMAN & STRUKTUR DATA #5 - 1
FONDASI PEMROGRAMAN & STRUKTUR DATA #4 - 1
FONDASI PEMROGRAMAN & STRUKTUR DATA #6
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
Bahasa Pemrograman (Pemrograman Visual)
Transcript presentasi:

FONDASI PEMROGRAMAN & STRUKTUR DATA #7 Inheritance

Inheritance: Konsep dan Hirarki By: Augury El Rayeb

Inheritance Konsep Inheritance  Turunan/warisan/pewarisan. Inheritance  Konsep penurunan fitur yang dimiliki induk (superclass) ke turunannya (subclass) Kakek Kakek merupakan superclass untuk Ayah Ayah merupakan subclass terhadap Kakek Ayah merupakan superclass untuk Anak Ayah Anak merupakan subclass terhadap Ayah Anak Anak Anak

Inheritance Konsep Dunia Nyata Mengangkut Mengangkut Mengangkut manusia Mengangkut barang Mengangkut Mengangkut manusia Mengangkut Mengangkut manusia Mengangkut barang dengan kapasitas besar Mengangkut Mengangkut manusia Mengangkut barang Jalan Raya Mengangkut Mengangkut manusia Mengangkut barang Semua Medan Jalan

Inheritance Konsep Pemrograman Inheritance merupakan mekanisme mendasar pada code reuse. Inheritance memungkinkan kita untuk extend functionalitas dari suatu class (superclass) ke class lain (subclass).

Inheritance Konsep Hirarki User Data: userId password email Method: login() comment() rating() Dengan kata lain, kita bisa membuat tipe baru dengan menambahkan field dan method (properties) dari tipe aslinya (original), sebagai hirarki dari classes yang ada. Lecture Data: lectureId lectureName studyProgram Method: instruksiTugas() menilaiTugas() Student Data: studentId studentName studyProgram Method: uploadTugas()

Inheritance The Hierarchies IS-A relationships adalah transitive. Dengan kata lain; jika X IS-A Y dan Y IS-A Z, maka X IS-A Z Derived class (class turunan) adalah subclass dari base class (class induk) , dan the base class (class induk) adalah superclass terhadap derived class (class turunan). Person Hierarchy

Inheritance The Hierarchies Vehicle Hierarchy IS-A Relationship: Sedan IS-A Car Car IS-A Vehicle Maka: Sedan IS-A Vehicle SUV IS-A Car SUV IS-A Vehicle

Inheritance: Implementasi dan Typical Layout By: Augury El Rayeb

Inheritance The Bad design technique of Copy-&-Paste class Student { public Student ( String n, int ag, String ad, String p ) { name = n; age = ag; address = ad; phone = p; } public String toString( ) { return getName( ) + " " + getAge( ) + " "+ getPhoneNumber( ); } public String getName( ) { return name; } public int getAge( ) { return age; } public String getAddress( ) { return address; } public String getPhoneNumber( ) { return phone; } public void setAddress( String newAddress ) { address = newAddress; } public void setPhoneNumber( String newPhone ) { phone = newPhone; } public double getGPA( ) { return gpa; } private String name; private int age; private String address; private String phone; private double gpa; } class Person{ public Person( String n, int ag, String ad, String p ) { name = n; age = ag; address = ad; phone = p; } public String toString( ) { return getName( ) + " " + getAge( ) + " "+ getPhoneNumber( ); } public String getName( ) { return name; } public int getAge( ) { return age; } public String getAddress( ) { return address; } public String getPhoneNumber( ) { return phone; } public void setAddress( String newAddress ) { address = newAddress; } public void setPhoneNumber( String newPhone ) { phone = newPhone; } private String name; private int age; private String address; private String phone; } Perhatikan code pada slide, class person digunakan untuk menyimpan informasi terkait person; dalam hal ini class person memiliki private data berupa: name, age, address, dan phone number Juga disertai dengan public method untuk mengakses dan merubah private data tersebut. Setelah membuat class Person: Selanjutnya kita ingin membuat class student, class student juga harus memiliki; name, age, address, phone number yang sama dengan yang ada pada class person dengan ditambah private data gpa, public method untuk mengakses dan merubah GPA. Untuk membuat class student maka kita bisa melakukan copy & paste dari class person selanjutnya tambahkan private data GPA dan public method untuk mengakses dan merubah GPA. #Perhatikan code pada slide, class person digunakan untuk menyimpan informasi terkait person; dalam hal ini class person memiliki private data berupa: name, age, address, dan phone number Juga disertai dengan public method untuk mengakses dan merubah private data tersebut. Selanjutnya kita ingin membuat class student, class student juga harus memiliki; name, age, address, phone yang sama dengan yang ada pada class person dengan ditambah private data gpa, public method untuk mengakses dan merubah GPA. Untuk membuat class student maka kita bisa melakukan copy & paste dari class person selanjutnya tambahkan private data GPA dan public method untuk mengakses dan merubah GPA.

Inheritance The Bad Design Technique of Copy-&-Paste Cara copy-&-paste kode pada slide terdahulu, merupakan cara yg tidak baik, karena memiliki banyak kekurangan (fraught with significant liabilities): Problem: Jika yang kita copy sampah, maka kita akan membuat lebih banyak sampah pada kode program kita. Hal ini membuatnya sangat sulit diperbaiki jika ada error pada program, khususnya jika terdeteksinya belakangan. Problem: terkait dengan isu maintenance dan pengelolaan versi program. Jika ada perubahan atau perbaikan versi harus dilakukan perubahan pada beberapa tempat dan sangat banyak. Problem: dengan copy-and-paste, misal program kita memiliki 3 entitas; Person, Student, and Employee maka kita harus membuat 3 class yang secara total berbeda dan tidak memiliki hubungan satu sama lain, padahal ketiga entitas tersebut memiliki banyak kesamaan. Jadi jika kita memiliki rutin (fungsi/method) yang menerima a person sebagai parameter , kita tidak bisa mengirim student. Dengan demikian kita mesti membuat rutin itu (copy-&-paste) untuk tiap tipe & dalam hal ini untuk person dan student)

Inheritance The Implementation Inheritance dapat menyelesaikan 3 masalah dari copy-&-paste tersebut. Dengan inheritance, kita bisa buat seperti berikut; Student IS-A Person, kemudian kita tentukan perubahan/penambahan pada Student. Terdapat 3 perubahan yang dimungkinkan dengan inheritance : Student bisa menambah fields (contoh; gpa). Student bisa menambah methods (contoh; getGPA). Student bisa override methods yang ada (contoh; toString). Dan 2 Perubahan yang tidak dibolehkan, karena dapat merusak IS-A relationship pada inheritance : Student tidak dapat menghapus fields. Student tidak dapat menghapus methods.

Inheritance The Implementation in Class Diagram Person Data: String name int age String address String phone Method: Person() toString() getName() getAge() getAddress() getPhoneNumber() setAddress() setPhoneNumber() Student Data: String name int age String address String phone double gpa Method: Student() toString() getName() getAge() getAddress() getPhoneNumber() setAddress() setPhoneNumber() getGPA() Copy-&-paste Student Data: double gpa Method: getGPA() Inheritance Artinya: is-A Keterangan:

Inheritance The Implementation in Class Diagram Person Data: String name int age String address String phone Method: Person() toString() getName() getAge() getAddress() getPhoneNumber() setAddress() setPhoneNumber() Class Student dengan extends (Inheritance) class Student extends Person { public Student( String n, int ag, String ad, String p, double g ) { super( n, ag, ad, p ); gpa = g; } public String toString( ) { return getName( ) + " " + getAge( ) + " " + getPhoneNumber( ) + " " + getGPA( ); } public double getGPA( ) { return gpa; } private double gpa; Student Data: double gpa Method: getGPA()

Inheritance Typical Layout & Penulisan Typical layout untuk inheritance dapat dilihat pada kode di bawah dan menggunakan kata extends. Kata extends menyatakan bahwa suatu class dibentuk (derived) dari class lain. public class NamaClass extends NamaInduk { // Any members that are not listed are inherited unchanged // except for constructor. // public members area // Constructor(s) if default is not acceptable // Base methods whose definitions are to change in Derived // Additional public methods // private members area // Additional data fields (generally private) // Additional private methods } NamaClass : nama class baru yang akan dibuat. Extends: keyword yg digunakan untuk inheritance. NamaInduk: nama class yg dipakai sebagai induk dasar dari pembuatan class baru tersebut.

Inheritance Typical Layout & Penulisan Secara umum seluruh data adalah private, maka kita dapat memberikan tambahan data field dengan menuliskannya di area private (pada typical layout). public class NamaClass extends NamaInduk { // Any members that are not listed are inherited unchanged // except for constructor. // public members area // Constructor(s) if default is not acceptable // Base methods whose definitions are to change in Derived // Additional public methods // private members area // Additional data fields (generally private) // Additional private methods }

Inheritance Typical Layout & Penulisan Setiap method pada base class (class induk) yang tidak dispesifikasikan (tidak ditulis ulang) pada derived class (class turunan) akan diturunkan (inherited) tanpa perubahan, kecuali constructor (tidak diturunkan). Setiap method pada base class (class induk) yang dispesifikasikan atau dideklarasikan pada derived class (class turunan) secara public akan di-override.

Inheritance Typical Layout & Penulisan class Person{ public Person( String n, int ag, String ad, String p ) { name = n; age = ag; address = ad; phone = p; } public String toString( ) { return getName( ) + " " + getAge( ) + " "+ getPhoneNumber( ); } public String getName( ) { return name; } public int getAge( ) { return age; } public String getAddress( ) { return address; } public String getPhoneNumber( ) { return phone; } public void setAddress( String newAddress ) { address = newAddress; } public void setPhoneNumber( String newPhone ) { phone = newPhone; } private String name; private int age; private String address; private String phone; } class Student extends Person { public Student( String n, int ag, String ad, String p, double g ) { super( n, ag, ad, p ); gpa = g; } public String toString( ) { return getName( ) + " " + getAge( ) + " " + getPhoneNumber( ) + " " + getGPA( ); } public double getGPA( ) { return gpa; } private double gpa; Override

Inheritance Typical Layout & Penulisan Object dari derived class akan memakai method baru (override) yang didefinisikan pada derived class tersebut. Method public pada base class (class induk) tidak dapat di override secara private pada derived class (class turunan), karena itu sama saja dengan menghapus method dan akan melanggar IS-A relationship. Method tambahan dapat ditambahkan pada derived class (class turunan).

See You Next Topic Thanks