Results (
Indonesian) 2:
[Copy]Copied!
ike Rendah Coupling, Kohesi tinggi adalah prinsip yang perlu diingat selama semua
keputusan desain; itu adalah tujuan yang mendasari untuk terus dipertimbangkan. Ini adalah prinsip evaluatif yang seorang desainer berlaku saat mengevaluasi semua keputusan desain.
Grady Booch menjelaskan kohesi fungsional tinggi yang ada ketika unsur-unsur
dari komponen (seperti kelas) "semua bekerja sama untuk menyediakan beberapa baik dibatasi
perilaku" [Booch94] .
Berikut adalah beberapa skenario yang menggambarkan berbagai tingkat kohesi fungsional:
1. Kelas cohesionóA sangat rendah bertanggung jawab untuk banyak hal di sangat dif
bidang fungsional yang berbeda-.
O Asumsikan kelas ada yang disebut RDB-RPC-Interface yang benar-benar bertanggung jawab untuk berinteraksi dengan database relasional dan
untuk menangani panggilan prosedur remote. Ini adalah dua sangat berbeda
area fungsional, dan masing-masing membutuhkan banyak kode pendukung. The
tanggung jawab harus dipecah menjadi keluarga kelas terkait dengan
RDB akses dan keluarga yang terkait dengan dukungan RFC.
2. Kelas cohesionóA rendah memiliki tanggung jawab untuk tugas yang kompleks dalam satu func
daerah nasional.
O Asumsikan kelas eksis disebut RDBInterface yang benar-benar
bertanggung jawab untuk berinteraksi dengan database relasional. Metode
kelas semua terkait, tapi ada banyak dari mereka, dan sejumlah besar kode mendukung; mungkin ada ratusan atau
ribuan metode. Kelas harus dibagi menjadi keluarga kelas ringan berbagi pekerjaan untuk menyediakan akses RDB.
234
Gambar 16.12 Sale menciptakan Pembayaran
Dalam prakteknya, tingkat kohesi saja Canit dipertimbangkan dalam isolasi dari tanggung jawab lain dan lain
prinsip-prinsip seperti Ahli dan Low Coupling.
16 - GRASP: MERANCANG BENDA DENGAN TANGGUNG
JAWAB: Registrasi: Sale
makePayment
(): Pembayaran
buat ()
makePayment ()
TINGGI KERUKUNAN
3. Kelas cohesionóA tinggi memiliki tanggung jawab moderat dalam satu area fungsional
dan bekerja sama dengan kelas-kelas lain untuk memenuhi tugas.
O Asumsikan kelas eksis disebut RDBInterface yang hanya sebagian
bertanggung jawab untuk berinteraksi dengan database relasional. Berinteraksi
dengan selusin kelas lain yang berkaitan dengan akses RDB untuk
mengambil dan menyimpan benda-benda.
4. Kelas cohesionóA moderat memiliki tanggung jawab yang ringan dan satu-satunya di
daerah yang berbeda yang secara logis berhubungan dengan konsep kelas, tetapi tidak untuk
satu sama lain.
O Asumsikan kelas ada yang disebut Perusahaan yang benar-benar bertanggung jawab untuk (a) mengetahui karyawan dan (b) mengetahui keuangan
informasi. Kedua daerah tidak sangat terkait satu sama
lain, meskipun keduanya secara logis terkait dengan konsep perusahaan. Selain itu, jumlah total metode umum kecil, seperti
jumlah kode mendukung.
Sebagai aturan praktis, kelas dengan kohesi tinggi memiliki jumlah yang relatif kecil dari
metode, dengan fungsi yang sangat terkait, dan tidak melakukan terlalu banyak kerja. Ini
bekerja sama dengan benda-benda lain untuk berbagi usaha jika tugas besar.
Sebuah kelas dengan kohesi tinggi adalah menguntungkan karena relatif mudah untuk mempertahankan, memahami, dan menggunakan kembali. Tingkat tinggi fungsi terkait, dikombinasikan
dengan sejumlah kecil operasi, juga menyederhanakan pemeliharaan dan perangkat tambahan. The butir halus dari fungsi yang sangat terkait juga mendukung peningkatan
potensi reuse.
The High Kohesi patternólike banyak hal dalam objek technologyóhas sebuah
analogi dunia nyata. Ini adalah pengamatan umum bahwa jika seseorang mengambil terlalu banyak
yang responsibilitiesóespecially terkait yang harus benar didelegasikan kepada
othersóthen orang tersebut tidak efektif. Hal ini diamati pada beberapa manajer yang
belum belajar bagaimana untuk mendelegasikan. Orang-orang ini menderita kohesi rendah; mereka
siap menjadi "unglued."
lain Klasik Prinsip: Desain Modular
Coupling dan kohesi adalah prinsip-prinsip lama dalam desain perangkat lunak; merancang dengan
benda-benda tidak berarti mengabaikan fundamental mapan. Lain
theseówhich sangat terkait dengan kopling dan cohesionóis untuk mempromosikan desain modular. Untuk kutipan:
Modularity adalah milik dari sistem yang telah didekomposisi menjadi serangkaian kohesif dan longgar ditambah modul
[Booch94].
Kami mempromosikan desain modular dengan menciptakan metode dan kelas dengan kohesi tinggi. Pada tingkat dasar objek, modularitas dicapai dengan merancang setiap metode
dengan jelas, tujuan tunggal, dan pengelompokan satu set terkait kekhawatiran ke dalam kelas.
235
16 - GRASP: MERANCANG BENDA DENGAN TANGGUNG JAWAB
Kohesi dan Coupling; Yin dan Yang
Bad kohesi biasanya melahirkan kopling buruk, dan sebaliknya. 1 panggilan
kohesi dan kopling yin dan yang dari rekayasa perangkat lunak
karena pengaruh saling tergantung mereka. Sebagai contoh, mempertimbangkan GUI widget
kelas yang mewakili dan cat widget, menyimpan data ke database, dan memanggil
layanan remote object. Tidak hanya itu amat incohesive, tetapi digabungkan ke
banyak (dan berbeda) elemen.
Kontraindikasi Ada beberapa kasus di mana menerima kohesi lebih rendah dibenarkan.
Salah satu kasus adalah pengelompokan tanggung jawab atau kode dalam satu kelas atau komponen untuk
menyederhanakan pemeliharaan oleh salah satu personóalthough diperingatkan bahwa pengelompokan tersebut dapat
juga membuat perawatan lebih buruk. Tapi untuk Misalnya, aplikasi berisi
pernyataan SQL tertanam bahwa dengan prinsip-prinsip desain yang baik lainnya harus
didistribusikan di sepuluh kelas, seperti sepuluh "Database mapper" kelas. Sekarang, itu adalah
umum bahwa hanya satu atau dua ahli SQL tahu bagaimana mendefinisikan terbaik dan memelihara
SQL ini, bahkan jika ada puluhan berorientasi obyek (OO) programmer pada
proyek; Beberapa programmer OO mungkin memiliki keterampilan SQL yang kuat. Misalkan SQL
ahli bahkan bukan programmer OO nyaman. Arsitek perangkat lunak mungkin
memutuskan untuk kelompok semua pernyataan SQL ke dalam satu kelas, RDBOperations, sehingga
mudah bagi ahli SQL untuk bekerja pada SQL dalam satu lokasi.
Lain halnya untuk komponen dengan kohesi yang lebih rendah dengan server yang didistribusikan
benda. Karena implikasi overhead dan kinerja yang terkait dengan
objek remote dan komunikasi jarak jauh, kadang-kadang diinginkan untuk membuat
lebih sedikit dan lebih besar, objek server kurang kohesif yang menyediakan antarmuka untuk berbagai
operasi. Hal ini juga terkait dengan pola yang disebut kasar jauh
Interface, di mana operasi jarak jauh yang dibuat lebih kasar-grained di
untuk melakukan atau meminta lebih banyak pekerjaan dalam panggilan operasi remote, karena hukuman kinerja panggilan jarak jauh melalui jaringan. Sebagai contoh sederhana, bukannya
objek remote dengan tiga operasi halus setName, setSalary, dan
Sethi-reDate, ada satu setData operasi remote yang menerima satu set data.
Hal ini menyebabkan panggilan kurang terpencil, dan kinerja yang lebih baik.
Manfaat ï Kejelasan dan kemudahan pemahaman desain meningkat.
ï Pemeliharaan dan perangkat tambahan yang disederhanakan.
ï kopling rendah sering didukung.
I butir halus dari fungsi yang sangat terkait mendukung peningkatan penggunaan kembali
karena kelas kohesif dapat digunakan untuk tujuan yang sangat spesifik.
Being translated, please wait..
