190 likes | 471 Views
Composition & Inheritance. Viska Mutiawani , M.Sc. Konsep Penting. Composition Inheritance ( pewarisan ) Superclass (super kelas ) Subclass (sub kelas ). Reuse Class. Ada 2 cara untuk reuse ( menggunakan kembali ) class yang telah dibuat : Composition (has-a) Inheritance (is-a).
E N D
Composition & Inheritance ViskaMutiawani, M.Sc
KonsepPenting • Composition • Inheritance (pewarisan) • Superclass (super kelas) • Subclass (sub kelas)
Reuse Class • Ada 2 carauntuk reuse (menggunakankembali) class yang telahdibuat: • Composition (has-a) • Inheritance (is-a)
Composition vs Inheritance • Composition : aggregation • Composition : class barudisusundari class yang telahada. • Inheritance : pewarisan • Inheritance : class barudibuatberdasarkanmodifikasidari class yang telahada.
Composition • Contohada class Point. • Anggapkitaakanbuat class Line. Kita dapat re-use class Point dengan composition. • Kita sebut: "A line is composed of two points", or "A line has two points". • Composition jugadisebutrelasi "has-a”
Inheritance • Ataupewarisan • AnggapsepertihirarkibinatangdalamBiologi.
Inheritance • Superclass: Class yang beradapadahirarkilebihatas. (Parent) • Memilikivariabeldan method yang umum • Subclass: Class yang beradapadahirarkilebihbawah. (Child) • Memilikivariabeldan method yang lebihkhusus. • Subclass mewarisisemuavariabeldan method darisuperclass-superclassnya.
Inheritance • Kegunaan inheritance: • Menghindariduplikasi code • Reuse code • Menyederhanakan code • Mempermudah maintenance danperluasan code • Inheritance jugadisebutrelasi“is-a” • Contoh: Poodle is a dog • Owl is a bird • Bird is a animal
Contoh Inheritance • Cara subclass mewarisisuperclass: dengan keyword “extends”
Keyword “super” • Keyword superdigunakanuntukmerujukpadavariabeldan method padasuperclass. • Pada constructor, superdigunakanuntukmemanggil constructor darisuperclass.
Constructor pada Inheritance • Constructor subclass di Java tidakdiwarisidarisuperclassnya. • Namun constructor superclassdapatdigunakandidalam subclass denganmenggunakan keyword super(). • Setiap class di Java memilikiconstructornyasendiri.
Method overriding • Selaindarimewarisisemuavariabeldan method darisuperclass-superclassnya, subclass dapatmengoverridevariabeldan method. • Andaikankitainginmenghitungluaspermukaan Cylinder. Kita gunakan method getArea() pada Circle dengancarameng-overridenya. • Dan selanjutnyakitaubahgetVolume() untukmenghitung volume Cylinder.
@Override • @Override disebutsebagaiannotation, yang menyuruh compiler untukmengecekapakahadanama method padasuperclass. • Jikatanpa @Override, method ToString() akandianggapsebagai method baru. • Jikadengan @Override, akanmuncul error kompilasijikakitatulisToString() • Optional but nice to have.
Single Inheritance • Java tidakmensupport multiple inheritance (subclass punyalebihdarisatusuperclass) • Pada Java, subclass hanyabolehpunyasatusuperclasslangsungdiatasnya. Namunsuperclassbolehpunyabanyak subclass.
java.lang.Object • Setiap class pada Java merupakan subclass dari Object (java.lang.Object). • Java.lang.Objectdisebutcommon root. • Hal inidiperlukanuntuk running program dengan JRE, contohnyapadakasus multithreading, garbage collector.
Composition vs Inheritance • “A line is composed of 2 points” vs “A line is a point extended by another point”? • Which one? • Pendapatahli: Use composition if possible, before considering inheritance.
Latihan • Rectangle • length : double • width : double • Color : String • + Rectangle() • + Rectangle(length: double, width: double) • + getLength() : double • + getWidth() : double