Anda di halaman 1dari 4

LAPORAN ANALISIS DAN DESAIN BERBASIS OBJEK

GRASP

Oleh :
Fitranza Akbar Sarrazin
TI-2I
1941720203
GRASP

GRASP adalah General Responsibility Assignment Software Patterns. Cara yang poluler untuk
merancang objek perangkat lunak adalah dengan memperhatikan responsibilitas, aturan (rule) , dan
kolaborasi. Untuk sebuah pendekatan yang lebih luas cara ini biasa disebut responsibility-driven design
atau RDD.Sebenarnya RDD itu sendiri merupakan kiasan atau metafora. proses mendesain kelas dengan
memberikan tanggung jawab yang jelas untuk setiap kelas. Proses ini dapat digunakan untuk
menentukan kelas mana yang harus mengimplementasikan bagian mana dari fungsi aplikasi. Setiap
programmer dan desainer harus terbiasa dengan pola-pola ini dan yang lebih penting - tahu bagaimana
menerapkannya dalam pekerjaan sehari-hari (omong-omong - asumsi yang sama harus diterapkan pada
prinsip SOLID).Ada 2 tipe pada responsibility pada GRASP 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.
GRASP pattern ada 9 prinsip ,seperti :

1. 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 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.
2. Creator
Pola GRASP ini yang membantu memutuskan kelas mana yang harus bertanggung jawab
untuk membuat instance baru dari kelas. Pembuatan objek adalah proses yang penting, dan
berguna untuk memiliki prinsip dalam memutuskan siapa yang harus membuat instance
kelas.
Untuk memahami konsep creator dapat dilihat dari contoh berikut ini :
Contoh permasalahan : Siapa yang bertanggung jawab 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.

3. Controller
Pattern ini bisa juga disebut sebagai sebuah delegation pattern. Pemahaman UI layer
tidak harus berisi logic dari sebuah aplikasi ,tapi dari sebuah object dari UI layer harus
mendelegasikan request yang masuk ke layar lain.
4. High Cohesion
High 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
5. 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.Coupling mengukur seberapa kuat elemen yang terhubung,dengan manfaat low
dependency antar class, potensi penggunaan kembali yang lebih tinggi, dan perubahan
dalam satu kelas berdampak lebih rendah pada kelas lain.
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.
6. Indirection
Indirection adalah pola yang berfungsi memberikan mendistribusikan tanggung jawab
antar objek, menghindari pengikatan langsung. Untuk melakukan ini, Anda dapat
menetapkan tanggung jawab untuk komunikasi antara komponen atau layanan ke objek
perantara.. Pertama, sangat sederhana dalam hal keamanan. Kedua, memberikan kode
fleksibilitas yang luar biasa tanpa menjadi pengoptimalan prematur karena poin pertama.
Jika semua kelas memanggil satu sama lain melalui antarmuka, maka ini mengarah pada
kemampuan untuk rip bagian mana pun dari sistem dan menggunakannya kembali di
tempat lain. Terlebih lagi, penggunaan Indirection memungkinkan Anda untuk
menambahkan hampir semua template dari sekelompok empat orang tanpa terlalu banyak
ketegangan atau kelas refactor.
7. Polymorphism
Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari
satu tipe argumen. Pada bahasa lain (khususnya C++), konsep ini sering disebut dengan
method overloading. Pada dasarnya, Python tidak menangani hal ini secara khusus. Hal ini
disebabkan karena Python merupakan suatu bahasa pemrograman yang bersifat dynamic
typing yaitu tidak memerlukan deklarasi tipe.

Polymorphism adalah suatu object dapat memiliki berbagai bentuk, sebagai object dari class
sendiri atau object dari superclassnya.

 Overloading: Penggunaan satu nama untuk beberapa method yang berbeda (beda
parameter)
 Overriding: terjadi ketika deklarasi method subclass dengan nama dan parameter yang
sama dengan method dari superclassnya.

Polymorphism dapat berarti banyak bentuk, maksudnya yaitu dapat menimpa (override),
suatu method, yang berasal dari parent class (super class) dimana object tersebut
diturunkan, sehingga memiliki kelakuan yang berbeda. Polimorfisme pada Java ada dua
macam,Static Polymorphism (Polimorfisme statis)dan Dynamic Polymorphism (Polimorfisme
dinamis).Beda dari keduanya terletak pada cara membuat polimorfismenya.Polimorfisme
statis menggunakan method overloading sedangkan polimorfisme dinamis menggunakan
method overriding.

8. Pure Fabrication
Pure Fabrication adalah kelas yang tidak mewakili konsep dalam domain masalah,
khusus dibuat untuk mencapai low coupling, high cohesion, dan potensi penggunaan
kembali yang diturunkan (ketika solusi yang disajikan oleh pola pakar informasi tidak).
9. Protected Variations
Pola variasi yang dilindungi melindungi elemen dari variasi elemen lain (objek, sistem,
subsistem) dengan membungkus fokus ketidakstabilan dengan antarmuka dan
menggunakan polimorfisme untuk membuat berbagai implementasi antarmuka ini.

Anda mungkin juga menyukai