: ::Rysunek : ::Figura. Rysuj() *: Rysuj() Uwaga! Modularność (spójność i niezależność składowych) to nie to samo, lecz więcej niż hermetyzacja

Wielkość: px
Rozpocząć pokaz od strony:

Download ": ::Rysunek : ::Figura. Rysuj() *: Rysuj() Uwaga! Modularność (spójność i niezależność składowych) to nie to samo, lecz więcej niż hermetyzacja"

Transkrypt

1 Znaczenie projektowania Nie ma trudnych programów, są tylko źle zaprojektowane Jak coś jest trudne, to projektuj tak długo aż stanie się proste Kryteria jakości projektu Modularność Silne (wewnętrznie spójne) składowe (pakiety, komponenty, moduły, klasy, metody/funkcje) Niezależne (luźno powiązane) składowe Przejrzystość Modularność Nazewnictwo Złożoność składowych Modularność Możliwość pracy nad fragmentem programu Mniejsza propagacja zmian/błędów Możliwość ponownego wykorzystania składowych Spójność obiektowa Pola klasy służą do opisu pojedynczego bytu, a metody klasy operują na (wykorzystują, modyfikują) polach tej klasy Brak spójności obiektowej Brak spójności obiektowej

2 Dostęp do danych zwiększa zależność składowych Lepiej orysunek : ::Rysunek : ::Linia Rysuj Pobierz punkty() Rysuj linie() Uwaga! Modularność (spójność i niezależność składowych) to nie to samo, lecz więcej niż hermetyzacja Uniezależnienie klasy Rysunek od konkretnych figur Uniezależnienie klasy Rysunek od figur (mechanizm operacji polimorficznych) : ::Rysunek : ::Figura : Złożoność klasy Suma złożoności metod Miary złożoności metod: Liczba linii kodu Liczba warunków Złożoność cyklomatyczna liczba niezależnych ścieżek w grafie przepływu sterowania programu Cechy złego projektu Sztywność, brak elastyczności Wrażliwość, tendencja do ulegania uszkodzeniom Trudność wykorzystania fragmentów Niedostosowanie do rzeczywistości Nadmierna złożoność Niepotrzebne powtórzenia Nieprzejrzystość Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka 2

3 Zasada pojedynczej odpowiedzialności Żadna klasa nie powinna odpowiadać za dwa różne obszary odpowiedzialności Np. jedna klasa nie powinna służyć do generowania raportu i jego wyświetlania Żadna klasa nie powinna być modyfikowana z więcej niż jednego powodu Np. klasa nie powinna być modyfikowana zarówno po zmianie logiki raportu i jak i po zmianie układu graficznego Metoda CRC cards Class-Responsibility-Collaboration Klasa-Odpowiedzialność-Współpraca Może poprzedzać opracowanie diagramów sekwencji lub samodzielnie wspomagać wprowadzanie metod Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Przykład karty CRC Przykład karty CRC Odpowiedzialność Prostokąt Współpraca Odpowiedzialność Pojazd Współpraca Rysowanie Wzór linii Wzór wypełnienia Obliczanie kosztów Kategoria pojazdu Edycja interaktywna Zaznaczanie się Manipulator prostokąta Sprawdzanie wykonalności zlecenia Kategoria pojazdu Zasada otwarte-zamknięte Składowe oprogramowania powinny być otwarte na rozbudowę, ale zamknięte do modyfikacji Podstawowe mechanizmy abstrakcja i polimorfizm Np. lepsze jest uzależnienie od interfejsu niż klasy Zasada otwarte-zamknięte Nie da się przewidzieć wszystkich zmian Np. co jest niezbędne w intefejsie? Gdy mnie raz oszukasz, powinieneś się wstydzić. Gdy oszukasz mnie drugi raz, to ja powinienem się wstydzić Jeżeli jakieś rozwiązanie raz okazało się zbyt sztywne, należy je od razu zmienić Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka 3

4 Zasada podstawienia Musi istnieć możliwość zastąpienia klasy bazowej klasą pochodną Zasada odwracania zależności Naiwne rozwiązanie Czy kwadrat jest specjalizacją prostokąta? Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Lepiej Zasad zależności od abstrakcji Żadna zmienna nie powinna zawierać referencji do konkretnej klasy Żadna klasa nie powinna dziedziczyć po konkretnej klasie Żadna metoda nie powinna przykrywać metody zaimplementowanej w którejkolwiek z klas bazowych Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Zasada segregacji interfejsów Należy eliminować (rozdzielać) grube, nieporęczne interfejsy Zadania w fazie projektowania Uszczegółowienie wyników analizy Projektowanie technicznych składowych oprogramowania - innych niż składowa dziedziny problemu Poprawa efektywności systemu Określenie fizycznej struktury systemu Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka 4

5 Uszczegółowienie wyników analizy Opracowanie diagramów sekwencji Wprowadzenie związków skierowanych Określenie sposobu implementacji związków Dobór typów danych Opracowanie nagłówków operacji Opracowanie algorytmów metod Opracowanie diagramów sekwencji Wprowadzenie związków skierowanych Opiekun Pracownik Kolo naukowe Opiekun Pracownik Kolo naukowe Wprowadzenie związków skierowanych Czynniki brane pod uwagę Ograniczanie zależności składowych - modularność Zasada ograniczonego dostępu Nadmiarowość danych w przypadku związków nieskierowanych (obustronnie nawigowalnych) Efektywność Potrzeba dostępu do pól i metod powiązanych obiektów Określenie sposobu implementacji związków Wybór spośród omówionych wcześniej możliwości Najlepszym podejściem jest przyjęcie standardu dla projektu/firmy Dobór typów danych Typy danych dla: Pól Parametrów Metod Wybór typu spełniającego wymagania (np. zakres, dokładność, liczba możliwych wartości) określonych na etapie analizy Jeżeli żaden z typów standardowych i bibliotecznych nie spełnia naszych wymagań to definiowanie własnych typów: Złożonych Obiektowych (klas) inne wykorzystanie programowania obiektowego! 5

