Home > design > OOD: Dependency between classes…

OOD: Dependency between classes…

Hal lain yang perlu diperhatikan saat design adalah ketergantungan sebuah kelas terhadap kelas lainnya. Idealnya, ketergantungan dibuat seminimal mungkin agar modifikasi di sebuah kelas tidak terlalu besar pengaruhnya terhadap kelas lain.

Ketergantungan (dependency) kelas B terhadap kelas A dinyatakan dengan visibility kelas A terhadap kelas B. Ada beberapa jenis visibility (diambil dari definisi RUP), yaitu:

  • global visibility; biasanya untuk kelas-kelas utility; kelas utility A visible terhadap B apabila instans kelas B bisa menggunakan seluruh service dari kelas A; apabila kelas A dimodifikasi, maka kelas B perlu dimodifikasi pula di bagian-bagian yang memanfaatkan service kelas A.
  • parameter visibility; kelas A parameter visible terhadap kelas B jika method kelas B punya parameter bertipe kelas A. Jika kelas A dimodifikasi, maka hanya method terkait saja yang mungkin harus dimofifikasi di kelas B.
  • field visibility; kelas A field visible terhadap kelas B jika kelas A di-create dan di-invoke oleh kelas B; visibility jenis ini digambarkan sebagai asosiasi (bukan dependensi)
  • local visibility; kelas A local visible terhadap kelas B jika service kelas A hanya diperlukan pada suatu method di kelas B; ketergantungan kelas B terhadap kelas A hanya ada di method tsb.

Dependency digambarkan dengan garis putus-putus dan arah panah terhadap kelas yang menyediakan service (kelas A pada contoh-contoh di atas).

Buat apa lagi ini ? Tentu saja untuk memperkirakan efek modifikasi sebuah kelas terhadap kelas lainnya…

Categories: design
  1. January 22, 2009 at 1:27 pm

    Implementasi visibility ini sudah ada di sejumlah bahasa pemrograman atau masih berupa pemanfaatan algoritma saja ya,.

  2. January 22, 2009 at 5:58 pm

    @nanto :
    IMHO, bisa sih harusnya, rasanya implementasinya tidak harus terpaku pada fitur bahasa pemrograman

  3. January 23, 2009 at 12:20 am

    Dalam ranah OO, implementasi konsep visibility ini uda ada sejak jadul bhs pemrogman OO dibuat, misal C++, Object Pascal, dan termasuk Java tentunya. Bgm implementasinya? Persis spt yg bu Yani jelaskan di atas. CMIIW

  4. January 23, 2009 at 3:10 pm

    @Dwinanto:
    Ya, dependency ini sudah bisa diimplementasikan. Bahkan mungkin kamu pun sudah sering pakai. Hanya belum familiar bahwa itu adalah dependency…

    @Petra:
    Ya, asalkan OO language, tentu bisa mengimplementasikannya…

    @Irfin:
    Benar, konsep ini sudah ada sejak OO dikenalkan. Ada kaitannya dengan konsep enkapsulasi. Hanya saja, visibility yang banyak dikenal kan biasanya untuk atribut dan method (public, private, atau protected). Nah, yang saya bahas di atas adalah visibility kelas…

  5. September 24, 2009 at 11:39 pm

    Coupling pasti akan selalu ada. Tetapi coupling yg berlebihan atau high coupling akan menimbulkan masalah. Oleh karena itu kita harus dapat membagi-bagi nya menjadi modul-modul sehingga coupling tersebut dapat dikurangi.

  6. September 28, 2009 at 9:46 am

    Ya, sebaiknya suatu kelas dirancang sedemikian rupa sehingga ketergantungannya pada kelas lain, seminimal mungkin..

  7. October 2, 2009 at 12:58 pm

    ketergantungan antar kelas itu dapat diperkecil juga dengan menerapkan whole-part (Pattern Oriented Softaware Architecture vol 1) atau yg lebih concretenya pada prinsip Aggregates Root pada Domain Driven Design

  8. October 2, 2009 at 9:01 pm

    @Welly: thx for sharing…

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: