Class dan Object
Class & Object
• Object adalah instans dari class-nya, i.e., class
merupakan blue print dari real object
• Class didefinisikan memiliki
– Atribut
– Operation (dl java: method)
• Function: operation yang menghasilkan return value
• Object sebagai instans memiliki harga dari
setiap atribut yang didefinisikan dalam class
Struktur Class
WashingMachine
Ellipsis, masih
brandName
attributes ada attribute/
modelName
operation lain
serialNumber
Capacity
...
addClothes(C: String)
removeClothers(C: String)
addDetergent(D: integer) signature
operations
turnOn(): Boolean
...
Responsibility: take dirty
clothes as input and
responsibility produce clean clothes as
output
Relationship
• Class berelasi dengan class lain melalui
hubungan
– Association
– Multiplicity
– Qualified Association
– Reflexive Association
– Inheritance dan generalisasi
– Dependency
Association
• Jika dua kelas berhubungan secara konseptual
maka hubungan tersebut disebut asosiasi
• Asosiasi selain dinyatakan dengan garis yang
menghubungkan kedua kelas, juga
dispesifikasikan dengan label hubungan
asosiasi tersebut serta mata panah (solid ‘`’
atau outline ‘>’) sebagai arah dari hubungan tsb
Plays on
Player Team
Association (2)
• Dalam hubungan tsb masing-masing kelas
dapat memiliki peranan (role)
– peranan dituliskan dekat pertemuan garis dan
segiempat kelas ybs
Plays on
Player Team
Employee Employer
Association (3)
• Antar dua kelas terdefinisi dua jenis asosiasi
secara bolak-balik
Plays on
Player Employs Team
Association (4)
• Asosiasi bisa lebih kompleks, beberapa kelas
berkoneksi dengan suatu kelas
Guard
Pla
ys on
Plays on
Forward Team
s on
y
Pla
Center
Association (5)
• Asosiasi antar dua kelas mungkin harus
mengikuti suatu aturan (constraint). Misalnya
“{ordered}”.
{ordered}
Serves
BankTeller Customer
Association (6)
• Bentuk asosiasi dengan constraint lainnya
adalah relasi “Or” yang dinyatakan dengan
notasi {or} pada garis putus-putus antar dua
garis asosiasi
Chooses
Academic
HighSchoolStudent {or}
Chooses
Commercial
Association (7)
• Asosiasi bisa memiliki atribut dan operasi,
sebagaimana suatu kelas, maka disebut class
association.
• Penggambaran dari asosiasi ke class adalah
dengan garis putus-putus
Plays on
Player Team
Negotiated by
Contract GeneralManager
Association (8)
• Jika instan dari suatu kelas adalah obyek, maka
suatu asosiasi dapat juga memiliki instan yaitu
yang disebut link
• Link digambarkan antara dua obyek dan
labelnya digarisbawahi (sama halnya dengan
nama obyek)
Plays on
John Doe : Player Tyrannosaurus : Team
Multiplicity
• Asosiasi seringkali harus dispesifikasikan dalam
jumlah obyek yang terkait dalam asosiasi,
disebut multiplisitas (multiplicity)
5 Plays on 1
Player Team
• Untuk menyatakan jumlah maka digunakan
notasi bilangan tertentu, bilangan takberhingga
(*), range bilangan (n..m), pilihan (a,b),
Contoh-contoh Multiplicity
• One-to-one
1 is married to 1
Husband Wife
• One-to-many
1 teaches *
Teacher Student
• One-to-one or more
serves 1..*
BankTeller 1 Customer
• One-to-zero or one
1 has 0,1
House Chimney
Contoh-contoh Multiplicity (2)
• One-to- 12 through 18
FullTimeStudent 1
takes 12..18
CreditHour
• On-to-three
1 has 3
Tricycle Wheel
• One-to-12 or 24
1 holds 12,24
EggBox Egg
Qualified Association
• Asosiasi bisa berdasarkan mekanisme “lookup”
(pemilihan obyek sesuai dengan role tertentu
dari asosiasi tsb)
– Contoh: clerk memeriksa reservasi anda berdasarkan
nomor konfirmasi yang sebelumnya sudah diberikan
saat reservasi dilakukan
1 Finds *
Clerk Confirmation no. Reservation
Reflexive Association
• Asosiasi dari suatu class ke class itu sendiri
• Biasanya terjadi karena obyek-obyek dari kelas
tsb memiliki role yang bervariasi
– Contoh: orang yang ada di dalam mobil bisa supir
bisa penumpang
1 Car occupant
driver
Drives
0..4 passenger
Inheritance and Generalization
• Inheritance terminologi dari object-orientation,
dalam UML menggunakan istilah generalization
• Suatu class (child class atau subclass) dapat
meng-inherit atribut-atribut dan operasi-operasi
dari kelas lainnya (parent class atau superclass)
• Parent class lebih general dari child class
• Parent dapat disubstitusi oleh child, tetapi tidak
sebaliknya
Inheritance and Generalization
(2)
• Notasi dalam UML menggunakan garis berpanah
dengan bentuk segitiga kosong mengarah ke parent
• Penggambaran hirarki dan garis hubungan tsb meniru
struktur organisasi
Animal
Ambhibian Mammal Reptile
Horse
Inheritance and Generalization
(3)
• Base class (root class): class tanpa parent (dl
Java: class Object)
• Leaf class: class tanpa child
• Single inheritance: jika class hanya memiliki satu
parent
• Multiple inheritance: jika class memiliki lebih dari
satu parent
– Note: Java tidak support multiple inherritance
Inheritance and Generalization
(4)
• Abstract class: jika satu class hanya diperlukan
sebagai template untuk class-class yang lebih
spesifik (dalam sistem tidak akan ada object dari
class tsb)
• Dalam notasi namanya dituliskan huruf miring
(italic)
Player
name
height
weight
runningSpeed
verticalLeap
dribbleBall()
passBall()
Rebound()
Shoot()
Guard Forward Center
runOffense() slamDunk()
bringBallUpcourt()
Dependency
• Terjadi jika suatu signature (output function)
suatu class digunakan oleh class lain
• Digambarkan dengan garis putus-putus
System
…
DisplayForm() Form
…
Agregasi (part-whole)
• Relasi dimana suatu class berisikan sejumlah
component class; asosiasi “Part-whole”
• Biasa digambarkan sebagai hirarki “whole” di
atas dan “part” di bawah
• Garis yang menghubungkannya part ke whole
berujungkan dekat whole lambang diamond
kosong ‘◊’
• Suatu part komponen bisa dimiliki oleh lebih dari
satu class whole (memiliki relasi part-whole
dengan dari lebih satu whole)
PC
2 1 1 1 1
Speaker CPU Keyboard Monitor Mouse
1…* 1 1 1 1
HardDrive RAM CD-ROM GraphicsCard SoundCard
Is connected to
Agregasi dengan konstrain
• Jika sejumlah komponen yang mungkin berada
dalam agregasi memiliki relasi OR.
– Part-part merupakan alternatif
• Menggunakan garis putus-putus
menghubungkan part-part tsb dengan notasi (or)
di atasnya
Meal
{or}
1 1 1 1
Soup Salad MainCourse Dessert
Komposisi
• Jenis agregasi yang “kuat”
• Satu part komposit hanya dimiliki oleh satu class
whole
• Menggunakan simbol/notasi diamond solid ‘♦’
CofeeTable
1 4
TableTop Leg
Hubungan Asosiasi – Agregasi -
Komposisi
Asosiasi
•Obyek-obyek saling bekerja sama
Agregasi
•Menjaga intragritas konfigurasi
•Berfungsi sebagai unit tunggal
•Pengendalian melalui satu obyek - propagasi ke bawa
Komposisi
•Setiap bagian hanya boleh menjadi anggota dari
satu obyek agregat
Context Diagram
• Memungkinkan memfokuskan pada sejumlah
kluster class tertentu
• Digambarkan dalam satu segi empat besar
Shirt
2 Is sewn on 1 1 Is sewn on 1
Sleeve Body Collar
1 1 1
5,6 Is sewn on Is sewn on
Is sewn on
1 Button System 0,2,3
1 1
1 Buton into 1
Button Hole
Wardrobe
1
*
Shirt
2 Is sewn on 1 1 Is sewn on 1
Sleeve Body Collar
* 1 1 1
Is sewn on
5,6 Is sewn on
Slacks Is sewn on
1 Button System 0,2,3
1 1
1 4
1 Buton into 1
Button Hole
Outfit
Nesting, Inner Class
• Dalam definisi suatu class bisa terdapat
definisi class lain di dalamnya yang
disebut inner class.
• Penggambarannya dilakukan
sebagaimana class lainnya (di luar class
induknya) namun dengan notasi asosiasi
yang menunjukkan hubungan inner class
tsb
– Pada bagian induk terdapat simbol +
Contoh
Inner 1
Outer + Inner 2
Inner 3
Interfaces and Realization
• Jika sejumlah class yang tidak berelasi dengan
parent tertentu tapi memiliki operasi dengan
signature yang serupa
• Mendefinisikan himpunan operasi-operasi tsb
dan menggunakan kembali di class-class tsb
• Himpunan operasi tsb adalah interface
• Class berelasi dengan interface melalui relasi
“realization”
Interfaces and Realization (2)
• Digambarkan dengan garis putus-putus dengan
mata panah kosong diujung garis mengarah
interface
– Note pada inheritance relasi digambarkan dengan
garis solid
• Interface digambarkan sbg class dengan notasi
“<<interface>>” di atas nama interfacenya
• Cara alternatif penggambaran interface adalah
dengan lingkaran kecil yang dihubungkan
dengan class melalui garis solid
Keyboard
brandName <<interface>>
numberOfKeys Typewriter
ctrl()
alt() keystroke()
pgUp()
pgDown()
…
Typewriter
Keyboard
Visibilitas
• Visibilitas suatu class menspesifikasikan atribut
dan operasi yang class lain dapat gunakan
• Terdapat empat tingkatan visibilitas
– Public: visible untuk class lain manapun
– Protected: visible untuk class lain yang
diinherit dari class ybs
– Private: visible hanya untuk class ybs yang
dapat
– Package: visible hanya untuk class yang
berada dalam package yang sama
Notasi Visibilitas
• Dalam diagram, dinyatakan dengan
menambahkan
– “+” untuk public,
– “#” untuk protected,
– “-” untuk private,
– “~” untuk package,
– “(+)” untuk forced public
di depan masing-masing nama atribut/operation
• Notasi tsb diperlukan untuk code generation
Television Automobile
+brandName +make
+modelName +modelName
… …
+changeVolume() +accelerate()
+changeChannel() +brake()
-paintImageOnScreen() #updateMilleageCount()
… …
“/” dan ”{property}”(UML 2.0)
• “Notasi “/” menyatakan atribut yang diturunkan
(derived attribute) yang disintesakan saat
runtime dan dikombinasikan dengan visibility tsb
– Contoh: /+area: integer
• Notasi “{property}” menyatakan sifat lebih
spesifik dari atribut, dengan standard property:
– {readonly}, {union}, {subsets propname}, {redefines
propname}, {ordered}, {bag}, {seq}, {composite}
Scope
• bagaimana atribut-atribut/operasi-operasi saling
berelasi dalam sistem, dua jenis relasi
– Instance scope: setiap instan dari suatu class
memiliki harga tersendiri untuk
atribut/operasinya
– Classifier scope: untuk semua instan dari
suatu class hanya berlaku satu harga
• Classifier scope berguna untuk sharing harga
atribut private dari sejumlah instan
• Classifier scope ditandai dengan garis bawah
Membangun Classs Diagram
• Identifikasi semua class, beri nama dan
definisikan mengapa menjadi bagian dari
model
• Identifikasi, beri nama dan definisikan
asosiasi antara pasangan class termasuk
reflexive dan composition
Contoh Kasus
Inventory Control System
Problem Statements
• PS: Dalam real project sebaiknya dimulai dari use case narrative.
Namun untuk menyederhanakan konsep bahasan, kita bahas sbb
ini.
• Problem Statement:
– Sistem dirancang untuk inventory dan pengiriman
produk.
– Produk dapat dibeli langsung dari vendor, lalu
menjualnya ‘as is’, atau kita mepaketkan beberapa
produk vendor menjadi produk custom kita.
– Customer memesan satu atau lebih item, namun kita
dapat mengenali sudah atau belumnya customer
dalam melakukan purchasing.
– Satu item adalah satu produk
Case Study: …
• Problem Statement (Cont’d)
– Setiap produk adalah unik berdasarkan serial number
– Customer dapat mengetahui status pesanannya
berdasar nomor pesanan
– Pengiriman barang dari vendor diterima dan
ditempatkan ke dalam stok
– Setiap produk ditempatkan pada lokasi stok tertentu
guna memudahkan menemukannya kembali saat
pesanan hendak dipenuhi
– Setiap lokasi memiliki ID lokasi yang unik
Case Study: …
– Pesanan customer dikirimkan segera setelah
produk tersedia, sehingga dapat terjadi
beberapa kali pengiriman untuk memenuhi
satu kali pesanan customer
– Namun satu pengiriman dapat berisi produk
dari beberapa pesanan
– Item yang belum dikirimkan ditempatkan pada
“backorder” dengan referensi ke nomor
pesanan semula
5
1 2 3
generates
0..1 1..1
Customer 1..1 Order
1..1 LineItem
ordernbr: int places 1..1 1..*
1..*
4 serialNbr: String 8
0,1
7 deliver
1..1
Product Location
Shipment 6 0..* 1..1
9
0..*
VendorShipment CustomerShipment CustomProduct 0..1 VendorProduct
2..*
10
Case Study: …
1. Customer memesan satu atau lebih item,
namun kita dapat mengenali sudah atau
belumnya customer dalam melakukan
purchasing
• Setiap order harus dipesan oleh satu customer
2. Idem. Customer dapat mengetahui status
pesanannya berdasar nomor pesanan
• Dengan qualifier maka asosiasi customer thd 1
pesanan berdasarkan nomor pesanan
Case Study: …
3. Customer memesan satu atau lebih item…
• Satu pesanan berisikan minimal satu item yang
berisikan juga informasi harga dan discount yang
ada
4. Satu item adalah satu produk. Setiap produk
adalah unik berdasarkan serial number
• Setiap baris item pesanan terasosiasi dengan
satu produk berdasrkan serial number sebagai
qualifier,
• bisa ada produk yang belum pernah diorder
(belum berasosiasi dengan item pesanan)
Case Study: …
5. Item yang belum dikirimkan ditempatkan
pada “backorder” dengan referensi ke
nomor pesanan semula
• “backorder” menjadi pesanan baru yang merefer
ke pesanan semula, namun “backorder”
kemudian dapat menghasilkan “backorder” baru
Case Study: …
6. Pesanan customer dikirimkan segera setelah produk
tersedia, sehingga dapat terjadi beberapa kali
pengiriman untuk memenuhi satu kali pesanan
customer. Namun satu pengiriman dapat berisi
produk dari beberapa pesanan
• Pesanan dikirimkan ke customer via satu pengiriman
(Customer Shipment), jika belum dikirimkan multiplicity-nya
0, bisa juga dikirim dalam beberapa pengiriman krn lokasi
asal berbeda atau karena batasan dalam pengiriman
• Suatu pengiriman tentunya minimal ada satu pesanan, atau
beberapa pesanan sekaligus
Case Study: …
7. Pengiriman barang dari vendor diterima dan
ditempatkan ke dalam stok … pesanan customer
dikirimkan segera setelah produk tersedia
• Selain pengiriman ke customer, juga ada pengiriman dari
vendor
8. Setiap produk ditempatkan pada lokasi tertentu
guna memudahkan menemukannya kembali saat
pesanan hendak dipenuhi. Setiap lokasi memiliki ID
lokasi yang unik
• Pada suatu lokasi bisa ada produk, bisa juga tidak ada
• Setiap produk akan berasosiasi dengan suatu lokasi
Case Study: …
9. Produk dapat dibeli langsung dari vendor,
lalu menjualnya ‘as is’, atau kita mepaketkan
beberapa produk vendor menjadi produk
custom kita.
• Jadi ada dua jenis produk: produk vendor dan
produk custom (paket)
[Link] mepaketkan beberapa produk vendor
menjadi produk custom kita.
• Produk custom tersusun atas dua atau lebih
produk vendor
• Setiap produk vendor ada yang langsung bisa
dipesan atau dipesan melalui custom product
Pentingnya Class Diagram
• Merupakan yang paling digunakan
• Lebih dikenal sebagai diagram berorientasi
obyek
• Merupakan sumber untuk code generation dan
target dari reverse engineering code
• Diagram lain sebagai tool untuk memberi arti
tambahan dari class diagram
Seluruh Diagram Support Class
Diagram
• Use Case Diagram untuk mengidentifikasi
kebutuhan obyek sebagai resource yang
digunakan sistem untuk mencapai tujuannya
• Sequence & Collaboration Diagram untuk
mengetahui interaksi antar obyek, dan
mendefinisikan interface
• Activity Diagram untuk menemukan sifat yang
diimplementasikan oleh obyek-obyek dan untuk
mendefinisikan logika dari operasi-operasi
obyek
Use Case
Object Diagram
Diagram
Sequence
Diagram
Class Diagram
Collaboration
Diagram
Statechart
Activity Diagram
Diagram
Object Diagram
Design Patterns
• Pattern: Adanya struktur yang sama dalam
sejumlah diagram class
– visi/gagasan yang bisa dipahami semua orang tanpa
membatasi bagaimana dibentuk
• UML menyediakan notasi untuk
merepresentasikan patterns tsb
• Memudahkan pembuatan diagram dan
memudahkan pemahaman diagram
• Ingat: Pattern mendefinisikan konsep, nukan
code
Pendefinisian Pattern
• Empat elemen pattern:
– A problem to solve
– The resources to solve it
– The set of rules about how the resource could
be user to solve the problem
– Guidelines to know when the pattern works
well and when it does not
Contoh: Dapur
• Setiap orang tahu konsep “Dapur”, tetapi ada
banyak cara mengimplementasikannya
– A problem …. :
• menyimpan dan menyiapkan makanan
– The resources ….:
• menggunakan lemari, piring, lap, pisau, …
– The set of rules …:
• kulkas untuk menyimpan bahan makanan, oven untuk ….
– Guidelines....:
• dapur ok jika berada di dalam rumah, tidak jika di luar rumah
Case study: Observer Pattern
– A problem …. :
• Order harus diupdate ke status “shipped” saat
pengiriman telah dilakukan. Status ini untuk me-
kick-off account receivable dan tracking process
– The resources ….:
• Observer dan observable object. Observable
bertanggung jawab untuk menotifikasi observer.
Hal ini mengurangi kebutuhan observer untuk
secara berkala bertanya ke observable mengenai
yang telah terjadi.
Case study: …
– The set of rules …:
• Shipment object yang sedang diobservasi menjadi
observable object dan the order sebagai observer
object. Order object meminta ke shipment object
bahwa ia harus dinotifikasi saat sesuatu terjadi.
Shipment menempatkan Order dalam daftar
observer yang akan dinotifikasi. Saat shipment
dilakukan, ia menotifikasi ke setiap observer. Saat
Order menerikan notifikasi tsb, ia dapat merespon
sebagaimana seharusnya.
Case study: …
– Guidelines....:
• Observer pattern dapat mengalami overused (ie.
volume yang besar dari notifikasi yang dikirim
untuk setiap observer)
• Ia bekerja dengan baik untuk respon segera yang
spesifik bersifat esensial ke aplikasi
Notasi
• Suatu pattern digambarkan dengan
menggunakan suatu oval berisi nama
pattern
• Kolaborasi dengan class-class dinyatakan
dengan garis putus-putus dari class ke
pattern
Observer Pattern
Observable
observer
Is observed by
Shipment Order
0..* 1..1
Class vs. Object Diagram
• Class mendefinisikan rule, object mendefinisikan
fakta-fakta
• Class mendefinisikan “what can be”, object
mendeskripsikan “what is”
• Keduanya membentuk object model
• kegunaannya,
– terutama sebagai alat research dan testing
– untuk memahami masalah dengan
mendokumentasikan contoh-contoh dari problem
domain sebagai object diagram
– saat analisis & perancangan untuk memverifikasi
keakuratan class diagram
Elemen Object Diagram
• Hanya terdiri atas object-object dan link-link
– Object: real entity dibuat dari class
– Link: relasi antar dua object dibuat dari asosiasi
• Digambarkan seperti class kecuali tanpa
operasi, hanya:
– Nama: Nama Class
• Tanpa nama object menjadi anonymous object
– Atribut = harga (masing-masing atribut serta notasi
private/protected/public/package di muka setiap nama
atribut)
Shipment Product
-date: Date = today -desc: String = null
-destination: Address: null deliver -serialnbr: String=system assigned
-shipper: Vendor=null -spec_handling: String: null
0..1 1..*
+authorize(empl: Employee) +reserve(order: Order)
+seal(empl: Employee) +loc: Location)
+ship(shipper: Vendor)
21 : Product
-desc=CD Player XL 850
-serialnbr = 123456
4321 : Shipment
-spec_handling =
-date= 01-27-02
96 : Product
-destination=Portland, OR
-shipper= Billy Bob’s Trucking
-desc= Speaker Set SS420
-serialnbr = 234567
-spec_handling = fragile
Membandingkan Notasi Object
Diagram – Class Diagram
• Class Diagram
– memiliki 3 ruang: nama, atribut, operasi
– nama class saja dalam ruang nama
– atribut mendefinisikan sifat dari atribut
– operasi-operasi di-list
– Berkoneksi dengan asosiasi dengan nama, multiplisitas,
konstrain dan role
• Object Diagram
– dua ruang : nama dan atribut
– “nama object : nama class” dan digarisbawahi
– atribut berisikan harga current
– tidak me-list operasi
– berkoneksi via link yang memiliki nama tanpa multiplisitas yang
merepresentasikan entitas tunggal (1-1). Bisa juga adanya role
Case Study: Pengujian Class
Diagram dengan Object Diagram
• Misalkan dibuat class diagram berikut
0..* VendorProduct
0..1
Shipment
0..1 CustomrProduct
0..*
Case Study: …
• Pengujian 1
– Satu CustomProduct dibuat dari beberapa
VendorProduct
• VendorProduct 28, 38, dan 72, menghasilkan
CustomProduct 425
28 :VendorProduct
4321 : Shipment 425 : CustomProduct 38 : VendorProduct
72 : VendorProduct
Case Study: …
• Class Diagram terkoreksi setelah teridentifikasi
adanya relasi agregasi antara CustomProduct
dengan VendorProduct
0..* VendorProduct
0..1
Shipment 1..*
0..1
0..1
CustomrProduct
0..*
Case Study: …
• Pengujian 2: berapa jumlah minimal untuk
membentuk CustomProduct? Dengan
mengevaluasi data uji maka sekurangnya ada
dua VendorProduct
38 :VendorProduct
4322 : Shipment 426 : CustomProduct
47 : VendorProduct
Case Study: …
• Class Diagram terkoreksi setelah teridentifikasi
adanya relasi agregasi antara CustomProduct
dengan VendorProduct
0..* VendorProduct
0..1
Shipment 2..*
0..1
0..1
CustomrProduct
0..*
Case Study: …
• Pengujian 3: mungkinkan ada kasus suatu
CustomProduct terbentuk atas CustomProduct
lain? Dengan mengevaluasi data uji ternyata
mungkin
802 :CustomProduct
5467 : Shipment 775 : CustomProduct 456 : CustomProduct
312 : CustomProduct
Case Study: …
• Class Diagram terkoreksi setelah teridentifikasi
adanya relasi agregasi antara CustomProduct
dengan VendorProduct
0..* VendorProduct
0..1
Shipment 2..*
0..1
0..1
CustomrProduct 0..*
0..*
0..1
Case Study: …
• Pengujian 3: apakah ada karakteristik yang
sama antara object yang digunakan untuk
menyusun CustomProduct?
– Keduanya dapat menjadi bagian dari suatu
CustomProduct, dapat digeneralisasikan
– Kedua class mendefinisikan asosiasi yang
sama dengan Shipment, dapat
digeneralisasikan
0..* VendorProduct
0..1
Shipment 2..*
0..1
0..1
CustomrProduct 0..*
0..*
0..1
Shipment deliver 1..* Product
0..1 2..*
VendorProduct CustomrProduct