Wyklad IO 6, Akademia Górniczo-Hutnicza AGH, Wydział Inżynierii Mechanicznej i Robotyki WIMiR IMiR, Automatyka ...

[ Pobierz całość w formacie PDF ]
//-->Inżynieria oprogramowaniaProjektowanie systemów informatycznychDr inż. Lucjan Miękinaupel.agh.edu.pl/wimir/login/Katedra Robotyki i MechatronikiApril 25, 20141/1Inżynieria OprogramowaniaWzorzecStan(ang.State)WzorzecStandefiniuje mechanizm, który zmienia sposób funkcjonowania obiektu wzależności od jego stanu, rozumianego jako pewien zbiór wartości. W wyniku tegoobiekt może być traktowany jako zmieniający swój typ (klasę) w aspekcierealizowanych przez ten obiekt operacji.WzorzecStanmoże być stosowany, gdy:obiekt musi zmieniać sposób funkcjonowania w zależności od swojego stanu wtrakcie działania programu, w którym jest osadzony;pewna operacja posiada złożoną, wielowariantową strukturę, zależną odparametru należącego do zbioru stałych, identyfikujących poszczególne stany.Odwzorowując każdy z wariantów operacji w oddzielną klasę, można zmieniaćfunkcjonalność w zależności od wartości parametru sterującego.Dla każdego stanu, w jakim może się znajdować obiekt, definiuje się oddzielną klasę,będącą albo podklasą pewnej klasy abstrakcyjnej, albo klasą zapewniającąimplementację interfejsu zdefiniowanego dla wszystkich stanów. Metody tej klasyimplementują operacje związane z tym stanem w sposób dla niego specyficzny, tymsamym zapewniając pożądaną zmianę funkcjonowania obiektu.2/1Inżynieria OprogramowaniaSchemat wzorcaStanSkładniki wzorca:Context– definiuje interfejs używany dla dostępu do obiektu zmieniającego stan.Na schemacie została zdefiniowana tylko jedna metoda tego interfejsu – o nazwieRequest,ale w zastosowaniach można użyć dowolnej ich ilości;State– definiuje abstrakcyjny interfejs dla wszystkich swoich podklasimplementujących funkcjonalność charakterystyczną dla stanów obiektu;ConcreteStateA, ConcreteStateB– podklasy implementujące operacjecharakterystyczne dla poszczególnych stanów, zgodnie z deklaracją interfejsu wklasieState.3/1Inżynieria OprogramowaniaWzorzecStan- przykład implementacjiWzorzecStanzastosowano do implementacji przełącznika dwustanowego(przyjmującego stany: wyłączony i włączony).W abstrakcyjnej klasieStatezdefiniowano, oprócz abstrakcyjnej metodyHandle,również polenamedo przechowywania nazwy stanu i polenextdo przechowywanianumeru następnego stanu.1// plik: State.java2packageStatePattern;3456789101112131415161718public abstract classState{String name;protectedintnext;publicState(Stringname,intnext){this.name=name;this.next=next;}public abstractintHandle();publicvoidinfo(){System.out.print(name);}}4/1Inżynieria OprogramowaniaWzorzecStan- implementacja klas konkretnychZdefiniowano dwie podklasyState,które implementują sposób działania przełącznikaw stanie wyłączonym (klasaConcreteStateA)i włączonym (klasaConcreteStateB).Dzięki zastosowaniu polanext,możliwe jest przeniesienie funkcjonalności metodyHandledo klasyState,gdyż metodyHandlew obu podklasach są identyczne.1234567891011121314// plik: ConcreteStateA.javapackageStatePattern;public classConcreteStateAextendsState{publicConcreteStateA(String name,intnext){super(name,next);}publicintHandle(){returnnext;}}1234567891011121314// plik: ConcreteStateB.javapackageStatePattern;public classConcreteStateBextendsState{publicConcreteStateB(String name,intnext){super(name,next);}publicintHandle(){returnnext;}}5/1 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • enzymtests.keep.pl
  •