Association Tipleri Neler? Composition Nedir? Aggregation Nedir? Dependency Injection Nedir?

“Association” birden fazla nesnenin birbiri ile alakasının adlandırmasıdır. İki nesnenin birbiri ile nasıl bir bağı var ve birbirinin işlevselliğini nasıl kullanırlar sorusunun cevabı association’da saklıdır.

relation-types
Relation Types

Üç çeşit association vardır:

Composition (Bileştirme)

Güçlü tip association’dır. Nesnelerden biri diğerine sahiptir. Sahip nesne yoksa ait nesnenin işlevselliğinden söz edilemez. Arada sahiplik-aitlik ilişkisi (… has …) vardır. Böyle bir association’ın çıktısı “composite model” olarak adlandırılır. Composition daima tek yönlüdür (uni-directional).

Aggregation (Toparlama)

Zayıf tip association’dır. Nesnelerden biri diğerinin yalnızca parçasıdır. Bu tip association’ın nesnelerinden birinin oturumu yoksa da diğerinin işlevselliği kısmen devam edebilir. Söz konusu nesnelerin varlığı birbirinden bağımsızdır. Arada “-nın parçası” ilişkisi (… part of …) vardır. Böyle bir association’ın çıktısı “aggregate” olarak adlandırılır. Aggregation tek yönlü (uni-directional) de olabilir çift yönlü (bi-directional) de olabilir.

Direct Association – Dependency Injection (Bağımlılık Enjeksiyonu)

Zayıf tip association’dır. “Collaboration” veya “delegation” ilişkisi söz konusudur. Nesnelerin varlığının da varoluşunun da birbiri ile alakası yoktur. Arada “-nın sunucusu/istemcisi” ilişkisi (… server/client of …) vardır. Böyle bir association’ın unsurları “colleague” olarak adlandırılır. Daima çift yönlü (bi-directional) bir ilişki söz konusudur (server-client/client-server).

Not: Inheritance, implementation gibi ilişkiler association kapsamında değildir.