polymorphism aggregation

9

Click here to load reader

Upload: reindhartz

Post on 05-Jul-2015

160 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Polymorphism Aggregation

AGGREGATION & POLYMORPHISM

Pada pertemuan-pertemuan lalu kita sudah belajar bahwa setiap dua atau lebih objek (atau

class) bisa mempunyai hubungan satu sama lain. Hubungan tersebut bisa terjalin, karena didasarkan

dengan adanya pertukaran pesan (reference) yang terjadi. Ada hubungan yang berupa penurunan

sifat searah, ada yang berupa penurunan sifat dari berbagai class lain, dan ada juga hubungan

terhadap class yang abstrak.

Untuk pertemuan kali ini, kita akan membahas mengenai dua konsep hubungan dari

keterkaitan antar berbagai objek (atau class). Konsep-konsep tersebut adalah:

• Aggregation (agregasi) / Composition (komposisi)

• Polymorphism

Aggregation

Jika dalam basis data kita mengenal konsep one-to-many, maka di dalam Java OOP kita

mengenal apa yang disebut sebagai aggregation, di mana kedua konsep tersebut sebenarnya

memiliki maksud yang sama. Aggregation adalah hubungan yang dapat terjadi antar objek yang

bersifat whole-part. Maksudnya adalah, suatu objek dapat berisi atau memiliki objek-objek yang

lainnya, di mana masing-masing objek tersebut dapat memiliki atribut dan methodnya masing-

masing.

Misalnya, sebuah objek mobil dapat terdiri dari beberapa objek lain, seperti: roda, mesin,

spion. Di mana, pengujian dari hubungan semacam ini bisa dilakukan dengan kata “HAS A” (misal:

mobil HAS A mesin, mobil HAS A roda).

Hubungan aggregation (mobil – mesin – roda) di atas dapat dinyatakan dalam bentuk class

diagram semacam ini :

Page 2: Polymorphism Aggregation

Untuk cara penggunaannya, kita lihat contohnya langsung saja dalam listing program berikut

ini :

1. Pada contoh kali ini kita bertujuan akan membuat suatu objek mobil, di mana objek

mobil tersebut mempunyai 2 objek lain yang melekat kepadanya, yaitu roda dan mesin.

Sehingga, pertama-tama yang harus kita lakukan adalah membuat dahulu class-class

yang nanti objeknya akan mempunyai hubungan yang bersifat whole-part dari class lain.

Misalnya adalah class roda dan class mesin merupakan whole-part dari class mobil.

2. Buat class yang menjadi class yang akan menggunakan objek dari kedua class di atas,

misal class mobil. Di mana class mobil tersebut tentu saja mempunyai method dan

atribut yang berbeda dari kedua class sebelumnya.

3. Lalu terapkan konsep aggregation dalam ketiga class yang telah dibuat tersebut, dengan

cara membuat objek dari class roda dan class mesin di dalam badan program class

mobil.

Page 3: Polymorphism Aggregation

4. Buat class tester-nya dan buat objek dari class mobil.

5. Berikan nilai pada setiap atribut yang ada, melalui mutator yang sudah disediakan.

6. Cetak hasilnya!

(clue: pengambilan nilai kembalian bisa dilakukan dengan cara seperti ini)

Suatu class dikatakan memiliki hubungan aggregation (agregasi) apabila class tersebut

berisi sebuah objek dari class lain. Agregasi secara umum menunjukkan suatu hubungan one-to-

many atau dikenal dengan istilah whole-part.

Sama seperti konsep inheritance, abstract class, dan interface, aggregation juga mempunyai

keuntungan reusability dengan menerapkannya. Namun ada yang membedakan dari ketiga konsep

yang telah kita pelajari sebelumnya dengan aggregation, yaitu pada ketiga konsep sebelumnya

semua hubungan terjadi pada tingkat class, namun ini tidak berlangsung pada konsep aggregation.

nama class menjadi “tipe

data” dari variabel objek di

class lainnya

Dari variabel yang sudah

dideklarasikan, dibuat

objeknya secara langsung

pada class yang bersangkutan

Page 4: Polymorphism Aggregation

Pada konsep aggregation semua hubungan berlangsung pada tingkatan objek (bisa dilihat dari code

pada langkah 3 di atas).

Analisa kasus :

• Dari kasus mobil – roda – mesin di atas, apakah kondisi hubungan tersebut merupakan

sebuah keharusan ada? Dalam kata lain, apakah sebuah objek mobil akan yang tidak

mempunyai ban dan mesin bisa tetap menjadi sebuah objek mobil?

• Jika merupakan suatu keharusan, coba cari contoh kasus lain yang bukan? Begitu pula

sebaliknya?

Composition

Composition sebenarnya hanyalah merupakan suatu bentuk khusus dari aggregation. Di

mana yang membedakan adalah, dalam konsep composition suatu bagian dari class tidak dapat

berdiri sendiri tanpa adanya class lain.

Misalnya, sebuah objek buku harus terdiri dari objek seperti : kertas_halaman, dan sebuah

objek buku dapat terdiri dari : kertas_sampul dan tali_pembatas_buku (lihat perbedaannya antara

dapat dan harus). Pengujian dari hubungan semacam ini tetap bisa dilakukan dengan kata “HAS A”.

Hubungan aggregation (mobil – halaman – sampul) di atas dapat dinyatakan dalam bentuk

class diagram semacam ini :

Suatu class dikatakan memiliki hubungan composition (komposisi) apabila class tersebut

