Class Diagram2

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Class Diagram2 as PDF for free.

More details

  • Words: 3,054
  • Pages: 78
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

Related Documents

Class Diagram2
June 2020 2
Use Case Diagram2
November 2019 6
Class
December 2019 41
Class
November 2019 48
Class
November 2019 43