6 Opracowanie nagłówków operacji Zamiana danych wejściowych i wyjściowych na parametry i wyniki o odpowiednich typach Np. operacja obliczania kosztu przewozu Dane wejściowe Czas, Droga Dany wyjściowe Koszt przewozu double Koszt (double Czas, double Droga) lub Koszt (double Czas, double Droga, double &Koszt) Opracowanie algorytmów metod ~90% metod to metody algorytmicznie proste Algorytmy ~0% metod maja istotnie znaczenie dla systemu (np. efektywność, przejrzystość) Projektowanie technicznych składowych oprogramowania Składowa interfejsu użytkownika Składowa zarządzania pamięcią Składowa zarządzania danymi Składowa dziedziny problemu Składowa komunikacji sieciowej Składowa zarządzania zadaniami Projektowanie technicznych składowych W ogólności składowe techniczne mogą być projektowane tak, jak składowa dziedziny problemu Rzeczywistość -> Model -> Projekt W praktyce (choć nie zawsze) projektowanie tych składowych ma charakter powtarzalny, wykorzystujemy więc: Gotowe biblioteki Generatory kodu Wzorce projektowe Składowa interfejsu użytkownika Zasady projektowania IU Spójność Skróty dla doświadczonych użytkowników Potwierdzanie przyjęcia polecenia użytkownika Prosta obsługa błędów Odwoływanie akcji Wrażenie kontroli nad systemem Przestrzeganie zasady 7±2 Nieobciążanie pamięci krótkotrwałej Grupowanie powiązanych operacji Komunikaty o błędach: Jakie są efekty błędu Co użytkownik może zrobić Badania usability Grono nowych (nieskażonych) użytkowników Zadania do wykonania Informacje o problemach, niekoniecznie o rozwiązaniach Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka 6

7 Analiza zadań Np. badanie liczby operacji (np. kliknięć) potrzebnych do wykonania zadania Projektowanie składowej zarządzania danymi Dokumenty vs. na bieżąco wybierane dane Bazy danych - pliki Tabela/plik na klasę - wszystkie obiekty w jednym pliku/tabeli Odczyt/zapis na bieżąco - na żądanie Projektowanie baz danych - normalizacja, indeksy Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Problem dziedziczenia Propagacja pól w dół Adres firmowy Miasto Nazwa firmy Poznań ABC S.A. Kielce XYX z o.o. Adres osobisty Miasto Nazwisko Warszawa Jan Kowalski Wólka Zenon Nowak Propagacja pól w górę Adres Typ adresu Miasto Nazwa firmynazwisko Osobisty Warszawa Jan Kowalski Firmowy Kielce XYX z o.o. Firmowy Poznań ABC S.A. Osobisty Wólka Zenon Nowak Transformacja do zwykłego związku Adres firmowy Id adresu Nazwa firmy ABC S.A. 2 XYX z o.o. Adres osobisty Id adresu Adres Id adresu Nazwisko 3 Jan Kowalski 4 Zenon Nowak Miasto Poznań 2 Kielce 3 Warszawa 4 Wólka 7

8 Narzędzia Np. Hibernate, JPOX Transparentne mapowanie pomiędzy modelem obiektowym a relacyjnym Współpraca z większością RDBMS Sposoby implementacji składowej komunikacji sieciowej Funkcje niskopoziomowe CORBA (Common Object Request Broker Architecture) XML-RPC SOAP (Simple Object Access Protocol) Języki specyfikacji IDL, WSDL Określenie fizycznej struktury systemu Rozmieszczanie klas w modułach Podział na programy wykonywalne Projektowanie systemów rozproszonych Klient Serwer Architektura klient-serwer Cienki klient Interfejs użytkownika S. dziedziny problemu Gruby klient Interfejs użytkownika S. dziedziny problemu S. zarządzania danymi S. zarządzania danymi Architektura trójwarstwowa Warstwa prezentacji Warstwa aplikacji Interfejs użytkownika S. dziedziny problemu Poprawa efektywności systemu Kompromis pomiędzy efektywnością a jakością projektu Poprawa efektywności na poziomie programistycznym i projektowym Dobór struktur danych Dobór algorytmów Warstwa danych S. zarządzania danymi 8

9 Pierwsze prawo Jaszkiewicza ;-) Każdy nietrywialny algorytm można przyśpieszyć dwukrotnie choć kolejne iteracje są coraz trudniejsze Pytanie tylko czy warto? Kiedy nie warto przyśpieszać efektywności Kiedy algorytm nie jest wąskim gardłem Np. znajduje się w potoku przetwarzania gdzie inne kroki są dużo bardziej czasochłonne Jest wywoływany jednorazowo na żądanie użytkownika, a czas jest pomijany z punktu widzenia szybkości interakcji Rola profilingu Optymalizacja efektywności bez wcześniejszych pomiarów, to SABOTAŻ ;-) wobec pracodawcy Typowe sposoby poprawy efektywność Przechowywanie danych pośrednich Indeksowanie Obliczenia/przetwarzanie przyrostowe Efektywne obcinanie niepotrzebnych gałęzi w drzewie przeszukiwań Stosowanie heurystyk Wzorce projektowe związane z efektywnością Proxy, Flyweight Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Hermetyzacja a kompresja danych Np. obiekt opisywany przez wiele atrybutów boolowskich i wartości wyliczeniowych o niewielkim zakresie, może wewnętrznie brzydko kompresować te dane wykorzystując poszczególne bity Na zewnątrz widziane są poszczególne pola poprzez metody Set i Get Grupowanie (clustering) 9

