Lompat ke konten Lompat ke sidebar Lompat ke footer

Pengertian Class Diagram, Kegunaan, dan Contoh Menurut Para Ahli

Pengertian Class Diagram, Kegunaan, dan Contoh Menurut Para Ahli - Class diagram mendeskripsikan jenis-jenis objek dalam system dan berbagai macam hubungan statis yang terdapat di antara mereka.Class diagram juga menunjukan property dan operasi sebuah class dan batasan-batasan yang terdapat dalam hubungan-hubungan objek tersebut.UML menggunakan istilah fitur sebagai istilah umum yang meliputi property dan operasi sebuah class

Gambar 1 menunjukan sebuah model class yang sederhana yang bukan merupakan barang baru bagi mereka yang berkecimpung dalam pemrosesan perintah. Kotak-kotak yang terdapat di dalam diagram merupakan class, yang dibagi menjadi tiga bagian: nama class, atributnya, dan operasinya. Gambar 16-1 juga menunjukan dua macam hubungan antar class: asosiasi dan generalisasi.

Pengertian Class Diagram, Kegunaan, dan Contoh Menurut Para Ahli_
image source: optional.is
baca juga: Pengertian UML, Metode Penggunaan, dan Activity Use Case Diagram

Properti

Properti mewakili fitur-fitur structural dari sebuah class.Sebagai bayangan, Anda dapat menganggap property berhubungan dengan bidang-bidang dalam sebuah class (ruang belajar).

Gambar 1. Sebuah class diagram sederhana_
Gambar 1. Sebuah class diagram sederhana

Properti merupakan sebuah konsep tunggal, tetapi tampak seperti dua notasi yang sedikit berbeda: atribut dan asosiasi. Meskipun mereka tampak berbeda dalam sebuah diagram, mereka sebenarnya adalah hal yang sama.

Atribut

Notasi atribut mendeskripsikan property dengan sebaris teks di dalam kotak class tersebut. Bentuk atribut yang sebenarnya adalah:
visibility name: type multiplicity = default (property-string)
Contoh atribut ini adalah:
name: String[1] = “Untitled” {readOnly}
Hanya name yang diperlukan.
  • Tanda visibility ini menandakan atribut tersebut public (+) atau private (-).
  • Name atribut – bahaimana class tersebut mengacu pada atribut – sama dengan nama bidang dalam sebuah bahasa pemrograman.
  • Type atribut menunjukan sebuah batasan tentang objek apa yang dapat diletakkan dalam atribut tersebut. Anda dapat menganggapnya sebagai jenis bidang dalam sebuah bahasa pemrograman.
  • Default value adalah nili objek yang baru dibuat jika atribut tidak dispesifikasi selama pembuatnnya.
  • (property-string) memungkinkan Anda untuk menunjuk property tambahan untuk atribut tersebut. Pada contoh di atas, penggunaan {readOnly} untuk menunjukan bahwa klien tidak dapat memodifikasi property tersebut. Jika ekspresi ini hilang, Anda dapat mengasumsikan bahwa atribut tersebut dapat dimodifikasi.

Asosiasi

Cara lain untuk menotasikan sebuah property adalah asosiasi. Banyak informasi yang sama dengan yang ditunjukan dalam sebuah atribut terdapat dalam sebuah asosiasi. Gambar 16-2 dan 16-3 menunjukan property yang sama dalam dua notasi yang berbeda.

Asosiasi merupakan sebuah garis solid antara dua class, ditarik dari class sumber ke class target.Nama property bergerak sampai tujuan akhir sebuh asosiasi bersama dengan multiplicity.Tujuan akhir sebuah asosiasi menghubungkan dengan class yang merupakan jenis property.

Meskipun kebanyakan informasi yang ditampilkan kedua notasi tersebut sama, beberapa di antaranya berbeda. Khususnya, asosiasi dapat menampilkan multiplicity di kedua ujung garis.

Gambar 2. Properti dalam susunan atribut_
Gambar 2. Properti dalam susunan atribut

Gambar 3. Properti dalam susunan asosiasi_
Gambar 3. Properti dalam susunan asosiasi

Dengan adanya dua notasi untuk hal yang sama, muncul sebuah pertanyaan, mengapa harus menggunakan salah satu di antara mereka? Secara umum, kebanyakan orang cenderung menggunakan atribut untuk hal-hal kecil, seperti tanggal atau Boolean, umumnya berupa tipe nilai.Sedangkan asosiasi umumnya digunakan untuk class yang lebih signifikan, seperti pelanggan dan pesanan.Kebanyakan pengembang juga cenderung menggunakan kotak-kotak class untuk class yang tidak signifikan di diagram.

Multiplicity

