Zpo-8-wyk-Slajd20: 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(4)==
==Predykat noSideEffectsP==


[[Image:zpo-8-wyk-Slajd20.PNG|Przykład(4)]]
[[Image:zpo-8-wyk-Slajd20.PNG|Predykat noSideEffectsP]]




Klasa TypKarty przechowuje stałe reprezentujące poszczególne stany obiektu, jak również definiuje metodę fabrykę tworzącą obiekty jednej z jej podklas w zależności od przekazanego parametru. Zasada działania tego mechanizmu jest identyczna jak w przypadku poprzedniego przekształcenia, które reprezentowało stany jako podklasy.
Analityczne stwierdzenie, czy wykonanie wskazanego fragmentu kodu (pewnej funkcji) nie powoduje zmiany zachowania programu (modyfikacji wybranej zmiennej Var), okazuje się nierozstrzygalne. Spełnienie takiego warunku jest konieczne w przypadku wielu przekształceń refaktoryzacyjnych, dlatego stwierdzenie ich poprawności w dowolnym przypadku okazuje się niemożliwe. Ten przykład pokazuje, że analiza statyczna użyta jako metoda weryfikacji poprawności jest zbyt słabym narzędziem już w przypadku bardzo prostych warunków wstępnych.
 
W wyniku przekształcenia pole typu prymitywnego, przechowywane w klasie źródłowej, zostało przetransformowane do postaci oddzielnej klasy i jej podklas. Mechanizm ten pozwala swobodnie modyfikować wartość pola stanu w trakcie wykonywania programu (należy w tym celu utworzyć instancję innej z podklas), i rozróżniać stany na podstawie klasy. Jednak rozwiązanie to nie wykorzystuje do końca możliwości oferowanych przez polimorfizm, dlatego przekształcenie to można kontynuować.




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

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

Predykat noSideEffectsP

Predykat noSideEffectsP


Analityczne stwierdzenie, czy wykonanie wskazanego fragmentu kodu (pewnej funkcji) nie powoduje zmiany zachowania programu (modyfikacji wybranej zmiennej Var), okazuje się nierozstrzygalne. Spełnienie takiego warunku jest konieczne w przypadku wielu przekształceń refaktoryzacyjnych, dlatego stwierdzenie ich poprawności w dowolnym przypadku okazuje się niemożliwe. Ten przykład pokazuje, że analiza statyczna użyta jako metoda weryfikacji poprawności jest zbyt słabym narzędziem już w przypadku bardzo prostych warunków wstępnych.


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