Anda di halaman 1dari 8

Laporan Praktikum OOAD

Mata Kuliah : OOAD Object Oriented


Analysis and Design
Topik : GRASP
Mahasiswa 1 : Clara Manik 11113021
Mahasiswa 2 : Roky S Manalu 11113103

1. Konsep GRASP

Responsibility merupakan kewajiban atau tanggung jawab yang harus dimiliki oleh
setiap objek. Ada 2 type responsibility yaitu :
 Doing
Berhubungan dengan pembuatan objek, melakukan kalkulasi, instansiasi
action pada objek lain.
 Knowing
Berhubungan dengan private enkapsulasi data, hubungan antar objek, dan
mengetahui segala sesuatu apakah it can drive or calculate. Biasanya knowing
sering ditemukan pada domain model, contoh nya adalah atribut dan asosiasi.

Reponsibility lebih umum daripada method, karena method di


implementasikan untuk memenuhi responsibility. Contoh nya class sale mungkin saja
memiliki method untuk mengetahui total penjualan tapi mungkin juga method
tersebut berinteraksi dengan objek lain. Untuk meng assign responsibility terhadap
objek diperlukan sebuah prinsip design pattern. Salah satu prinsip design pattern
adalah GRASP

GRASP (General Responsibility Assignment Software Patterns) merupakan


prinsip dasar yang menggambarkan desain objek dan responsibility nya yang
mencakup Sembilan prinsip objek objek oriented design yang berhubungan dengan
pembuatan responsibility untuk setiap kelas.

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


1
PATTERNS
GRASP dikembangkan oleh oleh Craig Larman. Prinsip ini bisa dipandang
sebagai design pattern. Design pattern merupakan penjelasan atau solusi umum yang
dilakukan untuk menyelesaikan masalah-masalah umum yang ditemukan dalam
desain perancangan perangkat lunak.

Alasan menggunakan GRASP ?


Karena :
 pada OO tradisional desain objek is glossed over. Contoh nya analis sering
“meng assign nouns menjadi object”, analis juga sering “meng assign verbs
menjadi method”.
 Kita sering menggunakan UML dimana uml hanya sebuah bahasa, dan hanya
menyatakan oo design dan tidak menyediakan petunjuk.
 Karena dengan menggunakan design pattern lebih reusable
 GRASP lebih simple karena menyediakan fasilitas komunikasi antar objek ,
dan aids thinking about design
 Mempercepat pengembangan tanpa mengembangkan konsep mulai dari awal.

Ada 5 prinsip GRASP :


a) Information expert
b) Creator
c) High Cohesion
d) Low Coupling
e) Controller

Pembahasan ke 5 prinsip GRASP adalah sebagai berikut :

A. Information Expert

Information expert merupakan objek melakukan segala sesuatu yang


berhubungan dengan informasi yang dimiliki nya. Tentunya informasi penting
mungkin saja melebar ketika digunakan dalam beberapa class (Objek saling
berinteraksi dengan pesan yang dikirimkan nya). Information expert bukan hanya

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


2
PATTERNS
sebagai pattern, bukan karena sebuah objek memiliki informasi penting maka objek
itu memiliki responsibility untuk setiap action yang berhubungan dengan informasi.
Dalam pengembangan perangkat lunak kita sering berpikir, apakah prinsip yang
umum untuk meng assign responsibility terhadap objek? Jawaban nya adalah meng
assign sebuah responsibility menjadi information expert yaitu kelas yang mempunyai
informasi penting untuk memenuhi responsibility.

Contoh : pada POS system siapa yang bertanggung jawab untuk mengetahui the grand
total of a sale ? (kita mengetahui bahwa kita membutuhkan a grand total from use
case/requirement dan interakasi diagram pada scenario ini).

Langkah pertama adalah melihat domain model atau design model.


Domain model berisi konseptual class atau atribut atribut. Sedangkan design model
memiliki atribut dan method. Kita juga melihat keterhubungan class sale. Misal nya
diasumsikan kita tidak memiliki design model maka kita melihat domain model dan
kita menemukan “Sale”. Kita buat class sale ke dalam design model dan membuat
responsibility untuk mengetahui total yaitu “getTotal”. Sehingga design kita menjadi :

Pertanyaan selanjutnya adalah informasi apa yang dibutuhkan untuk menentukan line
item subtotals?, maka kita membutuhkan “SalesLineItem.quantity” and
“ProductSpecification.Price” karena kedua kelas ini saling berhubungan. Sehingga

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


3
PATTERNS
dengan menerapkan information expert SalesLineItem harus memiliki subtotal.
Sehingga sekarang desain kelas nya :

Sehingga responsibility dari setiap class setelah menerapkan information expert


adalah:

Design Class Responsibility


Sale Knows sale total
SalesLineItem Know line item subtotal
ProductDescription Know prouct price

B. Creator
Untuk memahami konsep creator dapat dilihat dari contoh berikut ini :
Contoh permasalahan : Siapa yang bertanggungjawab untuk melakukan inisiasi
sebuah object dari sebuah class. Penunjukan atau pemberian responsibility yang tepat
kepada sebuah object untuk menginisiasi sebuah object baru akan memberikan
dampak kepada sebuah design yang mensuport low coupling, kemudahan untuk
memahami desain, encapsulation dan reusability meningkat.
Solusi nya adalah : diberikan tangung jawab kepada B untuk melakukan inisiasi
instance dari kelas A, maka :
 B contains gabungan dari A

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