Multiplicity sebuah property merupakan indikasi tentang berapa banyak objek yang akan mengisi property. Multiplicity yang akan kita temui adalah
  • 1 (sebuah pesanan hanya bisa memiliki seorang pelanggan)
  • .1 (sebuah pelanggan perusahaan dapat memiliki sebuah sales rep)
  • (seorang pelanggan tidak perlu membuat sebuah pesanan dan tidak ada batas maksimal berapa jumlah pesanan yang dapat dibuat oleh seorang pelanggan – nol atau lebih pesanan).

Umumnya, multiplicity didefinisikan dengan sebuah batas yang lebih bawah dan sebuah batas atas, seperti 2..4 untuk sebuah kasus permainan tertentu. Batas bawah dapat berupa angka positif atau nol, sedang batas atas berupa angka positif atau * (untuk nilai tak berhingga). Jika batas bawah dan atas bernilai sama, kita dapat menggunakan satu angka, maka dari itu, 1 sama dengan 1..1. Karena ini merupakan hal yang biasa, * adalah kependekan dari 0..*.

Dalam atribut, kita akan menemui berbagai macam istilah yang mengacu pada multiplicity.
  • Optional menunjukkan sebuah batas bawah yang bernilai 0.
  • Mandatory menunjukkan sebuah batas bawah yang bernilai 1 atau mungkin lebih.
  • Single-valued menunjukkan sebuah batas atas yang bernilai 1.
  • Multivalued menunjukkan sebuah batas atas yang bernilai lebih dari 1: biasanya *.

Oleh default, elemen-elemen dalam sebuah multivalued multiplicity membentuk suatu rangkaian. Jadi, jika kita menanyakan kepada seorang pelanggan tentang penggolongan,  penggolongannya tidaklah urut. Jika penggolongan dalam urutan dalam asosiasi mempunyai arti, kita perlu menambahkan {ordered} diakhir asosiasi. Jika kita mengikutsertakan duplikat, tambahkan {nonunique}. Jika kita ingin secara gamblang menunjukkan default, kita dapat menggunakan {unordered} dan {unique}. Kita juga dapat menggunakan nama-nama berorientasi koleksi seperti {bag} untuk unordered, nonunique.

UML 1 memungkinkan multiplicity terputus, seperti 2, 4 (yang berarti 2 atau 4).Multiplicity terputus tidak umum digunakan dan UML 2 menghilangkannya.

Multiplicity default sebuah atribut adalah [1].Meskipun hal ini benar dalam meta-model, kita tidak dapat beranggapan bahwa sebuah atribut dalam aebuah diagram yang tidak memiliki multiplicity bernilai [1], karena diagram tersebut bisa jadi menyembunyikan informasi multiplicity.

Interpretasi Pemrograman Properti

Seperti halnya setiap hal dalam UML, tidak terdapat cara untuk menginterpretasi property ke dalam kode. Gambaran perangkat lunak yang paling umum adalah sebuah bidang atau properti bahasa pemrograman. Class AntrianPemesanan seperti yang diperlihatkan pada Gambar 1 akan tampak seperti di bawah ini dalam sintaks java:
public class OrderLine…
private int quantity;
private Money price;
private Order order;
private Product product;

Dalam sebuah bahasa seperti C# yang mempunyai property, class tersebut akan berbentuk:
public class OrderLine…
public int Quantity;
public Money Price;
public Order Order;
public Product Product;

Perhatikan bahwa sebuah atribut berhubungan dengan property public dalam sebuah bahasa yang mendukung property dan dengan bidang private dalam bahasa yang tidak mendukung property. Dalam sebuah bahasa tanpa property, kita akan menemui bidang-bidang yang dijabarkan menggunakan metode accessor (pengambilan dan pengelompokan). Sebuah atribut read-only tidak akan memiliki metode pengelompokan (dengan bidang-bidang) atau aksi mengelompokkan (untuk property). Perhatikan bahwa jka kita tidak memberi nama pada property, biasanya digunakan nama class target.