10 Algorytm heurystyczny K zadana liczba grup Wybierz losowo K elementów i potraktuj je jako K jednoelementowych grup Powtarzaj Dla każdego niezgrupowanego elementu Oceń przydział tego elementu do każdej grupy Wykonaj przydział o najlepszej ocenie Dopóki istnieją niezgrupowane elementy Ocena grupowania Średnia odległość elementów zgrupowanych razem / średnia odległość elementów zgrupowanych w różnych grupach Kryterium minimalizowane Złożoność obliczania miary oceny N liczba zgrupowanych elementów (N + ) N / 2 Złożoność obliczania zmiany miary oceny Wystarczy obliczyć odległości rozważanego elementu od każdego elementu zgrupowanego N Poprawa efektywności (N + ) / 2 Przykład lokalne przeszukiwanie z zakazem powrotu do poprzednich rozwiązań Problem komiwojażera 00 miast Zapamiętanie jednego rozwiązania 00 B 00 milionów rozwiązań ~0 GB Duży czas weryfikacji czy nowe rozwiązanie znajduje się na liście uprzednio wygenerowanych rozwiązań. Oryginalny program 0

11 Ekstrakcja metody Powiadom Ekstrakcja interfejsu Obserwator GPS Modyfikacja w programie dodanie kolejnego czujnika GPS Ekstrakcja generalizacji Czujnik GPS Wzorce projektowe Wzorzec Observer/Listener Prawie każdy problem, także projektowy, nad którym się zastanawiasz, ktoś już rozwiązał Wzorce (patterns) zawierają dobre praktyki Antywzorce przykłady złych praktyk Wzorce mogą też przyśpieszać komunikację

12 Inne zastosowanie wzorca Listener/Observer Cechy (zalety) wzorca Observer Możliwość wielu sposobów obsługi powiadomień Przedmiot (subject) może nie znać (liczby) swoich obserwatorów Łatwość dodawania nowych przedmiotów i obserwatorów Możliwość dynamicznego łączenia przedmiotów i obserwatorów Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Przechowywanie pojedynczej wielkości Jak przechować pojedynczą wielkość? double IloscPaliwa; Problem: W jakiej jednostce przechowywane jest to pole? Litry, hektolitry, metry sześcienne, mililitry, tony? Wzorzec Quantity Quantity Amount Unit Concrete quantity Wzorzec Quantity - przykład Wielkosc Ilosc Jednostka Lub np. pole typu Wielkosc Wzorzec Quantity - cechy Informacja o jednostce jest zawsze przechowywana wraz z ilością Ilosc paliwa 2

13 Współpracujące klasy Wzorzec Client-Server Klasa Klasa 2 Client Np.: Server np.: : ::Klasa : ::Klasa 2 : ::Client : ::Server Przykład wzorca Client- Server Wzorzec Abstract server Client Client interface «interface class» Okno raportu Raport Server Okno raportu Interfejs okna raportu Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Raport Wzorzec Client-Server - cechy Zmiany klienta nie wymuszają zmian serwera Np. zmiany w klasie interfejsowej nie wymuszają zmian w klasie należącej do dziedziny problemu Serwer pełni rolę pasywną Częściowo można to obejść korzystając np. z wzorca Observer/Listener Wzorzec Client-Server dla pakietów klas Flota Optymalizacja Pojazd Rozwiazanie Typ pojazdu Wolny pojazd Trasa.. Populacja 3

14 Uniezależnienie interfejsu użytkownika od części obliczeniowej programu Model, view, controler Interfejs uzytkownika symlulatora Symulator View Controler Okno widoku symulacji Osobnik Gatunek Okno parametrów Okno statystyk Organ Model Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Wzorzec Facade Wzorzec Facade - cechy Interfejs uzytkownika symlulatora Okno widoku symulacji Okno parametrów Okno statystyk Symulator Symulator Osobnik Gatunek Organ Zmiany w pakiecie serwera nie wymuszają zmian klientów o ile fasada pozostaje taka sama Klasy wyłącznie delegujące swoje zadania (jak fasada) są często traktowane jako niepożądane Facade Niezależność współpracujących klas We wzorcu client-server klient jest zależny od serwera Jest to szczególnie niekorzystne, jeżeli współpraca z serwerem jest tylko niewielką częścią funkcjonalności serwera Jak tego uniknąć? Wzorzec Mediator Collegue Mediator Collegue 2 : ::Mediator : ::Collegue : ::Collegue 2 4

