Class Diagram
Class
adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah
objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class
menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan
layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).
Class
adalah kumpulan objek-objek yang mempunyai struktur umum, behavior umum, relasi
umum, dan semantic/kata yang umum. Class ini sebenarnya merupakan blue print
dari sebuah objek. Dengan mendeklarasikan suatu
class, maka kita telah mendeklarasikan suatu tipe
data baru (tipe data referensi).
Class
diagram menggambarkan struktur dan deskripsi class, package
dan objek beserta hubungan satu sama lain seperti containment ,
pewarisan, asosiasi, dan lain-lain.
Class memiliki tiga area pokok :
- Nama
(dan stereotype)
- Atribut
- Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
- Private
, tidak dapat dipanggil dari luar class yang bersangkutan
- Protected
, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang
mewarisinya
- Public
, dapat dipanggil oleh siapa saja
Class
dapat merupakan implementasi dari sebuah interface , yaitu class
abstrak yang hanya memiliki metoda. Interface tidak dapat langsung
diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah
class. Dengan demikian interface mendukung resolusi metoda pada
saat run-time .
Penggambaran dari sebuah class berupa icon
persegi yang memiliki tiga bagian ruang
didalamnya seperti gambar berikut ini:
– Kolom paling atas merupakan representasi dari nama kelas.
- Kolom yang tengah berisi
atribut-atribut yang dimiliki kelas tersebut.
- Kolom yang terakhir (paling bawah) berisi operasi atau method
Sesuai dengan perkembangan class model, class dapat dikelompokkan
menjadi package. Kita juga dapat membuat diagram yang terdiri atas
package.
Hubungan Antar Class
- Asosiasi,
yaitu hubungan statis antar class . Umumnya menggambarkan
class yang memiliki atribut berupa class lain, atau class yang harus
mengetahui eksistensi class lain. Panah navigability
menunjukkan arah query antar class.
- Agregasi,
yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
- Pewarisan,
yaitu hubungan hirarkis antar class. Class dapat diturunkan
dari class lain dan mewarisi semua atribut dan metoda class asalnya
dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari
class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi.
- Hubungan
dinamis, yaitu rangkaian pesan (message) yang di- passing dari satu
class kepada class lain. Hubungan dinamis dapat digambarkan dengan
menggunakan sequence diagram yang akan dijelaskan kemudian.
Definisi Class Diagram
Class
diagram adalah diagram yang digunakan untuk menampilkan beberapa kelas serta
paket-paket yang ada dalam sistem/perangkat lunak
yang sedang kita kembangkan dimana diagram ini memberi
kita gambaran (diagram statis) tentang sistem/perangkat
lunak dan relasi-relasi yang ada di dalamnya.
- Atribut : merupakan properti dari sebuah
kelas yang melambangkan nilai-nilai yang mungkin ada pada kelas
tersebut.
Atribut merupakan data yang dimiliki suatu objek dalam kelas. Setiap
atribut akan memiliki nilai berbeda untuk setiap objek
Contoh: Kelas manusia misalnya memiliki atribut Nama dan Umur. Untuk
kebutuhan aplikasi hanya atribut – atribut
penting saja yang ditampilkan, atribut yang penting disini
mungkin berlainan untuk setiap aplikasi.
Misalnya, aplikasi pencatatan mahasiswa yang
kuliah di perguruan tinggi tertentu mungkin tidak membutuhkan
atribut tinggi badan serta berat badan sedangkan aplikasi untuk event olahraga
tertentu mungkin membutuhkan atribut- atribut tersebut.
Atribut yang penting bagi aplikasi tertentu
membutuhkan kajian yang mendalam oleh para analis sistem.
- Operation atau Method : merupakan behavior(tingkah
laku) atau fungsi yang dapat dilakukan oleh kelas tersebut.
Operasi dan Metode merupakan fungsi atau transformasi
yang mungkin dapat diaplikasikan ke/oleh suatu objek dalam
kelas. Misalnya, suatu objek da lam kelas manusia mungkin memiliki fungsi-
fungsi: tersenyum, marah, makan, minum dsb.
Operasi yang sama dapat diterapkan pada
kelas- kelas yang berbeda. Misalnya fungsi makan dapat diterapkan
baik pada kelas manusia maupun pada kelas kera, konsep ini yang dimaksud dengan
konsep Polimorfisme.
Relasi antar class
UML mendefinisikan beberapa cara untuk
merepresentasikan relasi(hubungan) antara kelas, diantaranya adalah
sebagai berikut:
- Association
Dapat diartikan sebagai relasi “.. has a..”.
Digambarkan sebagai garis lurus antara dua kelas.
Namun tidak berarti bahwa kelas satu
memiliki/dimiliki kelas yang lain, tetapi kelas lain dapat
berelasi juga dengan kelas yang sama.
2.
Directed Association
Relasi seperti asosiasi namun menggambarkan objek atau
aliran kejadian berasal dari salah satu kelas, sedang kelas
yang lainnya bersifat pasif.
3.
Aggregation
Dapat diartikan sebagai “..owns a ..”(“terdiri
atas..”). Terdapat kelas sebagai part class (kelas
bagian) yang merupakan bagian dari kelas
lain(whole class). Namun jika whole class tidak ada, part class
masih dapat berdiri sendiri.
Apabila kelas person dihilangkan, maka alamat
rumah masih dapat berdiri sendiri.
4. Composition
Bisa
disebut juga sebagai strong agregation, dapat diartikan “..is part
of..” (“..bagian dari..”). Seperti halnya relasi agregasi, namun apabila whole
class hilang, maka mustahil part class untuk ada.
Apabila kelas mobil dihilangkan, maka tangki BBM mobil ikut hilang.
5. Generalization
Dapat diartikan sebagai relasi “..is a..” Digunakan untuk
merepresentasikan pewarisan. Suatu kelas (child class) dapat diturunkan
dari kelas lain dan mewarisi semua atribut dan method induknya (parent class)
dan dapat menambah method atau atribut baru.
Sebagai contoh kucing, srigala, singa, macan adalah hewan. Maka
bisa dibuat relasi antar kelas seperti berikut ini:
6. Dependency
Merupakan hubungan ketergantungan antar kelas.
Suatu kelas memiliki ketergantungan terhadap kelas
lain, tetapi tidak berlaku sebaliknya. Perubahan
pada salah satu elemen kelas (pemasok) berdampak pada kelas
lain (klien).
7. Realization
Adalah sebuah relasi antar dua class yang mengharuskan class yang satu harus
mengikuti aturan dari class yang lainnya.
Biasanya terjadi antara kelas dengan antarmuka
(interface)
Visibility
Untuk
menentukan visibilitas (nilai yang diijinkan untuk dilihat atau di akses)
anggota kelas (yaitu, atribut atau method)
terdapat notasi berikut yang harus ditempatkan
sebelum nama anggota kelas.
+ public : visibilitas yang menunjukkan
bahwa anggota kelas tersebut dapat diakses oleh
kelas lain sekalipun tidak mewarisi kelas
yang bersangkutan namun masih memiliki relasi dengan kelas tersebut.
# protected : menunjukkan bahwa
anggota kelas tersebut hanya dapat dipanggil oleh kelas
yang bersangkutan dan kelas anak yang mewarisinya.
- private : menunjukkan bahwa anggota kelas tersebut hanya dapat
dipanggil oleh kelas yang bersangkutan dan tidak dapat dipanggil oleh kelas
lain.
~ package : menunjukkan atribut
tersebut dapat dilihat oleh kelas lain yang masih terdapat
dalam paket yang sama.
Cardinalitas
Cardinalitas atau multiplicity adalah simbol yang
menunjukkan jumlah instansiai dari satu kelas terkait dengan kelas
lainnya.
Multiplisitas
Multiplisitas menunjukan jumlah suatu objek yang bisa berhubungan dengan objek
lain. Multiplisitas biasa ditunjukan dengan “satu” serta “banyak”, tetapi
secara khusus dapat ditunjukan pula dengan bilangan integer lebih besar atau
sama dengan nol. Contoh – contoh bilangan yang bisa digunakan adalah “1”
(satu- dan – hanya- satu), “1+” (satu atau
lebih), “1 – 4″ (satu hingga empat), “1,3,5” (satu atau tiga
atau lima), dan seterusnya.
Selain itu juga dikenali simbol- simbol khusus yang dapat diterapkan dalam
multiplisitas ini. Lingkaran berisi menunjukan “banyak”, sedangkan lingkaran
kosong berarti “bukan keharusan” (opsional),
yaitu nol atau satu. Garis tanpa lingkaran (baik kosong
maupun berisi) menunjukan hubungan satu- ke- satu.
Berikut contoh multiplisitas
Gambar diatas menunjukan bahwa suatu
perusahaan memiliki “banyak” karyawan sedangkan seorang karyawan
pasti bekerja di suatu perusahaan tertentu.
Pada umumnya multiplisitas (seperti halnya kardinalitas dalam ERD)
memiliki nilai “satu” atau “banyak”.
Contoh 1
Implementasi class diagram buku ke dalam program
Contoh 2