Zpo-8-wyk-Slajd41: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Przykład(1)==
==Inappropriate Intimacy==


[[Image:zpo-8-wyk-Slajd41.PNG|Przykład(1)]]
[[Image:zpo-8-wyk-Slajd41.PNG|Inappropriate Intimacy]]




Pierwszy krok przekształcenia polega na utworzeniu podklasy PustaKsiążka i zdefiniowaniu w niej oraz w nadklasie metody ''czyPusta'' ''().'' W podklasie zwraca ona wartość ''true'' , natomiast w nadklasie – ''false'' ''.'' Wszystkie przypisania do zmiennych typu Książka, które dotychczas przyjmowały wartość ''null'' , muszą zostać zastąpione instancjami podklasy PustaKsiążka. Ponieważ obecnie żadna zmienna nie może posiadać wartości ''null'' , dlatego instrukcje warunkowe w klasach klienckich, sprawdzające czy referencja ma taką wartość, muszą korzystać z metody ''czyPusta'' ''().''
Niewłaściwa hermetyzacja jest dość częstym i dobrze znanym problemem. Wiąże się ona nie tylko z niepoprawnym użyciem kwalifikatorów dostępu, ale przede wszystkim z niewłaściwym podziałem odpowiedzialności pomiędzy klasy: jeżeli wymagają one bezpośredniego dostępu do swoich prywatnych części, oznacza to, że są zbyt ze sobą związane.
 
Podstawowym rozwiązaniem jest przesunięcie metod i pól prywatnych do klas, które najbardziej ich potrzebują. Można także ograniczyć wiedzę o sobie dwóch klas, zmieniając relację dwukierunkową na jednokierunkową. Wrażliwe i współdzielone elementy dwóch klas można wyłączyć do nowej klasy, której obiekty będą współdzielone pomiędzy nie, zachowując jednocześnie hermetyzację. Niepoprawna hermetyzacja jest również możliwa wewnątrz hierarchii dziedziczenia – wówczas w celu odseparowania nadklasy od podklas można zmienić dziedziczenie w delegację.




[[zpo-8-wyk-Slajd40 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd42 | Następny slajd >>]]
[[zpo-8-wyk-Slajd40 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd42 | Następny slajd >>]]

Aktualna wersja na dzień 18:14, 4 lis 2006

Inappropriate Intimacy

Inappropriate Intimacy


Niewłaściwa hermetyzacja jest dość częstym i dobrze znanym problemem. Wiąże się ona nie tylko z niepoprawnym użyciem kwalifikatorów dostępu, ale przede wszystkim z niewłaściwym podziałem odpowiedzialności pomiędzy klasy: jeżeli wymagają one bezpośredniego dostępu do swoich prywatnych części, oznacza to, że są zbyt ze sobą związane.

Podstawowym rozwiązaniem jest przesunięcie metod i pól prywatnych do klas, które najbardziej ich potrzebują. Można także ograniczyć wiedzę o sobie dwóch klas, zmieniając relację dwukierunkową na jednokierunkową. Wrażliwe i współdzielone elementy dwóch klas można wyłączyć do nowej klasy, której obiekty będą współdzielone pomiędzy nie, zachowując jednocześnie hermetyzację. Niepoprawna hermetyzacja jest również możliwa wewnątrz hierarchii dziedziczenia – wówczas w celu odseparowania nadklasy od podklas można zmienić dziedziczenie w delegację.


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