15 Przykład wzorca Mediator Wzorzec Mediator - cechy Modul harmonogramowania Modul CASE Interfejs harmonogramowania Interfejs CASE Integrator (mediator) Pozwala na współpracę klas (pakietów, modułów) całkowicie od siebie niezależnych Role aktywną pełni mediator Częściowo można to obejść korzystając np. z wzorca Observer/Listener Kosztowne obiekty Rysunek Figura Wzorzec Proxy Client Subject Request() Real subject 0.. Proxy Uchwyt pliku := Wczytaj z sieci (Adres pliku) Plik graficzny Adres pliku Uchwyt pliku Plik graficzny() Wczytaj z sieci() Request() Request() if (rreal subject = NULL) rreal subject := new Real subject; rreal subject.request (...) Przykład wzorca Proxy Rysunek Plik graficzny Adres pliku Uchwyt pliku Plik graficzny() Wczytaj z sieci() 0.. Figura Proxy pliku graficznego Adres pliku if (Plik graficzny = NULL) rplik graficzny := new Plik graficzny (Adres pliku); rplik graficzny.rysuj(...) Wzorzec Proxy - cechy Kosztowny obiekt jest konstruowany tylko wtedy jeżeli będą na nim wykonywane jakieś operacje Opóźnione konstruowanie kosztownego obiektu jest niewidoczne dla klienta Wiele obiektów klasy Proxy może być powiązanych z jednym kosztownym obietem (np. w połączeniu z wzorcem Singleton) 5

16 Rysunek Niespójne klasy Figura Wzorzec Adapter/Wrapper Client Target Rysuj(in Okno : Okno) Request() Operation() Linia Prostakat Adaptee Adapter Library Rysuj(in Okno : Okno) Rysuj(in Okno : Okno) Operation() Graphic file Draw(in pdc : CDC) Realizacja z wykorzystanie Adaptee Library Przykład wzorca Adapter Rysunek Linia Rysuj(in Okno : Okno) Figura Rysuj(in Okno : Okno) Plik graficzny Rysuj(in Okno : Okno) Prostakat Rysuj(in Okno : Okno) Wzorzec Adapter - cechy Adaptowana klasa może być wykorzystywana tak jak inne klasy implementujące standardowy interfejs Fakt korzystania z niestandardowej klasy jest niewidoczny dla klienta Graphic file Draw(in pdc : CDC) rgraphic file.draw (Onko.pDC) Potrzeba wielopoziomowej hierarchii agregacji Przykład: Rysunek składa się z figur Figury mogą tworzyć grupy W skład grupy może wchodzić inna grupa figur Pewne operacja można wykonywać zarówno na pojedynczych figurach, jak i grupach figur. Client Request() Wzorzec Composite Leaf Operation() Component Operation() Composite Operation() For each rcomponent rcomponent.operation 0.. 6

17 Przykład wzorca Composite Rysunek Linia Przesun() Przesun() Figura Przesun() Prostakat Grupa Przesun() 0.. Wzorzec Composite - cechy Hierarchia zawierania się może być dowolnie zgłębiona Liście mogą się pojawiać na dowolnym poziomie hierarchii obok grup (dowolnego poziomu) Jak tego uniknąć? For each rfigura rfigura.przesun (...) Jak oddzielić konstrukcję złożonego obiektu od jego reprezentacji Np. zapis danych programu graficznego w różnych formatach Director +Construct() Wzorzec Builder Builder +Build part() Concrete builder Product +Build part() Przykład wzorca builder Grafika Zapisywacz w XML Zapisz linie() Zapisz prostakat() Zapisz grupe() Zapisywacz Zapisz linie() Zapisz prostakat() Zapisz grupe() Zapisywacz w JPG Zapisz linie() Zapisz prostakat() Zapisz grupe() Wzorzec Builder Reżyser (director)) zna tylko ogólną strukturę budowanego obiektu Budowniczy (builder)) zna tylko elementarne kroki budowy obiektu w zadany sposób Strumien XML Rysunek JPG 7

18 Polecenia Jak zapewnić: Możliwość stosowania różnych sposobów wydawania poleceń Niezależność pomiędzy obiektem wysyłającym polecenie i odbiorcą Wzorzec Command Sender.. Command Execute() Receiver Concrete command Execute() Przykład wzorca Command Menu Pasek narzedziowy Powieksz Wykonaj() Polecenie Wykonaj() Pomniejsz Wykonaj() Rysunek Powieksz() Pomniejsz() Wzorzec Command cechy Nadawca jest niezależny od odbiorcy i vice versa To samo polecenie może być wydawane przez różnych nadawców Łączenie poleceń z nadawcami może być dynamiczne rrysunek.powieksz (...) rrysunek.pomniejsz (...) Różna reakcja na zdarzenia w zależności od stanu Zadanie Zdefiniowane Zaplanowane Zwolnij zasob() Zrealizowane Realizowane Typowa implementacja void CZadanie::Zwolnij_zasob (TZasobID Zasob) { if (State == _ZDEFNIOWANE) {... } else if (State == _ZAPLANOWANE) {... } else if (State == _REALIZOWANE) {... } else if (State == _ZREALIZOWANE) {... } } 8

19 Wzorzec State Przykład wzorca State Context Request() State Handle() rstan zadania.obsluz (...) Zadanie Zwolnij zasob() Stan zadania Obsluz() rstate.handle (...) Concrete state Handle() Concrete state 2 Handle() Zdefiniowane Obsluz() Zaplanowane Obsluz() Realizowane Obsluz() Zrealizowane Obsluz() Wzorzec State - cechy Łatwiejsze dodawanie/usuwanie stanów Konieczne konstruowanie/usuwanie/wiązanie obiektów przy zmianie stanów Trudniejsze dodawanie/usuwanie metod (trzeba je dodawać/usuwać w różnych stanach) Schemat algorytmu ewolucyjnego Znajdź populację początkową powtarzaj Selekcja Rekombinacja Mutacja dopóki nie są spełnione warunki stopu Antywzorzec Call super Algorytm ewolucyjny Główna pętla() Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Populacja poczatkowa (...) powtarzaj Selekcja (...) Rekombinacja (...) Mutacja (...) dopoki nie Warunek stopu (...) Wzorzec Template method Abstract class Template method() Operation() Operation2()... Operation (...)... Operation2 (...)... Konkretny algorytm ewolucyjny Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Wykonaj() Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka super.pętla główna() Concrete class Operation() Operation2() 9