Menggunakan bidang private merupakan interpretasi berfokus pada penerapan pada sebuah diagram.Sebuah interpretasi yang lebih berorientasi antarmuka sebaliknya lebih memusatkan pada metode pengambilan dari pada data yang mendasarinya. Dalam hal ini, kita akan mendapatkan atribut dari class Antrian Pemesanan yang sesuai dengan metode berikut ini (dalam notasi java):
public class OrderLine…
private int quantity;
private Product product;
public int getQuantity () {
return quantity;
public void setQuantity(int quantity) {
this.quantity = quantity;
public Money getPrice () {
return product.getPrice().multiplicity(quan tity);
}

Dalam kasus ini tidak terdapat bidang data untuk harga, yang sebaliknya, merupakan nilai yang dihitung. Tetapi, selama klien-klien class Antrean Pemesanan diperhatikan, class ini tampak sama dengan sebuah bidang. Klien-klien tidak dapat membedakan antara sebuah bidang dan yang dihitung.Penyembunyian informasi ini merupakan inti dari enkapsulasi.

Jika sebuah atribut multivalued, hal ini menunjukan bahwa data yang digunakan merupakan sebuah koleksi. Jadi, sebuah class Pesanan dapat mengacu pada serangkaian Antrian Pemesanan. Karena multiplicity ini urut, koleksi tersebut harus urut.Jika koleksi tersebut tidak urut, koleksi ini harus tidak memiliki penggolongan yang berarti sehingga dapat dijalankan menggunakan sebuah rangkaian, tetapi kebanyakan orang menjalankan atribut yang tidak urut seperti dalam daftar.Beberapa orang menggunakan array, tetapi karena UML memung-kinkan sebuah batas atas yang tak berhingga, kebanyakan orang hampir selalu menggunakan koleksi untuk struktur data.

Properti multivalued menghasilkan sebuah bentuk antar-muka yang berbeda dalam property single-valued (dalam notasi Java) sebagai berikut:
class Order {
private Set lineItems-new HashSet ();
public Set getLineItems () {
return Collections.unmodifiableSet(lineItems);
}
public void addLineItem (OrderItem arg) {
lineItems.add (arg);
}
public void removeLineItem (OrderItem arg) {
lineItems.remove (arg);
}

Dalam kebanyakan kasus, tidak perlu menyusun sebuah property multivalued, tetapi meng-update dengan menambah dan mengurangi metode. Untuk mengontrol property Antrean Barang, pengelompo-kan harus mengontrol keanggotaan koleksi tersebut, sehingga tidak akan muncul koleksi yang tanpa identitas. Dalam kasus ini, kita menggunakan proxy yang terproteksi untuk memberi keamanan read-only pada koleksi tersebut.Kita dapat juga menggunakan iterator nonupdatable atau membuat sebuah kopi.Para klien dapat memodifikasi objek, tetapi mereka tidak dapat secara langsung mengubah koleksi itu sendiri.

Karena atribut multivalued mengimplikasikan koleksi, kita hampir tidak pernah menemukan koleksi class pada sebuah diagram class. Kita hanya akan menampilkan mereka dalam diagram implementasi koleksi tingkat rendah.

Desain berorientasi objek menyediakan objek yang dapat melakukan banyak behavior, jadi mereka tidak hanya memberi data untuk objek lain. Jika kita membuat panggilan berulang untuk data menggunakan pendahulunya, itu merupakan tanda bahwa beberapa behavior harus dipindahkan ke objek yang mempunyai data tersebut.

Asosiasi Bidireksional

Asosiasi yang dibahas sebelumnya adalah asosiasi unidireksional. Jenis asosiasi yang lain adalah asosiasi bidireksional, seperti tampak pada Gambar 17-1.

Gambar 4. Asosiasi Bidireksional_
Gambar 4. Asosiasi Bidireksional

Asosiasi bidireksional adalah sepasang property yang saling berhubungan satu sama lain. Class Mobil memiliki property owner:Person[1] dan class Orang memiliki property cars:Car[*].

Hubungan bolak-balik antara mereka menunjukan bahwa jika kita mengikuti kedua property tersebut, kita harus kembali ke set di mana kita mulai.

Pada Gambar 4, sifat bidireksional ditunjukan dengan jelas dengan adanya panah navigasi pada kedua ujung asosiasi. Menggunakan sebuah asosiasi bidireksional dalam sebuah bahasa pemrograman acapkali sedikit membingungkan karena kita harus yakin kedua property tersebut tetap tersinkronisasi.

Operasi

Operasi merupakan suatu kegiatan yang dimengerti sebuah class untuk dilakukan.Operasi secara jelas berhubungan dengan metode dalam sebuah class.Normalnya, kita tidak menunjukan operasi yang hanya memanipulasi property, karena biasanya mereka disembunyikan.

Sintaks UML yang lengkap untuk operasi adalah:
visibility name (parameter-list) : return type {property-string}
  • Tanda visibility ini adalah public (+) atau private (-).
  • name adalah sebuah string.
  • parameter-list adalah daftar parameter untuk operasi.
  • return-type adalah jenis nilai yang dikembalikan, jika ada.
  • property-string menunjukan nilai property yang berlaku pada operasi tertentu.

Sekian artikel tentang Pengertian Class Diagram, Kegunaan, dan Contoh Menurut Para Ahli. Semoga bermanfaat.

Daftar Pustaka
  • Alan Denis, et all, System Analysis and Design With UML 2.0, Wiley, 2005
  • Munawar, Pemrograman Visual dengan UML,Graha Ilmu,2005
Nikita Dini
Nikita Dini Blogger, Internet Marketer, Web Designer

Posting Komentar untuk "Pengertian Class Diagram, Kegunaan, dan Contoh Menurut Para Ahli"