Zpo-10-wyk-Slajd12

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Change Unidirectional Association with Bi

Change Unidirectional Association with Bi


Przekształcenie to dotyczy zmiany nawigowalności relacji asocjacji z jednokierunkowej na dwukierunkową. W asocjacji takiej wyróżnia się dwie strony: kontrolującą, do której dostęp ma klient i która zarządza relacją, oraz kontrolowaną, odgrywającą bardziej pasywną rolę. Na rysunku rolę kontrolującą (oznaczoną niebieską obwódką) odgrywa obiekt A, natomiast rolę kontrolowaną – obiekt B.

Przekształcenie polega na stworzeniu po stronie kontrolowanej referencji do obiektu kontrolującego oraz wprowadzeniu mechanizmu synchronizującego referencje po obu stronach relacji.

Pierwszym krokiem jest wprowadzenie pola, które będzie przechowywać referencje powrotne typu A. W przypadku relacji o krotności 1 wystarczy zwykła referencja typu A, natomiast w przypadku krotności n typem tym może być Set<A>, czyli zbiór referencji typu A.

Następnie należy utworzyć po stronie kontrolowanej metodę, która będzie wywoływana przez stronę kontrolującą w celu aktualizacji referencji. Ponieważ metoda ta powinna być niedostępna dla klienta, w języku C++ należy ją uczynić prywatną, a następnie zaprzyjaźnić z klasą A. Ponieważ jednak w języku Java pojęcie klas zaprzyjaźnionych nie istnieje, dlatego konieczne jest oznaczenie metody w sposób jednoznacznie wskazujący na jej przeznaczenie tylko do użytku klasy A.

Ostatnim krokiem jest modyfikacja metody w klasie A, która odpowiada za dodawanie obiektów typu B, tak aby za pomocą metody w klasie B aktualizowała także referencje powrotne.


<< Poprzedni slajd | Spis treści | Następny slajd >>