download

Metode Perancangan Program
Pert 24 – Object Design
Object Design
Object design mengacu pada detail
design dari object dan interactionnya.
Secara khusus, object design mengacu
pada spesfikasi tipe attribute,
bagaimana operation berjalan, dan
bagaimana object berhubungan dengan
object lain.
Class spesification
Attribute


Pada tahap ini, attribute di berikan tipe data. Beberapa tipe
data primitive adalah Boolean (true atau false), Character
(numerik atau spesial character), integer (angka) dan
floating point (bilangan desimal). Pada object oriented ada
tambahan tipe data yang lebih kompleks yaitu money, string,
date, atau name.
Penulisan tipe data attribute pada UML, sintaksnya adalah
sbb:
Name ‘:’ type-expression ‘=‘ initial-value
‘{‘property-string’}’
Contoh:
Balance:money = 0.00
Class spesification
Operation


Operation juga harus ditentukan parameter
yang akan diterima dan dikirimkan
Syntax yang digunakan :
Operation name ‘(‘parameterlist’)’’:’ return-type-expression
Contoh:
Credit(amount:money):boolean
creditOk = accobject.credit(500.00)
Object Visibility
Pada tahap ini ditentukan tingkat
visibility dari object dan operation.
Tingkat visibility ini memberikan
ketentuan apakah sebuah object atau
operation dapat di akses dari luar object
tersebut.
Object visibility
Visibility Symbol
Visibility
+
Public
-
Private
#
Protected
~
Package
Meaning
The feature (an operation or an attribute) is directly accessible
by an instance of any class
The feature may only be used by an instance of the class that
includes it
The feature may be used either by instances of the class that
includes it or of a subclass or descendant of that class
The feature is directly accessible only by instances of a class
in the same package
BankAccount
-nextAccountNumber : int
-accountNumber : int
-accountName : string
-balance : float
+open(in accountName : string) : boolean(idl)
Interface
Interface pad UML adalah sebuah group
operation external
Interface tidak memiliki attribute,
association dan implementasi operation
tidak didefinisikan.
Ada dua notasi untuk menuliskan
interface, tetapi yang paling sederhana
adalah lingkaran
Interface
Client
-companyName
-companyAddress
-companyTelephone
-companyFax
-companyEmail
-contactName
-contactTelephone
-contactEmail
+assignStaffContact()
+changeStaffContact()
CreativeStaff
<<use>>
-staffNo
-staffName
-staffStartDate
-qualification
+calculateBonus()
+linkToNote()
Advert
manageable
<<realize>>
«interface»
Manageable
+getCost()
+setCompleted()
+view()
-title
-type
-targetDate
-estimatedCost
-completionDate
+getCost()
+setCompleted()
+view()
viewable
<<realize>>
«interface»
Viewable
+view()
<<use>>
Kriteria Design yang baik
Coupling : menggambarkan tingkat
hubungan antara komponen design dan
ditampilkan dalam jumlah link yang
dimiliki object.
Cohesion: tingkat dimana sebuah
element berkontribusi untuk suatu
tujuan.
Kriteria design yang baik
Coupling:


Interaction coupling: adalah ukuran atas jumlah
message yang di kirimkan ke object lain dan
jumlah parameter yang dikirimkan dengan
message. Interaction coupling harus dalam jumlah
minimal
Inheritance coupling : menggambarkan level
dimana sebuah subclass membutuhkan fitur yang
ada di base classnya.
Kriteria design yang baik
Cohesion



Operation cohesion : mengukur level
dimana operation fokus pada sebuah
functional requirement
Class cohesion: mengambarkan level
dimana sebuah class fokus pada sebuah
requirement
Specialization cohesion: mengacu pada
semantik dari hirarki inheritance cohesion
Designing Association
Association antara dua class
menunjukkan kemungkinan link yang
ada antara instance class tersebut



One to one association
One to many association
Many to many association
One to one association
Owner
-name : String
-address : String
-dateOflicence : Date
-numberOfConviction : Integer
-ownedCar : car
car
1
owns
1
-registrationNumber : registration
-make : String
-model : String
-colour : String
One to many association dan
many to many association
*
manageCampaign
-staffNo
-staffName
1
-staffStartDate
workOnCampaign -qualification
+calculateBonus()
+linkToNote()
1..*
Campaign
-title
-campaignStartDate
-campaignFinishDate
-estimatedCost
-completionDate
-datePaid
-actualCost
+assignManager()
+assignStaff()
+checkBudget()
+checkStaff()
+completed()
+getDuration()
+getTeamMember()()
+linkToNote()
+ListAdverts()
+recordPayment()
CreativeStaff
*
owns
*
1
Advert
-title
-type
-targetDate
-estimatedCost
-completionDate
+getCost()
+setCompleted()
+view()
Integrity Constraint
Integrity constraint mempunyai tiga bentuk:



Referential integrity: memastikan bahwa sebuah
identifier object benar bener mengacu pada object
yang ada
Dependency constraint: memastikan bahwa
attribute dependency, dimana satu attribue dapat
dihasilkan dari attribute lain, dan dimaintain
secara konsisten
Domain integrity : memastikan bahwa attribute
adalah nilai yang layak
Designing operation
Mendesain operation membutuhkan algoritma
yang baik untuk melaksanakan fungsi.
Beberapa hal yang harus dipertimbangkan
sebelum menentukan algoritma yang cocok:




Computational complexity
Ease of implementation and understandability
Flexibiilty
Fine-tuning the object model
Normalization
Normalisasi digunakan jika
menggunakan relational database
management system
Kebanyakan pendekatan object oriented
tidak memandang normalisasi adalah
penting, dan struktur yang tidak
dinormalisasi dapat diterima