- LINK dan ASOSIASI
Seperti juga pada konsep objek dan kelas yang kadang membingunkan, konsep link serta bagi para yang awam agak membingungkan, sebab itu dalam subbab ini, sebelum kita melangkah lebih jauh ke penggambaran obyek – oebyek serta hubungan satu sama lain, kita alam berusaha memahami konsep – konsep yang serupa tapi tak sama.
LINK adalah hubungan fisis atau konseptual antar obyek. Misalnya , Adi Nugroho kuliah di STMIK AKAKOM. Asosiasi dideskripsikan sebagai kumpulan link yang menghubungkan obyek – obyek pada kelas yang sama. Asosiasi dan link umumnya disebutkan sebagai kata kerja.
Asosiasi dan link umunya memiliki 2 arah. Penamaannya biasanya ke satu arah (misalnya Adi Nugroho menulis buku) tetapi sebenarnya pengertiannya bisa ke arah sebaliknya. (buku ditulis Adi Nugroho).
Link memperlihatkan hubungan dua (atau lebih) obyek. Semua hubungan antar kelas sebaiknya dimodelkan sebagai sebagai asosiasi; juga dalam perancangan program. Kita mesti pahamai bahwa asosiasi bukan hanya konstruksi basis data, melainkan hubungan relasi basis data. Agar lebih jelas, gambar dibawah ini memperlihatkan asosiasi satu – satu suatu propinsi yang memiliki ibukota tertentu.
Asosiasi dan link tidak terbatas pada hubungan satu ke satu seperti pada gambar diatas, tetapi bisa juga diterapkan pada hubungan – hubungan yang lain , seperti Binary, Temary seta N-ry, mirip seperti pada perancangan basis data dengan Entity-Relationship Diagram (ERD) yang digunakan dalam basis data relasional. Untuk lebih memahami konsep asosiasi dengan hubungan N-ary.
- MULTIPLISITAS
Multiplisitas menunjukan jumlah suatu obyek yang bisa berhubungan dengan obyek yang lain. Multiplisitas biasanya ditunjukan dengan “satu” serta “banyak ”, tetapi secara khusus dapat ditunjukan pula dengan bilangan interger lebih besar atau sama dengan no. contoh –contoh bilangan yang bisa digunakan adalah “1” (satu dan hanya satu), “1=1”(satu atau lebih),”1-4” (satu hingga empat), “1,3,5”(satu atau tiga atau lima) dan seterusnya.
Disamping itu, dalam UML, juga dikenali symbol – symbol khusus yang dapat diterapkan dalam multiplisitas ini. Lingkaran berisi menunjukkan “banyak” (nol atau lebih), sedangkan lingkaran kosong berarti “bukan keharusan” (opsional), yaitu nol atau satu. Garis tanpa lingkaran (baik kosong maupun berisi) menunjukkan hubungan satu-satu. Lihat gambar dibawah ini yang menunjukan contoh multiplisitas.
menunjukan bahwa suatu perusahaan pasti memiliki “banyak” karyawan sedangkan seorang pasti pasti berkerja di suatu perusahaan tertentu. Multiplikasi bergantung pada bagaimana kita menentukan batasan masalah. Jangan terlalu memusingkan masalah Multiplikasi ini pada tahap awal pengembangan perangkat lunak. Pertama tentukan obyek, kelas, asosias/ link kemudian baru tentukan multiplikasi-nya.
Pada umumnya multiplikasi (seperti pada kardinalitas yang kita jumpai pada ERD) memiliki nilai “satu” atau “banyak”, tetapi tidak tertutup kemungkinan berupa angka – angka seperti yang telah dijelaskan sebelumnya.
- KEGUNAAN ASOSIASI
Pada dasarnya, konsep asosiasi bukanlah konsep yang baru. Ia dikenali sebagai relasi pada perancangan basis data dengan Entity-Relationship Diagram (ERD). Pada gilirannya, beberapa lunak berorientasi obyek seperti pada C++, java serta Smlltalk, secara eksplisit mendukung asosiasi. Selain itu, saat kita melakukan perancangan basis data, asosiasi –asosiasi penting dalam menentukan jenis-jenis fieldnya. Sebab itu , peda tempatnyalah kita mempelajari asosiasi pada perancangan perangkat lunak/system berorientasi obyek.
- ATRIBUT LINK
Atribut adalah property yang bisa digunakan sebagai pembeda antar obyek dalam suatu kelas tertentu. Ini mirip dengan konsep atribut dalam entitas (entity) dalam perancangan basis data dengan ERD (Entity-Relationship Diagram ) . dengan cara yang sama atribut link adalah atribut yang muncul pada suatu link. Gambar dibawah ini memperlihatkan atribut yang muncul pada link sekaligus memperlihatkan multiplikasiyang muncul pada hubungan antar obyek.
Patut dicatat juga bahwa kita menuliskan kata benda Manager dan Pekerja pada asosiasi “unary” satu ke banyak yang terjadi pada kelas karyawan. Ini berarti pada kelas karyawan akan terjadi instansiasi kelas menjadi obyek Manager dan Pekerja dimana seorang Manager bisa memimpin lebih dari satu (banyak) obyek perkerja dimana keduanya (Manager dan Pekerja) masuk pada kelas yang sama, yang dinamakan kelas karyawan. Ini sesuai dengan kenyataan di lapangan bahwa Manager dan Perkerja adalah karyawan suatu perusahaan tertentu.
- KUALIFIKASI
Dalam suatu kasus tertentu (misalnya pada asosiasi Ternary, yaitu, asosiasi yang terjadi pada lebih dari 2 obyek) munkin saja kita ingin mengurangi multiplikasi yang muncul untuk mengurangi tingkat kerumitan asosiasi serta untuk memperjelas permahaman asosiasi tertentu.
Hal yang sama(kualifikasi) juga kadang-kadang diperlukan untuk hubungan asosiasi “satu ke banyak” pada asosiasi binary yang umum kita jumpai. Lihat gambar dibawah ini dimana kita melakukan kualifikasi untuk hubungan Direktori dan berkas (file) dalam system penyimpanan berkas dalam hardisk computer.
Setiap direktori atau folder memilki banyak berkas (file) dimana suatu berkas pasti dimiliki oleh suatu directory tertentu . dalam konteks directory/folder. Nama berkas menspesifikasi suatu berkas fisik yang ada di hardisk secara unik. Direktory ditambah nama berkas menunjuk suatu berkas tertentu dihardisk. Kulafiskasi mengurangi multiplisitas efektif dari asosiasi “satu ke banyak menjadi satu ke satu. Setiap direktori memiliki banyak berkas dan setiap berkas pasti memiliki nama dierktori yang unik
Dalam UML, Nama berkas diatas dinamakan sebagai qualifter. Kualifikasi meningkatkan pemahaman. Lebih informative jika kita katakana bahwa meningkatkan direktori dan nama berkas merujuk pada berkas fisik tertentu dibandinkan jika kita mengatakan bahwa setiap directori memiliki banyak berkas. Sesuai standar UML, qualifter digambarkan dengan kotak kecil yang menempel pada kotak besar yang mendeskripsikan suatu kelas tertentu.
- AGRESIASI
Agregasi adalah hubungan “bagian-daro” atau “bagian ke keseluruhan”. Suatu kelas atau obyek mungkin memiliki/bisa dibagi menjadi kelas/obyek tertentu dimana kelas/obyek yang disebutkan kemudian merupakan bagian dari kelas/obyek yang terdahulu. Agregasi adalah suatu bentuk khusu dari suatu asosiasi. Lihat gambar dibawah ini menunjuk agregasi
Bisa kita perhatikan bahwa suatu PC(personal computer) bisa terbagi(baca: teragregasi) atas bagian-bagiannya (yaitu: monitor, system box, mouse, keyboard) sert system box bisa terbagai(bacajuga : teragregasi) atas bagian-bagiannya(yaitu:chasis, CPU, RAM, kipas pendingin). Inilah dinamakan agregasi bertingkat.
Perlu kita perhatikan bahwa hubungan PC adalah satu ke banyak dengan notasi 1+ . ini berarti setiap PC bisa memiliki monitor lebih dari satu namun harus miemiliki (minimal 1) monitor. Sedangkan hubungan PC dengan mouse adalah satu ke satu (opsional) yang berarti setiap PC dimunkinkan memiliki satu dan hanya satu mouse. Tetapi juga PC tertentu tidak menggunakan mouse. Tanda jajaran genjang kecil menujukan asosiasi agregasi.
Dari literatif kita dapat mengenal 7 jenis agregasi . 7 jenis itu adalah :
a. komposisi keseluruhan-bagiannya. Dalam bentuk agregasi ini bagian harus memiliki hubungan spesifik atau hubungan structural. Misalnya adalah ban adalah bagian dari mobil, geometri alitis adalah bagian dari matematika. Frame adalah bagian dari gulungan film.
b. Komposisi Materia-Obyek. Dalam bentuk agregasi ini, bagian kehilangan identitasnya saat ia digunakan untuk menyusun sesuatu yang lebih besar. Misalnya mentega, gula ,telur bagian dari roti. Dalam generalisasi ini, kita tidak dapat lagi memisahkan mentega dari gula, mentega dari tepung, tepung dari telur serta telur dari gula. Semunya bercampur pada apa yang biasa kita sebut roti
c. Komposisi Posri-Obyek. Dalam bentuk agregasi ini, bagian memiliki bentuk yang sama dengan keseluruhan, hanya porsinya lebih kecil. Misalnya centimeter adalah agregasi dari meter (ukuran panjang)
d. Komposisi Tempat-Are. Dalam agregasi terlihat lokasi atau tempat. Misalnya bandung adalah bagian dari jawa barat.
e. Komposisi Koleksi-Anggota. Bentuk agregasi ini adalah bentuk khusus dari agregasi sebelumnya (nomor d0 tetapi agregasi jenis ini tidakklah harus berupa hubungan lokasi. Misalnya adalah Ronaldo adalah anggota tim sepak bola Brazil.
f. Komposisi Pemuat-Yang Dimuat. Bentuk agregasi ini, seperti ditunjukan oleh namanyam, menunjukan hubungan apa yang dimuat sesuatu dengan pemuatnya. Misalnya pada perjalanan ke Jakarta adi adalah penumpang kereta api.
g. Komposisi Anggota-Pasangan. Bentuk agregasi ini adalah bentuk agregasi dimana suatu obyek adalah merupakan pasangan obyek yang lain. Misalnya John Lennon dan Paul McCartney adalah pasangan pencipta lagu – lagu the beatles.
Pada dasarnya suatu agregasi dapat digolongkan kepada satu atau lebih jenis agregasi. Misalnya tuts piano dengan piano memiliki cirri-ciri agregasi nomor 1, 3, 5. kemudian, mungkin juga ditemukan agregasi bertingkat. Suatu agregasi bagian dari sesuatu dapat pula memiliki bagian-bagian yang lainnya.
- GENERALISASI DAN PEWARISAN
Generalisasi dan pewarisan adalah konsep utama dari analisis serta perancangan berorientasi obyek. Generalisasi dan pewarisan memungkinkan yang terutama penggunaan komponen-komponen tertentu pada suatu perangkat lunak aplikasi secara bersamaan. Selain itu, konsep ini juga memungkinkan penulisan kode program yang semakin sedikit.
Generalisasi dan pewarisan adalah suatu cara yang sangat berdaya-guna untuk berbagi pa yang dimiliki suatu kelas (atau obyek) bagi kelas-kelas(atau obyek-obyek) yang lain. Misalkan kita ambil contoh kelas kendaraan bermotor; mobil trukdan lainnya bisa saling berbagi atribut yang sama.misalnya atribut model, tahun dan lainnya. Gambar dibawah ini menunjukan fenomena
Generalisasi adalah relasi ke atas beberapa subkelas kepada superkelas diatasnya. (ditunjuk dengan tand segitiga). Dalam contoh yang terlihat geralisasi berarti menyimpan atribut – atribut / data-data yang sama untuk mobil dan truck kedalam kelas yang lebih tinggi tingkatannya(kendaraan). Atribut-atribut yang dimiliki secara bersamaan oleh kelas truck dan mobil adalah nomor kendaran, nama kendaraan, tahun pembuatan harga.
Kelas yang lebih tinggi dinamakan superkelas(atau pendahulu/ancestory) sedang kelas yang lebih bawah dinamai subkelas(atau turunan.descendent) stuktur pewarisan juga terlihat disini. Kelas yang lebih rendah mewarisi semua atribut yang dimiliki kelas yang lebih tinggi. Tetapi selain mewarisi atribut-atribut dari kelas yang lebih tinggi, kelas yang lebih rendah juga memiliki atribut-atribut yang membedakan terhapda kelas-kelas yang sederajat denganya. Missal (truk dengan mobil. Truk memilki atribut Tipe kabin, kapasitas.sedangkan kelas mobil memiliki atribut tambahan yaitu jumlah penumpang, jumlah pintu) ini dinamakan spesialisasi spesialisai inilah yang menjadi pembeda antara kelas mobil serta kelas truk.
Dari keterangan diatas dapat ditarik bahwa generalisasi adalah prosses “bootom-up”(bawah ke atas) sedangkan spesialisasi adalah proses “top-bottom” (atas ke bawah) dimana pewarisannya adalah berbagi atribut yang sama diantara kelas dibawahnya(mobil dan truk) dalam kelas yang lebih atas (kendaraan). Perlu diperhatikan bahwa pewarisan memungkinkan atribut-atribut yang sama cukup dituliskan sekali saja pada superkelas dan tidak perlu ditulis ulang pada subkelas yang mewarisi atribut-atribut yang sama itu.
Instansiasi suatu kelas adalah instansiasi dari semua kelas pendahulu kelas yang bersangkutan. Lebih jauh semua atribut serta fungsi kelas pendahulu harus diwariskan pada subkelas dibawahnya. Kelas yang merupakan turunan tidak dapat mengabaikan atribut serta fungsi yang diwarisinya. Tetap subkelas mungkin mungkin mendefinisikan ulang atribut serta operasi yang diwarisi untuk alasan tertentu.
Subkelas mungkin menambahkan atribut serta operasi baru selain yang diwarisi dari kelas yang sebelumnya. Jika ini terjadi maka dikatakan terjadi perluasan (extention)kelas. Contohnya adalah penamabahan atribut jumlah penumpang serta jumlah pintu pada kelas mobil yang merupakan subkelas dari kendaraan.
Suatu kelas mungkin juga memberikan batasan pada atribut yang diwarisi dari suatu kelas yang sebelumnya . misalnya kelas lingkaran adalah kelas elips dengan sumbu mayor dan minor yang berukuran sama. Dalam hal ini, atribut serta fungsi yang diwarisi dapat diberi nama lain yang lebih repsentatif. Misalnya sumbu lingkaran kita namai ulang sebagai diameter.
Anggota kelas dapat didefinisikan dengan 2 cara : dengan aturan secara implicit dan dengan enumrasi secara eksplisit. Aturan mendefinisikan kondisi untuk keanggotaan dalam belas; semua obyek yang memiliki nilai yang sesuai dengan aturan tertentu adalah milik suatu kelas. Polygon, segitiga, dsb didefinisikan berdasarkan aturan / hokum matematika tertentu. Hal ini berjalan dengan baik pada obyek-obyek yang mengalami nilai-nilai tetapi tidak berjalan dengan baik untuk obyek-obyek yang mengalami perubahan-perubahan sepanjang waktu. Kebanyakan bahasa pemograman berorientasi obyek mempertimbangkan obyek sebagai unit diskret dengan property eksplisit yang menunjukan kelas-kelas darimana suatu obyek dihasilkan. Dalam hal ini , obyek-obyek memiliki keanggotaan kelas berdasarkan atribut apa yang dimilikinya. Pada definsi eksplisit, operasi serta atribut-atribut dapat diwariskan secara terbatas. Batasan menunjukan bahwa suatu subkelas berangkali tidak mewarisi semua operasi serta atribut dari kelas pendahulunya.
- PENGGUNAAN GENARILASI
Hubungan generalisasi memiliki cirri-ciri yang membedakan dengan hubungan / realasi yang lain. Cirri-cir itu adalah:
- ciri structural.
· Atribut. Kelas turunan memiliki semua atribut serta metoda dari kelas pendahulu. Sebagai contoh kelas karyawan akan memiliki atribut umut serta funsi makan dan minum karena ia adalah kelas turunan dari kelas manusia
· Hubungan bukan generalisasi. Kelas turunan akan memiliki hubungan bukan genealisasi dari kelas pendahulu. Sebagai contoh jika kelas karyawan adalah turunan dari kelas manusia. Maka kita menambahkan hubungan perkawinan antara 2 manusia. Kita juga akan memiliki hubungan perkawinan pada kelas karyawan sebab kelas karyawan merupakan turunan dari kelas manusia. Ini jelas keliru karena tidak semua obyek instansiasi karyawan sudah menikah . untuk itu kita harus berhati-hati meletakan suatu atribut atau fungsi di superkelas atau sbukelas
- Ciri matematis
· Antisimetri. Jika B adalah turunan dari obyek A maka obyek B mungkin saja tidak memiliki hubungan generalisai dengan A. (obyek B bukan turunan dari obyek A). Misalnya semua karyawan adalah manusia tetapi tidak semua manusia adalah karyawan.
· Transitivity. Jika obyek A adalah turunan dari B dan obyek B adalah turunan dari obyek C maka obyek A adalah turunan dari obyek C
- Ciri perilaku
· Generalisasi tanpa poliferfisme. Pada generalisasi tanpa poliferfisme semua metoda yang disediakan oleh kelas pendahulu juga akan digunakan oleh kelas turunannya.( poliferfisme adalah suatu pendefinisian ulang sebuah fungsi pada suatu kelas dimana fungsi itu didapat lewat struktur pewarisan kelas induknya.
· Generalisasi dengan poliferfisme. Pada generalisasi tanpa poliferfisme semua metod yang disediakan oleh kelas pendahulu juga akan digunakan oleh kelas turunannya. Pada generalisasi jenis ini, kelas turunan menyediakan metoda yang terkustomisasi( metoda yang didefiniskan kembali ) yang mengantikan metoda milik kelas pendahulu yang berhubungan.
Generalisasi adalah mekanisme kritis pada paradigma berorientasi obyek sebab menemukan pendahulu-pendahulu dengan benar adalah krusial untuk merancang model yang baik. Sayangnya adalah tidak mudah bagi pengembang yang kurang memiliki pengalaman untuk menentukan apakah suatu merupakan turunan dari kelas yang lailn
Generalisasi sangat berguana baik pada pemodelan konseptual maupun pada implementasi. Generalisasi dan strucktur awal pewarisan berguna untuk menentukan atribut apa yang sama pada beberapa kelas dan sangat berguana saat kita akan menggunakan ulang kode program yang sama.
Bahasa pemograman berorientasi obyek pada umunya mendukung kaidah pewarisan. Pewarisan berguna pada penggunaan ulang kode. Setelah melakukan pemodelan system, pengembang perangkat lunak melihat struktur kelas yang dihasilkan kemudian mencoba mengelompokan kelas kelas yang sama dan menggunakan kode-kode yang sama
- OVERRIDE
Override adalah mendefinisikan ulang atribut-atribut yang bernama sama pada kelas- kelas yang berbeda. Misalkan kita memiliki kelas- kelas sebagai berikut: titik, garis, busur, polygon masing-masing kelas memiliki metoda yang sama yaitu gambar.
Cara pendefinisian suatu metoda yang bernama sama namun secara fungsional berbeda dinamakan override. Override ini adalah implementasi dari konseop poliferfisme yang merupakan salah satu konsep penting pada metodologi penggunaan pewarisan serta untuk berbagi implementasi. Secara ummum untuk hal-hal dibawah ini (diantaranya):
· Override untuk perluasan. Operasi yang baru adalah sama dengan operasi yang diwariskan, kecuali ia ditambahi dengan beberapa perilaku yang baru sering kali mengakibatkan perubahan perilaku tertentu pada atribut baru pada subkelas. Misalnya window memiliki operasi gambar yang mengambar batasan window dari isinya. Window dapat memiliki subkelas yang dinamakan window berlabel yang juga memiliki operasi “gambar dimana oparasi gambar” yang terakhir ini melakukan pengambaran window ditambah penggambaran label
· Override untuk pembatasan. Operasi yang baru dibatasi untuk nilai-nilai tertentu. Misalnya operasi tambah pada kelas himpunan dapat diimplementasikan secara terbatas untuk himpunan integer dengan cara menuliskan operasi “tambah(integer)”.
· Overriding untuk optimalisasi. Operasi-operasi dengan nama yang sama untuk optimalisasi mungkin memiliki strucktur yang internal serta algoritmanya yang berbeda dengan yang ada di kelas pendahulunya. Misalnya operasi pengururtan di kelas pendahulu mungkin diimplementasikan dengan metoda bubble sort sedangkan di kelas turunannya dengan quick aort
- PERWARISAN GANDA (MULTIPLE INHERITANE)
Suatu kelas mungkin mewarisi atribut-atribut lebih dari satu kelas pendahulu. Kelas yang memiliki satu pendahulu dinamai kelas gabungan (join class). Konflik yang terjadi antar kelas mungkin menimbulkan kemendua-an arti (ambiguity) yang harus bisa dipecahkan saat implementasi( sebagai catatan: tidak semua bahasa pemograman berorientasi obyek mendukung pewariswan ganda ini). Sebab itu, implementasi pewarisan ini bergantung pada mendukung-tidaknya bahasa pemograman yang akan digunakan. Kita harus berhati-hati dalam mengimplementasi konsep ganda ini.
Gambar di bawah ini menunjukan . kendaraan ampibi adalah kelas yang mewarisi atribut-atribut , baik dari kendaraan darat dan air. Kendaraan ampibi memiliki ciri yang dimiliki kendaraan darat atau air
- DEPENDENSI
Dependency adalah hubungan dimana perubahan pada suatu kelas akan mempengaruhi kelas yang lin dimana kelas yang terakhir pada kelas yang sebelumnya. Gunakan dependency jika anda ingin memperlihatkan sesuatu yang menggunakan sesuatu yang lainnya. Lebih jauh kita akan gunakan dependency untuk memperlihatkan bahwa suatu kelas menggunakan kelas yang lain sebagai argument dalam operasinya. Perhatikan gambar. Diman filmclip yang akan diputar pada suatu waktu bergantung pada saluran man yang kita akses. Jarang sekali pada waktu yang sama setiap saluran televise menayangkan filmclip yang sama(kecuali acara tertentu contoh upacara 17 agustus memperingati hari kemerdekaan)
No comments:
Post a Comment
Berikanlah Komentar, saran dan Kritik yang membangun "