Zpo-1-wyk-Slajd35
Powiązania między obiektami
Drugim kryterium jakości projektu obiektowego jest stopień powiązania klas. Powiązanie pomiędzy dwiema niespokrewnionymi klasami jest skierowaną relacją, która odzwierciedla stopień i rodzaj zależności pomiędzy nimi. Klasa A jest powiązana z klasą B, jeżeli musi posiadać o niej jakąś wiedzę: posiadać składową tego typu, implementować typ B, być podklasą B, definiować metodę, która zawiera taką klasę w swojej sygnaturze (jako parametr, wartość zwracana lub deklarowany wyjątek).
Podobnie jak w przypadku spójności, powiązania wyraża się w kategoriach powiązań luźnych (o niskim stopniu) i mocnych (o dużej liczbie zależności).
Słabe powiązanie oznacza, że analizowana klasa w niewielkim stopniu zależy od zmian w innych klasach. Mają na to wpływ dwa czynniki: liczba powiązań oraz ich rodzaj. Siła powiązania jest odwrotnie proporcjonalna do abstrakcyjności klasy zależnej: zależność od stabilnego interfejsu jest mniejsza od zależności od szczegółowej klasy implementacyjnej.
Wysoki stopień powiązań ma negatywny wpływ na wiele zewnętrznych czynników jakości programu, m.in. jego pielęgnowalność, elastyczność i stopień abstrakcji. Dlatego projekt obiektowy powinien minimalizować liczbę powiązań między klasami i interfejsami, i jednocześnie preferować zależności od stabilnych interfejsów.
Warto zwrócić uwagę na zależność pomiędzy spójnością a powiązaniami: w większości wypadków wysoka spójność oznacza także niski stopień powiązań, a brak spójności stopień ten zwiększa.