20 Przykład wzorca Template method Algorytm ewolucyjny Wykonaj() Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Populacja poczatkowa (...) powtarzaj Selekcja (...) Rekombinacja (...) Mutacja (...) dopoki nie Warunek stopu (...) Wzorzec Template method - cechy Ponownie wykorzystywany jest szkielet algorytmu przy możliwości zmiany poszczególnych kroków Konkretny algorytm ewolucyjny Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Alternatywnie wzorzec Strategy Ogólny algorytm ewolucyjny +Pętla główna() Algorytm ewolucyjny Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Grupowanie podobnych operacji Gdzie umieścić operacje tego samego typu dotyczące grupy klas? Algorytm ewolucyjny.populacja poczatkowa (...) powtarzaj Algorytm ewolucyjny.selekcja (...) Algorytm ewolucyjny.rekombinacja (...) Algorytm ewolucyjny.mutacja (...) dopoki nie Algorytm ewolucyjny.warunek stopu (...) Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka Konkretny algorytm ewolucyjny Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Klasyczne rozwiązanie Przykład wzorca Visitor Rysunek Figura c Figura Gosc Odwiedz linie(in Linia : Linia) Odwiedz grupe(in Grupa : Grupa) Zapisz() Zapisz() Zapisz() Zaakceptuj(in Gosc : Gosc) ZapisXML Linia Zapisz() Grupa Zapisz() 0.. Linia Zaakceptuj(in Gosc : Gosc) Pobierz dane() Grupa Zaakceptuj(in Gosc : Gosc) Pobierz dane() Odwiedz linie(in Linia : Linia) 0.. Odwiedz grupe(in Grupa : Grupa) 20

21 Wzorzec Visitor - cechy Grupuje operacje danego typu, np. kod składowej zarządzania danymi Korzystne np. przy zmianach technologii składowych technicznych Jak rozszerzyć działanie zbioru klas bez zmiany ich kodu? Np. jak w programie graficznym dodać do każdej figury i grupy figur możliwość wyświetlania nazwy? Rysunek + Rozwiązanie klasyczne - dziedziczenie Nazwa Figura Rysuj nazwe() Wzorzec Decorator Client 0.. Operation() Concrete component Component Decorator Operation() 0.. Linia Grupa 0.. Additional behaviour rcomponenet.operation (...) Additional behaviour Concrete decorator Operation() Przykład wzorca Decorator Rysunek 0.. Figura Figura z nazwa Nazwa 0.. Wzorzec Decorator - cechy Zachowanie każdego komponentu może zostać rozszerzone Rozszerzenia są niewidoczne dla klienta Linia Grupa 0.. rfigura.rysuj (...) Rysuj nazwe 2

22 Tworzenie obiektów Wzorzec Factory method Rysunek 0.. Linia Figura Prostakat Czy rysunek musi znać wszystkie manipulatory? Product 0.. Creator Factory method() Operation()... rproduct := Factory method (...) Concrete product Concrete creator Factory method() return new Concrete product Manipulator linii Manipulator prostakata Przykład wzorca Factory method 0.. Manipulator Rysunek 0.. Linia #Skonstruuj manipulator() Figura +Manipuluj() #Skonstruuj manipulator() Prostakat #Skonstruuj manipulator() Wzorzec Factory method - cechy Klient nie musi znać konkretnych klas, których obiekty są konstruowane Manipulator linii Manipulator prostakata Efektywność a model obiektowy Wzorzec Flyweight Bezpośrednia implementacja modelu obiektowego może być bardzo nieefektywna w stosunku np. do zapisu tych danych w tablicy Wiele obiektów danej klasy Czy zrezygnować z rozwiązania obiektowego? 22

23 Przykład wzorca FlyWeight Mapa Segmenty +PobierzNastepny() : Segment 0.. Segment Dane segmentów Wzorzec FlyWeight method - cechy Na zewnątrz widziany jest model obiektowy Wewnętrzna reprezentacja nie musi być obiektowa i prze to może być bardziej efektywna +UstawID(in ID) Tablica danych opisujących wszystkie segmenty Wzorzec Singleton zapewnianie istnienia tylko jednej instancji klasy Singleton #Unique instance +Instance() #Singleton() if (Unique instance == NULL) Unique instance = new Singleton (...) return Unique instance Wzorzec Singleton w C++ class CSingleton { protected: static CSingleton UniqueInstance; CSingleton () {... } public: static CSingleton Instance () { if (UniqueInstance == NULL) UniqueInstance = new CSingleton; return UniqueInstance; } }; CSingleton CSingleton::UniqueInstance = NULL;... CSingleton Singleton = CSingleton::Instance (); Wzorzec Singleton w Javie public class Singleton { static protected Singleton uniqueinstance = null; protected Singleton() {... } static public Singleton getinstance() { if(uniqueinstance == null) { uniqueinstance = new Singleton(); } return uniqueinstance; } }... Singleton singleton = Singleton.getInstance(); API Application Programming Interface 23

