Zpo-8-wyk-Slajd27: 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:
==Pull Up Constructor Body==
==Przykład przekształcenia testowalnego==


[[Image:zpo-8-wyk-Slajd27.PNG|Pull Up Constructor Body]]
[[Image:zpo-8-wyk-Slajd27.PNG|Przykład przekształcenia testowalnego]]




Nieco innym problemem jest przeniesienie do nadklasy części konstruktora. Podstawową różnicą pomiędzy konstruktorem jest fakt, że konstruktor nie może być odziedziczony ani wywołany polimorficznie. Wywołanie konstruktora zawsze tworzy instancję określonej klasy, na rzecz której został wywołany. W przypadku dziedziczenia podklasa musi zawsze wywołać konstruktor nadklasy jako pierwszą instrukcję swojego konstruktora – i dlatego przenoszenie do nadklasy jego części różni się od zwykłego przeniesienia metody.
Przykładem przekształcenia należącego do drugiej kategorii jest Move Method. Przesunięcie metody ''przedmiot'' ''()'' z klasy Przedmiot do klasy Student wymaga sprawdzenia kilku warunków, z których dwa (zaznaczone "ptaszkami") można zweryfikować bez konieczności uruchamiania kodu. Pozostałe wymagają wprawdzie testowania, jednak jest możliwe wskazanie, jak powinny wyglądać takie testy, i opracowanie dla nich np. generycznych szablonów związanych z samym przekształceniem. Innymi słowy, wygenerowanie testów dla innych klas wymagałoby jedynie ukonkretnienia szablonów testowych nowymi parametrami.
 
Przekształcenie zaczyna się od zadeklarowania konstruktora w nadklasie i przeniesienie do niego wspólnych fragmentów kodu konstruktorów z podklas. Następnie w konstruktorach podklas należy wywołać konstruktor nadklasy jako pierwszą instrukcję (poprzez kwalifikator ''super'' ).




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

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

Przykład przekształcenia testowalnego

Przykład przekształcenia testowalnego


Przykładem przekształcenia należącego do drugiej kategorii jest Move Method. Przesunięcie metody przedmiot () z klasy Przedmiot do klasy Student wymaga sprawdzenia kilku warunków, z których dwa (zaznaczone "ptaszkami") można zweryfikować bez konieczności uruchamiania kodu. Pozostałe wymagają wprawdzie testowania, jednak jest możliwe wskazanie, jak powinny wyglądać takie testy, i opracowanie dla nich np. generycznych szablonów związanych z samym przekształceniem. Innymi słowy, wygenerowanie testów dla innych klas wymagałoby jedynie ukonkretnienia szablonów testowych nowymi parametrami.


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