(CCC-110)
MODUL 08
OBJECT MODELLING USING UML
DISUSUN OLEH
MALABAY,S.KOM,M.KOM
UML adalah bahasa bergambar yang digunakan untuk membuat cetak biru
perangkat lunak. UML dapat digambarkan sebagai bahasa pemodelan visual
tujuan umum untuk memvisualisasikan, menentukan, membangun, dan
mendokumentasikan sistem perangkat lunak. Meskipun UML umumnya
digunakan untuk memodelkan sistem perangkat lunak, UML tidak dibatasi dalam
batasan ini. Ini juga digunakan untuk memodelkan sistem non-perangkat lunak
juga. Misalnya, aliran proses di unit manufaktur, dll. UML bukanlah bahasa
pemrograman tetapi alat dapat digunakan untuk menghasilkan kode dalam
berbagai bahasa menggunakan diagram UML. UML memiliki hubungan langsung
dengan analisis dan desain berorientasi objek. Setelah beberapa standarisasi, UML
telah menjadi standar OMG.
Model konseptual UML dapat dikuasai dengan mempelajari tiga elemen utama
berikut -
Blok penyusun UML
Aturan untuk menghubungkan blok bangunan
Mekanisme umum UML
UML cukup powerful untuk merepresentasikan semua konsep yang ada dalam
analisis dan desain berorientasi objek. Diagram UML adalah representasi dari
konsep berorientasi objek saja. Oleh karena itu, sebelum mempelajari UML,
penting untuk memahami konsep OO secara detail.
Ini sejalan dengan cetak biru yang digunakan di bidang lain, dan terdiri dari
berbagai jenis diagram. Secara agregat, diagram UML menggambarkan batas,
struktur, dan perilaku sistem dan objek di dalamnya.
Memulai dengan rangkaian singkat dari dua domain desain yang coba jembatani:
pertama model kelas berorientasi objek seperti yang direpresentasikan dalam
UML, dan kedua model database relasional.
Model Kelas di UML adalah artefak utama yang diproduksi untuk mewakili
struktur logis dari sistem perangkat lunak. Ini menangkap persyaratan data dan
perilaku objek dalam domain model. Teknik untuk menemukan dan menguraikan
model tersebut berada di luar cakupan artikel ini, jadi akan mengasumsikan
keberadaan model kelas yang dirancang dengan baik yang memerlukan pemetaan
ke database relasional.
Model Kelas
Kelas adalah entitas logika dasar di UML. Ini mendefinisikan data dan perilaku
unit struktural. Kelas adalah templat atau model tempat instance atau objek dibuat
pada waktu proses. Saat mengembangkan model logis seperti hierarki struktural di
UML, secara eksplisit menangani kelas. Saat bekerja dengan diagram dinamis,
seperti diagram urutan dan kolaborasi, bekerja dengan objek atau instance kelas
dan inter-tindakannya pada saat run-time. Prinsip penyembunyian atau
enkapsulasi data didasarkan pada efek lokalisasi. Kelas memiliki elemen data
internal yang menjadi tanggung jawabnya. Akses ke elemen data ini harus melalui
perilaku atau antarmuka kelas yang terekspos. Kepatuhan pada prinsip ini
menghasilkan kode yang lebih dapat dipelihara.
Tingkah laku
Perilaku ditangkap dalam model kelas menggunakan operasi yang ditentukan
untuk kelas tersebut. Operasi mungkin terlihat secara eksternal (publik), terlihat
oleh anak-anak (dilindungi) atau tersembunyi (pribadi). Dengan menggabungkan
data tersembunyi dengan antarmuka yang dapat diakses publik dan manipulasi
data yang tersembunyi atau dilindungi, desainer kelas dapat membuat unit
Agregasi adalah bentuk asosiasi yang menyiratkan kumpulan satu kelas objek di
dalam kelas lain. Komposisi adalah bentuk agregasi yang lebih kuat yang
menyiratkan bahwa satu objek sebenarnya terdiri dari objek lain. Seperti
hubungan asosiasi, ini menyiratkan atribut kelas yang kompleks yang memerlukan
pertimbangan cermat dalam proses pemetaan ke domain relasional. Sementara
kelas mewakili templat atau model dari mana banyak contoh objek dapat dibuat,
sebuah objek pada waktu berjalan memerlukan beberapa cara untuk
mengidentifikasi dirinya sendiri sehingga objek terkait dapat bertindak atas contoh
objek yang benar. Dalam bahasa pemrograman seperti C ++, penunjuk objek
dapat diedarkan dan ditahan untuk memungkinkan akses objek ke instance objek
unik. Namun seringkali, sebuah objek akan dihancurkan dan mengharuskannya
untuk dibuat kembali seperti semula selama contoh aktif terakhirnya. Objek-objek
ini memerlukan mekanisme penyimpanan untuk menyimpan status internal dan
asosiasi ke dalam dan untuk mengambil status tersebut sesuai kebutuhan.
Model Relasional
Model data relasional telah ada selama bertahun-tahun dan memiliki rekam jejak
yang terbukti memberikan kinerja dan fleksibilitas. Ini pada dasarnya ditetapkan
berdasarkan dan memiliki unit fundamental 'tabel', yang terdiri dari satu set
'kolom' atau lebih, yang masing-masing berisi elemen data.
Tabel dan Kolom: tabel relasional adalah kumpulan dari satu atau lebih kolom
yang masing-masing memiliki nama unik dalam konstruksi tabel. Setiap kolom
didefinisikan sebagai tipe data dasar tertentu, seperti angka, teks atau data biner.
Definisi tabel adalah templat dari mana baris tabel dibuat, setiap baris menjadi
instance dari kemungkinan contoh tabel. Model relasional hanya menawarkan
model akses data publik. Semua data sama-sama diekspos dan terbuka untuk
proses apa pun untuk memperbarui, mengajukan kueri, atau memanipulasinya.
Penyembunyian informasi tidak diketahui.
Tingkah laku
Perilaku yang terkait dengan tabel biasanya didasarkan pada aturan bisnis atau
logika yang diterapkan ke entitas itu. Batasan dapat diterapkan ke kolom dalam
bentuk persyaratan keunikan, batasan integritas relasional ke tabel / baris lain,
nilai yang diizinkan, dan tipe data.
Pemicu memberikan beberapa perilaku tambahan yang dapat dikaitkan dengan
entitas. Biasanya ini digunakan untuk menegakkan integritas data sebelum atau
setelah pembaruan, penyisipan dan penghapusan. Prosedur tersimpan basis data
menyediakan sarana untuk memperluas fungsionalitas basis data melalui ekstensi
bahasa kepemilikan yang digunakan untuk membangun unit fungsional (skrip).
Prosedur fungsional ini tidak memetakan langsung ke entitas, juga tidak memiliki
hubungan logis dengannya. Navigasi melalui kumpulan data relasional didasarkan
1. Kelas Model
Pertama akan menganggap sedang merekayasa skema database relasional baru
dari model kelas yang telah dibuat. Ini jelas merupakan arah termudah karena
model tetap di bawah kendali dan dapat mengoptimalkan model data relasional ke
model kelas. Dalam dunia nyata, mungkin perlu melapisi model kelas di atas
model data lama - situasi yang lebih sulit dan tantangannya sendiri. Untuk
pembahasan kali ini akan difokuskan pada situasi pertama. Minimal, model kelas
harus menangkap asosiasi, pewarisan, dan agregasi antar elemen.
Setiap hierarki kelas memiliki satu tabel terkait yang berisi semua atribut yang
diwariskan untuk semua elemen - oleh karena itu tabel ini adalah gabungan dari
setiap kelas dalam hierarki. Misalnya, Person, Parent, Child, dan Grandchild
semuanya dapat membentuk hierarki kelas tunggal, dan elemen dari masing-
masing akan muncul dalam tabel relasional yang sama;
Setiap kelas dalam hierarki memiliki tabel terkait hanya atribut yang dapat diakses
oleh kelas itu (termasuk atribut yang diwariskan). Misalnya, jika Anak diwarisi
dari Orang saja, maka tabel akan berisi elemen Orang dan Anak saja;
Setiap generasi dalam hierarki kelas memiliki tabel yang hanya berisi atribut
aktual generasi tersebut. Misalnya, Child akan memetakan ke satu tabel dengan
atribut Child saja
Ada beberapa kasus yang harus dibuat untuk setiap pendekatan, tetapi saya
menyarankan yang paling sederhana, paling mudah untuk dipertahankan dan lebih
sedikit rawan kesalahan adalah pilihan ketiga. Opsi pertama memberikan kinerja
terbaik saat run-time dan yang kedua adalah kompromi antara yang pertama dan
terakhir. Opsi pertama meratakan hierarki dan menempatkan semua atribut dalam
satu tabel - nyaman untuk pembaruan dan pengambilan kelas apa pun dalam
hierarki, tetapi sulit untuk diautentikasi dan dipelihara. Aturan bisnis yang terkait
dengan baris sulit diterapkan, karena setiap baris dapat dibuat instance-nya
sebagai objek apa pun dalam hierarki. Ketergantungan antar kolom bisa menjadi
sangat rumit. Selain itu, pembaruan untuk setiap kelas dalam hierarki akan
berpotensi memengaruhi setiap kelas lain dalam hierarki, karena kolom
ditambahkan, dihapus, atau diubah dari tabel.
Opsi ketiga lebih akurat mencerminkan model objek, dengan setiap kelas dalam
hierarki dipetakan ke tabel independennya sendiri. Pembaruan untuk orang tua
atau anak-anak dilokalkan di ruang yang benar. Pemeliharaan juga relatif lebih
mudah, karena setiap modifikasi entitas juga dibatasi pada tabel relasional
tunggal. Sisi negatifnya adalah kebutuhan untuk membangun kembali hierarki
pada waktu proses untuk membuat ulang status kelas anak secara akurat. Objek
Anak mungkin memerlukan variabel anggota Person untuk mewakili model
asalnya. Karena keduanya memerlukan pemuatan, dua panggilan database
diperlukan untuk menginisialisasi satu objek. Saat hierarki semakin dalam,
dengan lebih banyak generasi, jumlah panggilan database yang diperlukan untuk
menginisialisasi atau memperbarui satu objek meningkat. Penting untuk
memahami masalah yang muncul saat memetakan warisan ke model relasional,
sehingga dapat memutuskan solusi mana yang tepat.
Dalam kasus komposisi, penggunaan kunci asing adalah wajib, dengan batasan
tambahan bahwa pada penghapusan bagian induk juga harus dihapus. Logikanya,
ada juga implikasi dengan komposisi bahwa kunci utama dari bagian tersebut
merupakan bagian dari kunci utama dari keseluruhan - misalnya, kunci utama
Orang dapat terdiri dari ID dokumen pengenalnya. Dalam praktiknya ini akan
merepotkan, tetapi hubungan logisnya benar.
C. Latihan
1. Bahasa standar untuk menentukan, memvisualisasikan, membangun, dan
mendokumentasikan artefak sistem perangkat lunak,disebut ?
2. Mekanisme mengikat data menjadi satu dan menyembunyikannya dari
dunia luar, disebut ?
D. Kunci Jawaban
1. Unified Modeling Language.
2. Enkapsulasi
E. Daftar Pustaka
1. Roger S. Pressman, Software Engineering A Practioner's Apporach, 2014
2. Ian Sommerville, Software Engineering (10th Edition), 2015
3. https://www.omg.org/news/meetings/workshops/presentations/eai_2001/tutoria
l_monday/tockey_tutorial/1-Intro.pdf
4. https://www.uml.org/what-is-uml.htm
5. https://www.lucidchart.com/pages/what-is-UML-unified-modeling-language
6. https://www.tutorialspoint.com/uml/uml_overview.htm
7. https://sparxsystems.com/resources/uml_datamodel.html