4
PATTERNS
 B memiliki informasi A
 B banyak mengunakan A
 B memiliki data yang diperlukan untuk menginisiasi A

Sehingga B adalah Creator object A.


Contoh :
Class apa yang bertanggung jawab menginisaisasi SalesLineItem ? dapat dilihat dari
gambar berikut ini :

Dari gambar diatas dapat dilihat bahwa sale merupakan aggregates dari objek Sales LineItem

Sehingga class sale merupakan kandidat yang cocok memiliki responsibility create
salesLineItem
Keuntungan dari creator:

a. Low coupling, sehingga minim untuk maintenance


b. Memiliki opportunity yang tinggi untuk digunakan kembali

C. High Cohesion

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


5
PATTERNS
Cohesion adalah keterikatan fungsi-fungsi di dalam suatu modul. Maksudnya adalah modul
yang dibuat memiliki fungsi-fungsi yang serupa (saling bekerja sama)untuk 1 tanggung
jawab. Karena itu high cohesion sangat penting dalam perancangan software. Dapat
diakatakan juga cohesion adalah sebuah ukuran untuk mengukur seberapa kuatnya tanggung
jawab dari sebuah elemen.

Sebuah elemen dengan tanggung jawab yang pasti (jelas). Sebuah elemen terdiri dari class,
subsystems dan systems. Sebuah class dengan kohesi yang rendah memiliki efek atau
masalah berikut:
1.        Sulit untuk dipahami
2.        Sulit untuk digunakan kembali
3.        Sulit untuk dipertahankan
4.        Terus dipengaruhi oleh perubahan

Poblem : Bagaimana agar kompleksitas dapat dikelola?

Solution : Memberikan responsibility sehingga kohesi (kepaduan) tetap tinggi.

Saat Customer hendak melakukan pembelian kelas register tidak langsung berhubungan
dengan sale. Sale dan register dihubungkan dengan kelas payment. Agar tanggungjawab dari
kelas register tidak terganggu saat customer hendak melakukan paym

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


6
PATTERNS
D. Low Coupling

Coupling  adalah ketergantungan antar modul satu dengan modul lainnya. Low Coupling
terbagi dua; Low Coupling dan High Coupling. Low coupling adalah yang keterikatannya
tidak begitu kuat atau tidak bergantung kepaa kelas lain. Sebaliknya high coupling memiliki
ketergantungan kepada banyak elemen. Sebuah elemen terdiri dari class, subsystems dan
systems.
Kelas yang sifatnya high coupling akan mengakibatkan:
1. Terjadinya perubahan yang tidak diinginkan karena terjadinya perubahan yang kita
lakukan pada kelas yang berelasi dengannya.
2. Ketika sebuah kelas dipisahkan dari kelas yang berelasi maka akan menjadi lebih sulit
untuk dimengerti atau akan menjadi semakin complecated.
3. Kelas menjadi lebih sulit untuk di-reuse karena penggunaannya kembali
membutuhkan kelas lain yang seharusnya tidak perlu.
Problem: Bagaimana mendukung low dependency, efek perubahan yang kecil, peningkatan
penggunaan kembali.
Solusi: Memberikan responsibility supaya coupling-nya menjadi rendah.
Contoh: Jika kita memiliki class Payment, Register dan Sale, maka kita asumsikan perlu
untuk membuat instance dari Payment dan diasosiasikan dengan Sale. Siapa yang memiliki
responsibility untuk melakukan hal ini? Menurut pattern Creator, dan sesuai dengan real
world domain,  tugas ini ada pada Register karena register me-record payment. Object dari
Register akan mengirimkan message addPayment ke Sale. Maka partial diagramnya menjadi
seperti di bawah ini.

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


7
PATTERNS
E. Controller

Pattern ini bisa juga disebut sebagai sebuah delegation pattern. Me-refer kepada pemahaman
bahwa UI layer tidak harus berisi logic dari sebuah aplikasi tapi sebuah object dari UI layer
harus mendelegasikan request yang masuk ke layar lain.

Problem: Object pertama apa yang berada di luar UI Layer yang menerima dan mengontrol
sistem operasi?

Solusi: Berikan tanggungjawab tersebut kepada sebuah kelas yang  merepresentasikan salah
satu dari pilihan-pilihan di bawah ini:
1. Sebuah kelas yang merepresentasikan system secara keseluruhan. Root object adalah
sebuah device dimana software berjalan didalamnya, atau sebuah major sub system.

2. Merepresentasikan skenario dari sebuah use case dimana sebuah system event terjadi
dalam scenario tersebut dan hal ini sering disebut dengan <UseCaseName>Handler,
<UseCaseName>Coordinator, atau <UseCaseName>Session.
1. Gunakan class controller yang sama untuk semua sistem events dari sebuah
skenario use case.
2. Sebuah session adalah instance dari conversation dengan actor. Panjang dari
sebuah session bervariasi dan biasanya diatur dalam hubungannya dengan use
cases.

GENERAL RESPONSIBILITY ASSIGNMENT SOFTWARE


8
PATTERNS

Anda mungkin juga menyukai