24 Co to jest API? Interfejs programowania aplikacji, interfejs programu użytkownika specyfikacja procedur, funkcji lub interfejsów umożliwiających komunikację z biblioteką, systemem operacyjnym lub innym systemem zewnętrznym w stosunku do aplikacji korzystającej z API (WIKIPEDIA) Cechy API API a modularność API a ponowne wykorzystanie Bardzo trudne do zmiany Potencjalnie ogromna wartość Możliwość innej implementacji Nie wiadomo jak będzie wykorzystywane Przykłady Windows API Microsoft.NET Java 2 Platform Standard Edition Java J2ME MIDP Google Maps API Facebook API... Dobre API Łatwe w nauce Łatwe w użyciu (nawet bez dokumentacji) Trudne w niepoprawnym użyciu Kod używający API powinien być łatwy w czytaniu i utrzymaniu Wystarczająco mocne Łatwe w rozszerzaniu Odpowiednie dla odbiorcy Zbierz wymagania z dozą sceptycyzmu Często otrzymasz propozycje rozwiązań, a nie wymagania Wybierz prawdziwe wymagania Scenariusze Łatwiejsze i bardziej wartościowe może być opracowanie czegoś bardziej ogólnego! Projektowanie API Zacznij od prostej/krótkiej specyfikacji Konsultuj, prototypuj Pisz kod dla swojego API Prototypowanie Przykłady Testy jednostkowe Bądź realistą Nie zaspokoisz wszystkich potrzeb Na pewno będą błędy API będzie musiało ewoluować 24

25 Zasady projektowania API Klasy funkcje do konkretnych rzeczy Jeżeli metoda, klasa, pakiet nie daje się prosto nazwać to coś jest nie tak W razie potrzeb dziel na mniejsze jednostki Tak małe jak trzeba, ale nie bardziej API musi spełniać wymagania Łatwo rozszerzyć, bardzo trudno coś usunąć Zasady projektowania API Implementacja nie powinna wpływać na API np. wewnętrzne typy Ograniczaj dostęp Klasy, pola, metody tak prywatne jak to możliwe Niezależne moduły Nazwy mają znaczenie Bez skrótów Standardy nazewnictwa Samodokumentujący się kod Zasady projektowania API Dokumentacja ma znaczenie Opisz każdą klasę, interfejs, metodę, konstruktor, parametr, wyjątek Klasa do czego służą obiekty (instancje) Metoda jej kontrakt warunki początkowe, końcowe, efekty uboczne Stany Zasady projektowania API Wpływ na efektywność Np. zwracanie typów obiektowych może oznaczać miliony niepotrzebnych alokacji/dealokacji Naśladuj standardy Nie utrudniaj życia użytkownikom API final, operacje niepolimorficzne Zasady projektowania API Stosuj dziedziczenie tylko, jeżeli ma to sens Properties extends Hashtable TextField extends Item Zaprojektuj i udokumentuj dziedziczenie lub je zablokuj Specjalizacja może być zależna od implementacji generalizacji Podejście konserwatywne wszystkie konkretne klasy finalne Zasady projektowania API Rzucaj wyjątki natychmiast po wystąpieniu błędu Ostrożnie stosuj przeciążanie Dobór typów (np. parametry, wartości funkcji) Interfejsy jako parametry wejściowe (zamiast klas) Najbardziej specyficzny typ Nie używaj stringów, jeżeli istnieje lepszy typ Unikaj typów zmiennopozycyjnych, jeżeli niezbędne stosuj typ standardowy o największej precyzji 25

26 Zasady projektowania API Stosuj standardy dotyczące kolejności parametrów Szczególnie jeżeli więcej parametrów tego samego typu Unikaj długich list parametrów Raczej nie więcej niż 3 Szczególnie niekorzystne wiele parametrów tego samego typu Jak unikać: Rozbicie metody Pomocnicze klasy Refaktoryzacja kodu Seria niewielkich modyfikacji kodu,, z których każda zmienia (poprawia) wewnętrzną strukturę programu bez zmiany jego zewnętrznego działania Do pewnego! stopnia zastępuje szczegółowe projektowanie poprzedzające implementację i pozwala na poprawę błędów projektowych Dwie drogi uzyskania dobrze zaprojektowanego oprogramowania Dobry projekt -> kod -> niewielka refaktoryzacja [Wstępny projekt] -> kod -> poważna refaktoryzacja Dlaczego refaktoryzacja Poprawa projektu Utrzymanie kodu przy życiu, ułatwienie wprowadzania zmian, umożliwienie ponownego wykorzystania Poprawa czytelności Kod dla ludzi nie dla kompilatora Zrozumienie cudzego kodu Ułatwienie wyszukiwania błędów Np. refaktoryzacja przy debugowaniu Refaktoryzacja ma przyspieszać pracę Kiedy refaktoryzować kod Kiedy istnieje potrzeba dodania/zmiany funkcjonalności i okazuje się to trudne Poprawa czytelności kodu Ułatwienie zmian Kiedy trudno znaleźć/zlokalizować błędy Poprawa czytelności kodu Przed przeglądem kodu Złe zapachy (bad smells) ) w kodzie Powielany kod Długie metody i złożone klasy Długie listy parametrów Metody odwołujące się głównie do innych klas Powtarzające się grupy danych (Praktycznie) nie używany kod Delegowanie, nic nie wnoszące generalizacje 26

