wyklady IP, Studia PŚK informatyka, Semestr 5, semestr 5, Inżynieria programowania, Wykłady
[ Pobierz całość w formacie PDF ]
//-->Klasa Składnia UML/JavaPola - atrybuty klasyMetody - operacje klasyKonstruktor – określa sposób tworzenia klasyKlasa aktywna – klasa zawierająca metodęstatyczną main() (punkt wejścia programu), nadiagramie oznaczamy pogrubiona liniaModyfikatory dostępupublic - dostępne globalnie (w UML +)private - dostępne lokalnie (tylko w obrębieklasy)protected - dostępne w pakiecie oraz klasachpochodnych z innych pakietówstatic - bez konieczności tworzenia obiektufinal - brak możliwości zmianypublic class MainClasspublic int attribute;public Mainclass() {}public staticvoid main (String[ ]args){}}Klasa abstrakcyjnaklasa abstrakcyjna - klasa z niepełnąimplementacjąmetody abstrakcyjne - bez implementacjiabstrakcja oznaczana jest kursywapublic class ExampleClass {public static final int CONSTANT = 0;private int private Attribute;int friendly Attribute;public void public Method() {}protected void protected Method();}Uogólnieniedziedziczenie - rozszerzenie klasy bazowejpolimorfizm - przeciążanie oraz przesłanianieInterfejsinterfejs - klasa całkowicie abstrakcyjnametody - tylko deklaracje (bez implementacji)pola - traktowane jako stałewszystkie elementy są automatycznie publiczne,pola dodatkowo statyczne i ostateczneClass BaseClass {public void method() {}}public class ChildClassextends BaseClass {public void method() {}public void method(int arg){}}public interface interface {void method();}Pakietpakiet - jednostka biblioteczne (grupuje klasyoraz interfejsy)package package.name;1Realizacjaimplementacja – definiowanie metodinterface Interface {void method();}public class ImplementationClass implementsInterface {public void method() {}}Asocjacjaasocjacja - czasowe utrzymywanie referencjido obiektu klasy wskazywanej przez związek(obiekty są od siebie niezależne, ale mają dosiebie dostęp)zwykle reprezentuje atrybut klasyKompozycja (agregacja całkowita):związek typu całość- częśćagregacja całkowita (kompozycja) - relacjawyłącznej własności (FirstClass nie możeistnieć bez SecondClass) oraz jedności czasużycia (część nie może istnieć bez całości)class FirstClass{}public class SecondClass {public FirstClass(){}Zależność (związek opcjonalny):użycie – przekazywanie obiektu klasy wskazywanejprzez związek poprzez argument metody lubpowrót (zmiany w jednej klasie są uzależnione oddrugiej)Agregacja (niecałkowita):związek typu całość-częśćagregacja - długotrwałe utrzymywaniereferencji do obiektu;referencja przekazywana w konstruktorze lub/imetodzie (część może należeć do wielucałości)class FirstClass{public class SecondClass{private FirstClass composition;public SecondClass (FirstClass c){composition=c; } }class FirstClass{}public class SecondClass {public FirstClass make(){return new FirstClass(); } }2Wzorce projektowedefinicjaWzorzec identyfikuje i specyfikuje pewną abstrakcję, której poziom znajduje się powyżej poziomu abstrakcjipojedynczej klasy, instancji lub komponentu.wzorzec projektowy - stanowi sposób rozwiązania problemuklasa - sposób opisu (rzeczywistości)instancja - reprezentacja bytukomponent - część systemuPrzegląd wzorców projektowychGOF Patterns – 23 wzorce projektowe (GOF - Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides))GUI Patterns: Applet, AplicationTesting Patterns: Test Case, Test SuiteJ2EE PatternsGOFwzorce konstrukcyjnewzorce strukturalnewzorce czynnościoweWzorce konstrukcyjneOkreślają sposoby tworzenia(inicjowania) obiektów. Oddzielają resztę programu od sposobu tworzenia ireprezentacji obiektów.Abstract FactoryBuilderFactory MethodPrototypeSingletonWzorce strukturalneOpisują strukturę połączeń różnych klas, określając sposób dostępu tych klas (między sobą) oraz ich hierarchie.AdapterBridgeCompositeDecoratorFacadeFlyweight(pyłek)Proxy(pośrednik)Wzorce czynnościoweOpisują sposób interakcji klas. Dzielą funkcjonalność pomiędzy klasy tak aby dostęp do niej nie wymagałwnikania w strukturę systemu.Chain of ResponsibilityCommand (polecenie)InterpreterIteratorMediatorMemento (pamiątka)Observer (obserwator)StateStrategyTemplate MethodVisitorPrzydatne uwagi:dziedziczenie- definiować szczyt hierarchii dziedziczenia jako klasy abstrakcyjne lub interfejsy, które niedostarczają implementacjikompozycja - stosować raczej kompozycję niż dziedziczenie3WZORCE KONSTRUKCYJNEFactory Method (metoda fabrykująca)Prosta klasa decyzyjna, która w zależności od otrzymanych danych, zwraca obiekt jednej z wielu klaspochodnych abstrakcyjnej klasy bazowej.(definiuje, który konkretny obiekt ma utworzyć)Elementy:produkt (Shape) - definiuje interfejs obiektów tworzonych przez metodę wytwórcząprodukt konkretny (Square/Circle) - implementuje interfejs produktutwórca - deklaruje metodę wytwórczą, która zwraca obiekt produktutwórca konkretny (ShapeFactory) - definiuje metodę wytwórczą, żeby zwracała obiekt produktukonkretnegoZastosowanie:gdy klasa nie może przewidzieć, jakich klas obiekty musi tworzyćgdy klasa chce, by to jej podklasy specyfikowały tworzone przez nią obiektyOdmiany wzorca:parametry są przekazywane do fabryki i określają, który z wielu rodzajów klas obiekt zwrócićklasa bazowa jest abstrakcyjna, a wzorzec zwraca obiekt kompletnej (nie abstrakcyjnej) klasy pochodnej(klasa abstrakcyjna zawiera metodę fabryki)klasa bazowa zawiera podstawowe metody i tworzy obiekt klasy pochodnej tylko wtedy, gdy podstawowaimplementacja jest niewystarczająca4Abstract Factory (fabryka abstrakcyjna)Dostarcza interfejsu umożliwiającego tworzenie rodzin spokrewnionych lub uzależnionych od siebie obiektówbez konieczności określania ich konkretnych klas.Elementy:fabryka abstrakcyjna (GameElementFactory) - deklaruje interfejs tworzenia produktówfabryka konkretna (KittiesAndPuzzles/KillAndDismember) - implementuje operacje tworzenia produktówkonkretnychprodukt abstrakcyjny (Obstacle/Player) - deklaruje interfejs dla pewnego rodzaju produktuprodukt konkretny (Puzzle/Kitty/NastyWeapon/KungFuGuy) - definiuje klasę obiektu będącego produktem,który ma być utworzony przez odpowiednią fabrykę konkretnąklient (GameEnviroment) - używa jedynie interfejsów zadeklarowanych przez klasy fabryki abstrakcyjnej iproduktu abstrakcyjnegoKonsekwencje:pomaga zapanować nad tym, jakie klasy obiektów tworzy dana aplikacjaumożliwia łatwą zmianę fabryki konkretnej używanej przez aplikację (zmiana rodziny produktów)ogranicza używane przez aplikację klasy obiektów do jednej rodzinydołączanie nowych rodzajów produktów związane jest ze zmianą fabryki abstrakcyjnej oraz jej wszystkichpodklas5
[ Pobierz całość w formacie PDF ]