Co dokładnie w programowaniu obiektowym oznacza pojęcie zwartości?
Co dokładnie w programowaniu obiektowym oznacza pojęcie zwartości?
Zwartość/spójność (cohesion) - określa stopień w jakim część kodu stanowi logicznie zamkniętą całość
Zwartość:
- opisuje w jakim stopniu elementy komponentu są ukierunkowane na realizację wspólnego celu
- stanowi miarę na ile wszystkie elementy realizujące określony cel są zawarte w jednym komponencie
- jest miarą powiązań odpowiedzialności elementów wewnątrz komponentu
Stopień zwartości może określać ilość powiązań wewnątrz komponentu. Niska liczba powiązań może oznaczać źle wytyczone granice komponentu, tzn. że kod wewnątrz komponentu nie jest ze sobą logicznie powiązany.
Zwartość można definiować na różnych poziomach abstrakcji - rolę komponentu może pełnić metoda, klasa, grupa klas lub moduł.
Typy zwartości:
1. zwartość przypadkowa (coincidental cohesion) |
|
2. zwartość logiczna (logical cohesion) - elementy komponentu są powiązane logicznie, ale nie funkcjonalnie - komponent klienta dokonuje wyboru jednego z elementów |
|
3. zwartość czasowa (temporal cohesion) - kryterium grupującym elementy jest czas - np. zbiór czynności wykonywanych w wyniku wystąpienia zdarzenia |
|
4. zwartość proceduralna (procedural cohesion) - elementy komponentu są powiązane ze sobą tylko w celu zapewnienia określonej kolejności wykonania |
|
5. zwartość komunikacyjna (communicational cohesion) - funkcje wykonywane są na tym samym zestawie danych, lub w celu ich utworzenia - np. aktualizacja rekordu w bazie danych i wypisanie go na ekranie |
|
6. zwartość sekwencyjna (sequential cohesion) - określa przepływ danych pomiędzy częściami systemu - dane wyjściowe jednej części stają się danymi wejściowymi kolejnej - występuje naturalnie w funkcyjnych językach programowania |
|
7. zwartość funkcjonalna (functional cohesion) - każdy istotny dla danej operacji element jest zawarty w komponencie - taki element realizuje cel dla którego został stworzony i nic poza tym - najlepszy typ zwartości |