Zpo-8-wyk-Slajd36: 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:
==Extract Superclass==
==Switch Statements ==


[[Image:zpo-8-wyk-Slajd36.PNG|Extract Superclass]]
[[Image:zpo-8-wyk-Slajd36.PNG|Switch Statements ]]




Przekształcenie to pozwala ujednolicić grupę niespokrewnionych klas o podobnych sygnaturach metod i podobnym zakresie odpowiedzialności. W efekcie powstaje ich nadklasa, do której zostają przeniesione wspólne metody i pola.
Niepoprawne wykorzystanie instrukcji wyboru i warunkowej w dużym stopniu wpływa na skomplikowanie przepływu sterowania w programie. Rozbudowane warunki oraz gałęzie kodu wykonywane po ich spełnieniu lub odrzuceniu przypominają zasady programowania strukturalnego, a przede wszystkim utrudniają zrozumienie ich sensu.  


Mechanika rozpoczyna się od utworzenia pustej nadklasy i zadeklarowania dziedziczenia po niej w każdej z analizowanych klas (oczywiście, w języku Java warunkiem poprawności takiego przekształcenia jest, aby nie były one już podklasami jakiejkolwiek innej klasy). Następnie, przeprowadzając zmiany w sygnaturach metod, należy doprowadzić do sytuacji, w której sygnatury te (i zakresy odpowiedzialności) będą albo identyczne, albo całkowicie różne. Metody identyczne należy przekopiować do nadklasy, a następnie kolejno usuwać z podklas. W przypadku metod całkowicie różnych można zostawić je w podklasach, w uzasadnionych przypadkach deklarując je w nadklasie jako abstrakcyjne (wówczas jednak wszystkie podklasy muszą je zaimplementować) lub o pustej domyślnej implementacji.
Pierwszym krokiem w kierunku usunięcia tego problemu jest ponownie wyłączenie fragmentów do nowych metod o intuicyjnych nazwach – w wielu przypadkach jest to rozwiązanie wystarczające. W innych można podzielić instrukcje warunkowe korzystając z mechanizmów obiektowych: polimorfizmu (każda gałąź staje się osobną implementacją tego samego interfejsu) lub dziedziczenia (każda podklasa reprezentuje jedną z gałęzi). Wówczas problem sterowania warunkami sprowadza się do tworzenia obiektów odpowiednich klas, a nie wyboru pomiędzy długimi blokami kodu.
 
W efekcie przekształcenia powstaje nadklasa, która definiuje w jednym miejscu wspólne metody i pola grupy klas.




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

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

Switch Statements

Switch Statements


Niepoprawne wykorzystanie instrukcji wyboru i warunkowej w dużym stopniu wpływa na skomplikowanie przepływu sterowania w programie. Rozbudowane warunki oraz gałęzie kodu wykonywane po ich spełnieniu lub odrzuceniu przypominają zasady programowania strukturalnego, a przede wszystkim utrudniają zrozumienie ich sensu.

Pierwszym krokiem w kierunku usunięcia tego problemu jest ponownie wyłączenie fragmentów do nowych metod o intuicyjnych nazwach – w wielu przypadkach jest to rozwiązanie wystarczające. W innych można podzielić instrukcje warunkowe korzystając z mechanizmów obiektowych: polimorfizmu (każda gałąź staje się osobną implementacją tego samego interfejsu) lub dziedziczenia (każda podklasa reprezentuje jedną z gałęzi). Wówczas problem sterowania warunkami sprowadza się do tworzenia obiektów odpowiednich klas, a nie wyboru pomiędzy długimi blokami kodu.


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