IT 405: KPLBO MATERI 8 RELASI ANTAR OBJEK Ayi Purbasari, ST., MT. If-Unpas, 2014
OUTLINE
Agregasi
Komposisi
Inheritance
Overriding dan Super
AGREGASI Relasi “consist of”, “is composed of”, “has a” Contoh:
A Car has a(n) Engine A Car has a Transmission A Car is composed of many (4) Wheels A Person has a(n) Address
COMPOSITION Adalah agregasi, dimana “bagian”-nya tidak dapat ada tanpa bagian keseluruhannya. Contoh:
A Book is composed of many Chapters
Chapter (bab) tidak ada jika tidak ada buku
INHERITANCE
Inheritance hanya dimiliki oleh bahasa pemrograman OO Adalah relasi is-a Contoh: A Student is a Person A Sedan is a Car
Pada Student is a Person, maka Person adalah kelas induk dan Student adalah kelas anak Kelas anak (Student) akan mewarisi sifat-sifat dan perilaku-perilaku dari kelas induknya (Person) Jika Student is a Person, dan Person has a(n) Address, maka Student juga has a(n) Address
INHERITANCE
Perhatikan kelas Student berikut ini:
Terdapat 2 macam Student:
Graduate Students Undergraduate Student
Student name studentID setName() setStudentID() getName() getStudentID()
Graduate Student adalah student yang telah menyelesaikan program Undergradutenya Misal kelas karyawan Unpas, terdapat lulusan D3 dari Polban, PoltekPos, D3 Telkom, D2 PDC dan lain-lain.
INHERITANCE .. (LANJUTAN)
Terdapat kebutuhan informasi: Apa nama program Undergraduate seorang student sebelum mengambil program Graduate Apa institusi program Undergraduate seorang student sebelum mengambil program Graduate Misal: D3 Telkom
Solusi I: ditambahkan atribut dan metode di kelas Student
Student name studentID underGraduateDegree underGraduateInstituion setName() setStudentID() getName() getStudentID() setUnderGraduateDegree() getUnderGraduateDegree() setUnderGraduateInstitution() getUnderGraduateInstitution()
INHERITANCE .. (LANJUTAN)
Konsekuensi solusi I tersebut: atribut dan metode undergraduate ini tidak berlaku untuk seluruh student, tetapi hanya untuk student graduate saja karena itu, atribut dan metode tersebut perlu selalu dicek, apakah digunakan atau tidak digunakan variabel boolean graduateStudent untuk menandai bahwa student tersebut adalah seorang student graduateStudent digunakan juga metode untuk mengecek: isGraduateStudent.
Jika merupakan graduate student, maka graduateStudent dan isGraduateStudent akan bernilai TRUE.
Student name studentID underGraduateDegree underGraduateInstituion graduateStudent setName() setStudentID() getName() getStudentID() setUnderGraduateDegree() getUnderGraduateDegree() setUnderGraduateInstitution() getUnderGraduateInstitution() isGraduateStudent()
INHERITANCE .. (LANJUTAN)
Contoh penggunaan boolean untuk mengecek jenis Student:
INHERITANCE .. (LANJUTAN) Jika terdapat kebutuhan-kebutuhan khusus lainnya untuk kelas Student, maka perlu ditambahkan variabel baru juga variabel bertipe boolean untuk mengeceknya. Misal untuk kelas karyawan, diperlukan informasi tempat kerja mahasiswa yang bersangkutan. Padahal tidak semua Student memiliki tempat kerja. Hal ini menunjukkan bahwa Solusi I dengan penambahan-penambahan variabel ini sangat tidak praktis dan merumitkan.
INHERITANCE .. (LANJUTAN)
Solusi II: Meng-clone semua atribut dan metode kelas Student Student nama studentID setName() setStudentID() getName() getStudentID()
GraduateStudent name studentID underGraduateDegree underGraduateInstituion setName() setStudentID() getName() getStudentID() setUnderGraduateDegree() getUnderGraduateDegree() setUnderGraduateInstitution() getUnderGraduateInstitution()
INHERITANCE .. (LANJUTAN)
THE PROPER APPROACH (#3): TAKING ADVANTAGE OF INHERITANCE GraduateStudent underGraduateDegree underGraduateInstituion
Student nama studentID
setUnderGraduateDegree() getUnderGraduateDegree() setUnderGraduateInstitution() getUnderGraduateInstitution()
setName() setStudentID() getName() getStudentID()
Solusi III: Dengan menggunakan Inheritance, atribut yang dimiliki kelas Student otomatis dimiliki oleh kelas GraduateStudent
INHERITANCE: CONTOH DIAGRAM KELAS DENGAN INHERITANCE
PENDEKLARASIAN INHERITANCE public class Student extends Person { }
Student s1 = new Person(); //Tidak benar Student s1 = new Student(); //Objek student Person s1 = new Student(); //Objek student
PENDEKLARASIAN INHERITANCE KELAS INDUK/SUPERCLASS
KELAS TURUNAN/SUBCLASS
KELAS TURUNAN/SUBCLASS
HIRARKI KELAS
PUSTAKA
Barker, Jacquie. Beginning Java Objects From Concepts to Code, Second Edition. Appress. 2005.
THANK YOU