Zpo-8-wyk-Slajd9: 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:
==Replace Type Code with Subclasses==
==Rozszerzona definicja==


[[Image:zpo-8-wyk-Slajd9.PNG|Replace Type Code with Subclasses]]
[[Image:zpo-8-wyk-Slajd9.PNG|Rozszerzona definicja]]




Drugie przekształcenie związane z polem reprezentującym stan obiektu dotyczy sytuacji, w którym zmiana stanu oznacza zmianę zachowania niektórych metod obiektu. W tym wypadku użycie pojedynczej klasy jest niewystarczające: konieczne jest pokrycie metod, tak aby ich zachowanie odpowiadało stanowi, w jakim znajduje się obiekt.
Roberts zaobserwował, że proste przekształcenia zdefiniowane przez Opdyke'a nie są stosowane w praktyce, ponieważ wprowadzają zbyt drobne zmiany. Konieczne jest zatem stosowanie większych struktur: łańcuchów przekształceń. Jednak dowodzenie poprawności całych łańcuchów było zbyt trudne, ponieważ wymagało osobnego dowodu dla każdego przekształcenia z osobna, a co za tym idzie – obliczenia warunków wstępnych będących wynikiem wykonania wcześniejszych przekształceń w łańcuchu.


Przekształcenie polega na wydzieleniu każdej wartości pola reprezentującego stan obiektu do oddzielnej podklasy. W ten sposób powstaje możliwość pokrywania metod wymagających zmiany zachowania, a jednocześnie wykorzystane jest dziedziczenie jako mechanizm powtórnego użycia kodu.
Dlatego Roberts zaproponował, aby rozszerzyć definicję każdego przekształcenia o warunki końcowe, które są prawdziwe po jej wykonaniu, np. po utworzeniu metody warunkiem końcowym jest jej istnienie. Ta drobna zmiana pozwoliła jednak znacznie łatwiej wykazywać poprawność łańcuchów przekształceń, wykorzystując znane już informacje pochodzące z analizy wcześniejszych przekształceń prostych.
 
Pierwszym krokiem przekształcenia jest hermetyzacja pola stanu, tak aby było dostępne we własnej klasie i jej podklasach. Następnie dla każdej dopuszczalnej wartości tego pola należy utworzyć nową podklasę, pokrywając w niej metodę zwracającą wartość pola stanu w nadklasie na reprezentowany przez tę podklasę stan. Po przeniesieniu wszystkich wartości pola ono samo może zostać usunięte z nadklasy, a metody dostępowe do niego (''set'' i ''get'' ) – zadeklarowane jako abstrakcyjne.




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

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

Rozszerzona definicja

Rozszerzona definicja


Roberts zaobserwował, że proste przekształcenia zdefiniowane przez Opdyke'a nie są stosowane w praktyce, ponieważ wprowadzają zbyt drobne zmiany. Konieczne jest zatem stosowanie większych struktur: łańcuchów przekształceń. Jednak dowodzenie poprawności całych łańcuchów było zbyt trudne, ponieważ wymagało osobnego dowodu dla każdego przekształcenia z osobna, a co za tym idzie – obliczenia warunków wstępnych będących wynikiem wykonania wcześniejszych przekształceń w łańcuchu.

Dlatego Roberts zaproponował, aby rozszerzyć definicję każdego przekształcenia o warunki końcowe, które są prawdziwe po jej wykonaniu, np. po utworzeniu metody warunkiem końcowym jest jej istnienie. Ta drobna zmiana pozwoliła jednak znacznie łatwiej wykazywać poprawność łańcuchów przekształceń, wykorzystując znane już informacje pochodzące z analizy wcześniejszych przekształceń prostych.


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