27 Złe zapachy (bad smells) ) w kodzie Zmienne chwilowe Zastępowanie wyrażeniami i metodami Łańcuchy wywołań Np. foo.getbar(). ().getfoo().getthis().getthat().dosomet hing(); Nieodpowiednie, nadmierne powiązania klas Komentarze?!?! // Dochód podstaw przychód koszt D = P K; Jak weryfikować brak zmian zewnętrznego działania Testowanie Analiza formalna i nieformalna Unikanie dużych zmian Procedury proste kroki Refaktoryzacja a rozszerzanie/modyfikowanie funkcjonalności Dodanie/ zmiana możliwości systemu Nowe testy Cel - przejście testów Brak zmian w funkcjonalności Nie dodaje nowych testów? (Może je zmieniać) Testy jako weryfikacja zmian Stosunek przełożonych do refaktoryzacji Jeżeli nie jest akceptowana przez przełożonych (z braku zrozumienia), to... stosuj refaktoryzację Rób to, co według Twojej zawodowej wiedzy przynosi dobre efekty Przykłady refaktoryzacji Dodanie parametru Ekstrakcja metody Ekstrakcja klasy Przesuń pole Przesuń metodę Zamień dziedziczenie na związek klas Ukryj pole/metodę Procedura przesuwania metody Zadeklaruj metodę w klasie docelowej Przekopiuj kod metody Dodaj związek od klasy źródłowej do docelowej Zmień metodę źródłową na delegującą Skompiluj i przetestuj Znajdź miejsca wywołania metody Zmień na wywołania nowej metody Usuń metodę źródłową Skompiluj i przetestuj 27

Projektowanie. Kryteria jakości projektu. Spójność obiektowa. Brak spójności obiektowej. Znaczenie notacji graficznych w projektowaniu

Projektowanie. Kryteria jakości projektu. Spójność obiektowa. Brak spójności obiektowej. Znaczenie notacji graficznych w projektowaniu Projektowanie Czy oprogramowanie jest zawsze projektowane? Znaczenie projektowania Projektowanie a wyniki fazy analizy class CPojazd { public: double Koszt (double Czas, double Droga); ; double CPojazd::Koszt

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Wprowadzenie do programowania aplikacji mobilnych

Wprowadzenie do programowania aplikacji mobilnych Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce

Bardziej szczegółowo

Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne. Inżynieria oprogramowania

Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne. Inżynieria oprogramowania Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne Inżynieria oprogramowania 27 kwietnia 2014 Wzorce projektowe Prawie każdy problem, także projektowy, nad którym się zastanawiasz, ktoś

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób? Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu

Bardziej szczegółowo

UML a kod. C++, Java i C#

UML a kod. C++, Java i C# UML a kod C++, Java i C# UML a kod w C++ i Javie Projektowanie oprogramowania! Dokumentowanie oprogramowania Diagramy przypadków użycia Klasy użytkowników i wykorzystywane funkcje Mogą sugerować podział

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Technologia Programowania 2016/2017 Wykład 4

Technologia Programowania 2016/2017 Wykład 4 Technologia Programowania 2016/2017 Wykład 4 Wzorce projektowe GoF Jakub Lemiesz Wzorce GRASP a wzorce GoF Znamy 9 wzorców GRASP ogólne zasady Na GRASP opierają się klasyczne wzorce GoF Na wzorcach GoF

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1) Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass

Bardziej szczegółowo

Wypożyczalnia VIDEO. Technologie obiektowe

Wypożyczalnia VIDEO. Technologie obiektowe Wypożyczalnia VIDEO Jest to program do obsługi wypożyczalni i wypożyczeń klientów. Głównym zadaniem programu jest zarządzanie wypożyczeniami i drukowanie potwierdzenia wypożyczenia oraz naliczenie punktów

Bardziej szczegółowo

Projektowanie obiektowe Wzorce projektowe

Projektowanie obiektowe Wzorce projektowe Projektowanie obiektowe Wzorce projektowe Gang of Four Kreacyjne wzorce projektowe (wzorce konstrukcyjne) 1 Roadmap Memento Factory Method Abstract Factory Prototype Builder 2 Wzorce konstrukcyjne wzorce

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński (wybrane) Wzorce projektowe Programowanie Obiektowe Mateusz Cicheński Kreacyjne Fabryka abstrakcyjna (Abstract Factory) Budowniczy (Builder) Metoda wytwórcza (Factory Method) Prototyp (Prototype) Singleton

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass

Bardziej szczegółowo

Zaawansowane programowanie obiektowe - wykład 5

Zaawansowane programowanie obiektowe - wykład 5 Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch

Bardziej szczegółowo

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński (wybrane) Wzorce projektowe Programowanie Obiektowe Mateusz Cicheński Kreacyjne Fabryka abstrakcyjna (Abstract Factory) Budowniczy (Builder) Metoda wytwórcza (Factory Method) Prototyp (Prototype) Singleton

Bardziej szczegółowo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce rozszerzeń 1 Roadmap Decorator Iterator Visitor 2 Wzorce rozszerzeń Mają na celu uczynić proces rozszerzania kodu bardziej czytelnym, prostym

Bardziej szczegółowo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) Projektowanie obiektowe Wzorce projektowe Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) 1 Roadmap Adapter Bridge Composite Facade 2 Pojęcia obiekt interfejs typ klasa 3 Co to jest delegacja?

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 1 Wzorce strukturalne 1.1 Facade Motto: uproszczony interfejs dla podsystemu z wieloma interfejsami class SmtpFacade

Bardziej szczegółowo

Testowanie oprogramowania Wzorce projektowe