berisi sebuah objek dari class lain, DAN class tersebut tidak dapat berdiri sendiri tanpa adanya

class lain.

Untuk latihan :

1. Buat source code dari class diagram berikut :

Perhatikan

perbedaannya

dengan diagram

composition...

Page 5: Polymorphism Aggregation

dengan :

• NIP bertambah sesuai bertambahnya objek dari class Pekerja.

• Membuat juga class testernya, di mana di dalam class tester tersebut akan dilakukan

pembuatan objek dari class SerikatPekerja.

• Lakukan proses pencetakan data dalam class tester-nya.

2. Buat program dari contoh kasus class DektopPC, di mana dari suatu DekstopPC bisa memiliki

objek-objek dari class lain berupa :

a. 1 buah processor

b. 2 buah RAM

c. 1 buah harddisk

(dari kesemua class tersebut, class manakah yang memungkinkan mempunyai hubungan

composition?)

Polymorphism

Polymorphism refers to the ability of two or more objects belonging to different classes to

respond to exactly the same message (method call) in different class-specific ways (Apress –

Beginning Java Objects). Dari pengertian tersebut, polymorphism dapat didefinisikan dengan

penggunaan lebih dari satu method dengan nama yang sama (pembedanya adalah berdasarkan

jumlah dan jenis parameter yang didefinisikannya).

Polymorphism bisa dibangun dengan menerapkan :

• Overiding : mendefinisikan method dengan nama sama pada class yang berbeda

• Overloading : mendefinisikan method dengan nama sama dalam satu class.

Konsep overloading, sudah sering kita gunakan dalam penggunaan constructor. Sedangkan

konsep overiding, dapat kita manfaatkan dalam beberapa kasus inheritance, di mana menginginkan

Page 6: Polymorphism Aggregation

penamaan method dengan nama sama namun berbeda dalam impelementasinya, atau dalam kata

lain dalam penggunaan interface.

..... namun polymorphism tidak hanya berperan hingga sebatas ini saja .....

Dari pengertian lain, polymorphism is a special property of Java wherein it can automatically

apply the proper methods to each object regardless of what sub class the object came from (JEDI –

Student’s Manual). Dijelaskan dari pengertian tersebut bahwa, polymorphism dapat berperan untuk

penerapan reusability lebih mudah ketika menerapkan proses penurunan class. Atau dengan kata

lain, dengan polymorphism, reference type dapat merupakan superclass dari object type yang

digunakan :

Semisal kita mempunyai superclass Animal, di mana superclass tersebut memiliki beberapa

subclass, yaitu class Dog, Cat, dan Horse. Biasanya kita membuat objek dengan cara semacam ini :

( dengan deklarasi semacam ini akan menghasilkan

objek Dog dari reference variable class Dog )

Page 7: Polymorphism Aggregation

Namun dengan polymorphism, kita bisa mengubah proses pembuatan objek yang

merupakan dari subclass-nya menjadi :

( dengan deklasrasi semacam ini akan menghasilkan

objek Dog dari reference variable class Animal )

Analisa kasus :

• Lalu apa bedanya dengan cara deklarasi yang biasa kita gunakan?

• Apa gunanya deklarasi dengan cara semacam ini?

Memang tidak terlalu terlihat kemudahannya, tapi kalau kita memanfaatkannya secara

berkali-kali, atau dengan penggunaan array, maka hasilnya adalah :

Jika kita menggunakan konsep polymorphism dengan cara semacam ini, terlihat

keuntungannya bahwa kita tidak perlu mendeklarasikan setiap objek untuk menerapkan method dari

class Animal dengan lebih leluasa.

Deklarasi array dalam Java

Page 8: Polymorphism Aggregation

Untuk latihan : Coba buat program dari class utama Animal (seperti contoh di atas), dengan

ketentuan :

• Ada 4 buah class : Animal, Dog, Cat, dan Wolf.

• Class Animal mempunyai method : eat( ) dan roam( ).

• Misal :

• Class Dog, Cat, dan Wolf cukup melakukan override method terhadap class Animal.

• Buat class tester-nya (bisa memanfaatkan array ataupun tidak).

..... sudah cukup reusable? Meskipun Anda telah merasa sudah cukup,

namun polymorphism masih bisa melakukan peranannya secara lebih .....

• Dari listing program yang telah dibuat sebelumnya (Animal), coba buat satu class lagi,

sebagai berikut :

• Kemudian ubah class tester-nya sebagai berikut :

Page 9: Polymorphism Aggregation

• Amati apa yang terjadi....

Dari listing program di atas, bisa lebih terlihat dari kegunaan polymorphism dalam

penerapannya secara Object Oriented. Dalam kasus dunia nyata, jika kita bekerja sebaga tim, kita

bisa mempercayakan proses pembuatan berbagai class kepada teman satu tim kita dengan

mudahnya, jika class tersebut telah merupakan subclass dari superclass yang menjadi class utama

dalam pembuatan program tersebut, namun proses tersebut tidak perlu mengubah class-class yang

telah kita buat sebelumnya.

Untuk latihan :

1. Bisa kalian latihkan dari contoh latihan-latihan pada modul 4 : INHERITANCE atau modul 5 :

ABSTRACT & INTERFACE (karena pada dasarnya konsep polymorphism merupakan

kompleksitas dari konsep hubungan yang dapat terjadi antara subclass dan superclass-nya).

2. Tambahan kasus soal turunan :

a. Superclass : GamingConsole.

b. Subclass : HomeGamingConsole, PortableGamingConsole.

c. Objek : XBOX, WII ; PSP, NDS.