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 attributes
brandName modelName serialNumber Capacity ...
operations
addClothes(C: String) removeClothers(C: String) addDetergent(D: integer) turnOn(): Boolean ...
responsibility
Responsibility: take dirty clothes as input and produce clean clothes as output
Ellipsis, masih ada attribute/ operation lain
signature
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 Player
Plays on
Team
Association (2) • Dalam hubungan tsb masing-masing kelas dapat memiliki peranan (role) – peranan dituliskan dekat pertemuan garis dan segiempat kelas ybs
Player
Plays on Employee
Employer
Team
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
Forward
Pla ys
on
Plays on on s y Pla
Center
Team
Association (5) • Asosiasi antar dua kelas mungkin harus mengikuti suatu aturan (constraint). Misalnya “{ordered}”. {ordered}
BankTeller
Serves
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
HighSchoolStudent
Academic
{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 Player
Plays on
Contract
Team
Negotiated by
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) John Doe : Player
Plays on
Tyrannosaurus : Team
Multiplicity • Asosiasi seringkali harus dispesifikasikan dalam jumlah obyek yang terkait dalam asosiasi, disebut multiplisitas (multiplicity)
Player
5 Plays on
1
Team
• Untuk menyatakan jumlah maka digunakan notasi bilangan tertentu, bilangan takberhingga (*), range bilangan (n..m), pilihan (a,b),
Contoh-contoh Multiplicity •
•
•
•
One-to-one Husband
1
Teacher
1
is married to
1
Wife
*
Student
One-to-many teaches
One-to-one or more BankTeller 1
serves
1..*
Customer
1
has
0,1
Chimney
One-to-zero or one House
Contoh-contoh Multiplicity (2) •
One-to- 12 through 18 FullTimeStudent 1
•
•
takes
12..18
CreditHour
On-to-three Tricycle
1
has
3
EggBox
1
holds
12,24
Wheel
One-to-12 or 24 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
Clerk
Confirmation no.
1
Finds
*
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 driver Drives
Car occupant 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
Horse
Reptile
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 runOffense() bringBallUpcourt()
Forward
Center slamDunk()
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 1 2 Speaker
1…* HardDrive
1
1
CPU
Keyboard
1
1
RAM
1
CD-ROM
Is connected to
1
Monitor
1 GraphicsCard
Mouse
1 SoundCard
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 1 {or} 1 Soup
1 Salad
1 MainCourse
1 Dessert
Komposisi • Jenis agregasi yang “kuat” • Satu part komposit hanya dimiliki oleh satu class whole • Menggunakan simbol/notasi diamond solid ‘♦’ CofeeTable 1
1 TableTop
4 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 Sleeve
2 Is sewn on
1
1
Body
1
Is sewn on 1
1 5,6 Is sewn on
Is sewn on 1
Button System
1 Is sewn on
0,2,3
1
1 Button
1 1
Buton into
1
Hole
Collar
Wardrobe 1
*
Shirt Sleeve
*
2 Is sewn on
1
1
Slacks
Body 1 5,6
Is sewn on 1
1
Is sewn on 1
1
Is sewn on
Button System
1 Is sewn on
0,2,3
1
1 Button
4 1
Buton into
1 1
Outfit
1
Hole
Collar
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 “<>” di atas nama interfacenya • Cara alternatif penggambaran interface adalah dengan lingkaran kecil yang dihubungkan dengan class melalui garis solid
Keyboard brandName numberOfKeys ctrl() alt() pgUp() pgDown()
<> Typewriter keystroke()
…
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 +modelName
+make +modelName
…
…
+changeVolume() +changeChannel() -paintImageOnScreen()
+accelerate() +brake() #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
3
2 generates 1..1
0..1
Customer
ordernbr: int
1..1
1..1
Order
1..*
LineItem
1..*
1..1
places
4
8
serialNbr: String 0,1
7
deliver
1..1
6
Shipment
Product
0..*
1..1
Location
9 0..*
VendorShipment
CustomerShipment
CustomProduct 0..1
2..*
10
VendorProduct
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)
10.kita 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 Diagram
Object Diagram Sequence Diagram Class Diagram Collaboration Diagram
Activity Diagram
Statechart 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 mekick-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
Shipment
observer
Is observed by 0..*
1..1
Order
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 -date: Date = today -destination: Address: null -shipper: Vendor=null
Product
0..1 +authorize(empl: Employee) +seal(empl: Employee) +ship(shipper: Vendor)
-desc: String = null -serialnbr: String=system assigned -spec_handling: String: null
deliver 1..*
+reserve(order: Order) +loc: Location)
21 : Product
4321 : Shipment -date= 01-27-02 -destination=Portland, OR -shipper= Billy Bob’s Trucking
-desc=CD Player XL 850 -serialnbr = 123456 -spec_handling = 96 : Product -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
0..*
CustomrProduct
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 1..*
Shipment
0..1
0..1 0..*
CustomrProduct
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 2..*
Shipment
0..1
0..1 0..*
CustomrProduct
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 2..*
Shipment
0..1
0..1 0..*
CustomrProduct
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
VendorProduct
0..* 0..1
2..*
Shipment
0..1
0..1
CustomrProduct
0..*
0..*
0..1
Shipment
0..1
deliver
1..*
VendorProduct
Product
2..*
CustomrProduct