Testowanie oprogramowania Wzorce projektowe Testowanie oprogramowania Wzorce projektowe 1/66 Testowanie oprogramowania Wzorce projektowe dr inż. Grzegorz Michalski 17 listopada 2015 Testowanie oprogramowania Wzorce projektowe 2/66 Plan wykładu Agenda

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce odpowiedzialności 1 Roadmap Singleton Observer Mediator Proxy Flyweight 2 Wzorce odpowiedzialności Udostępniają techniki centralizacji, delegowania

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Projektowanie oprogramowania: wzorce architektoniczne i projektowe Projektowanie oprogramowania: wzorce architektoniczne i projektowe Ogólne zasady projektowania Nie staraj się zadziwić innych. Rzeczy oczywiste rób w sposób oczywisty. Nie rozmawiaj z nieznajomym. Projekt

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS) WZORCE PROJEKTOWE (I) (DESIGN PATTERNS) Maciej Patan Motywacje W wielu dziedzinach nowoczesnej inżynierii napotykamy na następujące zagadnienia: Czy typowe zadania i problemy można rozwiązywać w powtarzalny

Bardziej szczegółowo

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz Wzorce projektowe ArrayList DataGridView Aplikacja i zdarzenia Paweł Chodkiewicz Wzorzec uniwersalne rozwiązanie często powtarzających się problemów. Wzorzec opisuje problem, który powtarza się wielokrotnie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 4

Podstawy programowania III WYKŁAD 4 Podstawy programowania III WYKŁAD 4 Jan Kazimirski 1 Podstawy UML-a 2 UML UML Unified Modeling Language formalny język modelowania systemu informatycznego. Aktualna wersja 2.3 Stosuje paradygmat obiektowy.

Bardziej szczegółowo

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji

Bardziej szczegółowo

Technologia Programowania 2016/2017 Wykład 5

Technologia Programowania 2016/2017 Wykład 5 Technologia Programowania 2016/2017 Wykład 5 Wzorce GoF Jakub Lemiesz Wzorce GoF Kreacyjne Builder Singleton Simple Factory Factory Method Abstract Factory Prototype Strukturalne Adapter Decorator Proxy

Bardziej szczegółowo

Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Metodyki zwinne wytwarzania oprogramowania

Metodyki zwinne wytwarzania oprogramowania Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 23 listopada 2016 Plan wykładu 1 2 3 Kilka negatywnych przykładów Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 /

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1 Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. 1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych Projektowanie obiektowe Wzorce projektowe Wprowadzenie do wzorców projektowych 1 Zagadnienia Katalog wzorców projektowych wg Gang of Four Zasady projektowania obiektowego S O L I D MVC - Model-Widok-Kontroler

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Wzorce projektowe Wzorzec projektowy (ang. design pattern) w inżynierii oprogramowania, rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Wzorce projektowe i ich implementacja

Bardziej szczegółowo

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka 1 Omówienie wzorców wykorzystywanych w Prism 5.0 Dominika Różycka Czym jest wzorzec projektowy? 2 3 Wzorzec projektowy 1. Uniwersalne i sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Wzorce projektowe. Wstęp

Wzorce projektowe. Wstęp Wstęp Stworzenie programu łatwego w rozwijaniu i naprawie nie należy do łatwych zadań. Na różnych etapach prac można napotkać wiele niemiłych niespodzianek i przeciwności losu, głównie takich które sami

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs

Bardziej szczegółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem w określonym kontekście siły istotę jego rozwiązania Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

Analiza i projektowanie aplikacji Java Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np.

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Repository dodatkowa warstwa abstrakcji na obiektową warstwę dostępu do danych.

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Builder (budowniczy) Cel: Przykład:

Builder (budowniczy) Cel: Przykład: 1/8 Builder (budowniczy) Cel: Oddzielenie konstruowania złożonego obiektu od jego reprezentacji, tak aby ten sam proces konstrukcji mógł tworzyć różne reprezentacje. Przykład: 2/8 abstract class TableBuilder

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33 Wzorce projektowe cz. I Wzorce projektowe cz. I 1/33 Wzorce projektowe cz. I 2/33 Historia Wzorce projektowe: wywodzą się z wzorców projektowych w architekturze termin wzorca projektowego wprowadzony do

Bardziej szczegółowo

Procesowa specyfikacja systemów IT

Procesowa specyfikacja systemów IT Procesowa specyfikacja systemów IT BOC Group BOC Information Technologies Consulting Sp. z o.o. e-mail: boc@boc-pl.com Tel.: (+48 22) 628 00 15, 696 69 26 Fax: (+48 22) 621 66 88 BOC Management Office

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language) Zagadnienia (1/3) Rola modelu systemu w procesie analizy wymagań (inżynierii wymagań) Prezentacja różnego rodzaju informacji o systemie w zależności od rodzaju modelu. Budowanie pełnego obrazu systemu

Bardziej szczegółowo

Metodyki zwinne wytwarzania oprogramowania

Metodyki zwinne wytwarzania oprogramowania Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 25 listopada 2014 Plan wykładu 1 Zasada pojedynczej odpowiedzialności 2 Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Laboratorium 6 DIAGRAM KLAS (Class Diagram) Laboratorium 6 DIAGRAM KLAS (Class Diagram) Opisuje strukturę programu (a także zależności między nimi), co znajduje odzwierciedlenie w kodzie. Charakteryzuje zależności pomiędzy składnikami systemu: klasami,

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34 Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34 Projektowanie oprogramowania cd. 2/34 Modelowanie CRC Modelowanie CRC (class-responsibility-collaborator) Metoda identyfikowania poszczególnych

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo