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

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

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

Transkrypt

1 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 (double Czas, double Droga) { ; lass Cklient { ; class CTypPojazdu { ; Klient Nazwa Adres REGON Typ pojazdu Nazwa Ladownosc Pojemnosc Cena kilometra Pojazd Cena godziny Koszt() Klient +Nazwa : char #Adres : char Typ pojazdu #REGON : char +Nazwa : char +Dodaj samochod(){sequential +Ladownosc : double +Pojemnosc : double +Cena kilometra : double +Cena godziny : double +Edytuj(){polymorphic,sequential Pojazd +Nazwa : char #Cena kilometra : double -Cena godziny : double +Koszt(in Czas : double, in Droga : double) : double{polymorphic,sequential Znaczenie notacji graficznych w projektowaniu Ułatwienie projektowania Komunikacja Podstawa (zautomatyzowanej) implementacji Kryteria jakości projektu Modularność Silne (spójne) składowe Niezależne (luźno powiązane) składowe Przejrzystość Modularność Nazewnictwo Złożoność składowych Spójność obiektowa Brak spójności obiektowej Pola klasy służą do opisu pojedynczego bytu, a metody klasy operują na (wykorzystują, modyfikują) polach tej klasy

2 Brak spójności obiektowej Dostęp do danych zwiększa zależność składowych Lepiej Uniezależnienie klasy od figur Uniezależnienie klasy od figur 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 2

3 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 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 Pracownik Opiekun Kolo naukowe Pracownik Opiekun Kolo naukowe Wprowadzenie związków skierowanych Czynniki brane pod uwagę Nadmiarowość danych w przypadku związków nieskierowanych (obustronnie nawigowalnych) Efektywność Dostęp 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 3

4 Typy danych dla: Pól Parametrów Metod Dobór typów danych 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 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 danymi Składowa komunikacji sieciowej Składowa zarządzania pamięcią Składowa dziedziny problemu 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 Nieobciążanie pamięci krótkotrwałej Grupowanie powiązanych operacji Przestrzeganie zasady 7±2 Komunikaty o błędach: Jakie są efekty błędu Co użytkownik może zrobić 4

5 Projektowanie składowej zarządzania danymi Dokumenty vs. na bieżąco wybierane dane Bazy danych - pliki Relacja/plik na klasę - wszystkie obiekty w jednym pliku/relacji Odczyt/zapis na bieżąco - na żądanie Projektowanie baz danych - normalizacja, indeksy XML jako narzędzie realizacji zarządzania danymi Plik XML zbiór danych obiektów zawierających się i wzajemnie powiązanych DTD, X Schematy sposób definiowania struktury dokumentu XML Narzędzia dla XML np. parsery, translotory, współpraca z bazami danych Model klas a format XML Trasy Trasa Pojazd = Węzeł A Węzeł B Węzeł C Trasa2 Pojazd = 2 Węzeł D Węzeł E Węzeł F Pojazdy Pojazd Pojazd 2 Problem dziedziczenia Propagacja pól w dół Propagacja pól w górę Adre s Typ adresu Miasto Nazwa firmna zwis ko Osobisty Warszawa Jan Kowalski Firmowy Kielce XYX z o.o. Firmowy Poznań ABC S.A. Osobis ty Wólka Zenon Nowak Adre s firmo wy Miasto Nazwa firmy Poznań ABC S.A. Kielce XYX z o.o. Adres osobisty Miasto Nazwisko Wars zawa Jan Kowals ki Wólka Zenon Nowak 5

6 Transformacja do zwykłego związku Adre s firmo wy Id adresu Nazwa firmy ABC S.A. 2 XYX z o.o. Adre s o s o bis ty Id adresu Adre s Id adres u Nazwisko 3Jan Kowalski 4 Zenon Nowak Miasto P ozna ń 2 Kielce 3Warszawa 4 Wólka Sposoby implementacji składowej komunikacji sieciowe Funkcje niskopoziomowe CORBA (Common Object Request Broker Architecture) Web services np. SOAP (Simple Object Access Protocol) CORBA jako narzędzie implementacji składowej komunikacji sieciowej Struktura CORBY Możliwość komunikacji rozproszonych obiektów napisanych w różnych językach oprogramowania Specyfikacja klas w języku IDL Automatyczna transformacja IDL do kodu komunikacji sieciowej w odpowiednim języku 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 Typowe sposoby poprawy efektywność Przechowywanie danych pośrednich Indeksowanie 6

7 Przykład lokalne przeszukiwanie z zakazem powrotu do poprzednich rozwiązań Problem komiwojażera 00 miast Zapamiętanie jednego rozwiązania 00 B Milion rozwiązań ~00 MB Duży czas weryfikacji czy nowe rozwiązanie znajduje się na liście uprzednio wygenerowanych rozwiązań. Określenie fizycznej struktury systemu Rozmieszczanie klas w modułach Podział na programy wykonywalne Projektowanie systemów rozproszonych Rozmieszczanie klas w modułach deployment diagrams Klient Architektura klient-serwer Cienki klient Interfejs użytkownika Gruby klient Interfejs użytkownika Serwer S. dziedziny problemu S. dziedziny problemu S. zarządzania danymi S. zarządzania danymi Architektura trójwarstwowa Metoda CRC cards Warstwa prezentacji Warstwa aplikacji Interfejs użytkownika S. dziedziny problemu Class-Responsibility-Collaboration Klasa- Odpowiedzialność-Współpraca Może poprzedzać opracowanie diagramów sekwencji lub samodzielnie wspomagać wprowadzanie metod Warstwa danych S. zarządzania danymi 7

8 Przykład karty CRC Przykład karty CRC Prostokąt Pojazd Odpowiedzialność Współpraca Odpowiedzialność Współpraca Rysowanie Wzór linii Wzór wypełnienia Obliczanie kosztów Kategoria pojazdu Edycja interaktywna Manipulator prostokąta Sprawdzanie wykonalności zlecenia Kategoria pojazdu Zaznaczanie się Wzorce projektowe 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ę 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 Wzorzec Quantity - przykład Quantity Amount Unit Wielkosc Ilosc Jednostka Lub np. pole typu Wielkosc Concrete quantity Ilosc paliwa 8

9 Współpracujące klasy Wzorzec Client-Server Client Server Klasa Klasa 2 Np.: np.: : ::Klasa : ::Klasa 2 : ::Client : ::Server Przykład wzorca Client-Server Wzorzec Client-Server dla pakietów klas «interface class» Okno raportu Raport Flota Optymalizacja Pojazd Typ pojazdu Rozwiazanie.. Populacja Wolny pojazd Trasa Interfejs uzytkownika symlulatora Okno widoku symulacji Okno parametrów Uniezależnienie interfejsu użytkownika od części obliczeniowej programu Okno statystyk Symulator Osobnik Organ Gatunek Interfejs uzytkownika symlulatora Okno widoku symulacji Okno parametrów Wzorzec Facade Okno statystyk Symulator Symulator Organ Osobnik Gatunek Facade 9

10 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 Przykład wzorca Mediator Kosztowne obiekty Modul harmonogramowania Interfejs harmonogramowania Figura Modul CASE Interfejs CASE Integrator (mediator) Uchwyt pliku := Wczytaj z sieci (Adres pliku) Plik graficzny Adres pliku Uchwyt pliku Plik graficzny() Wczytaj z sieci() Client Wzorzec Proxy Subject Przykład wzorca Proxy Figura Request() Real subject Request() 0.. Proxy Request() Plik graficzny Adres pliku Uchwyt pliku Plik graficzny() Wczytaj z sieci() 0.. Proxy pliku graficznego Adres pliku if (rreal subject = NULL) rreal subject := new Real subject; rreal subject.request () if (Plik graficzny = NULL) rplik graficzny := new Plik graficzny (Adres pliku); rplik graficzny. 0

11 Niespójne klasy Wzorzec Adapter Figura Rysuj(in Okno : Okno) Client Target Linia Prostakat Library Rysuj(in Okno : Okno) Rysuj(in Okno : Okno) Adaptee Adapter Graphic file Draw(in pdc : CDC) Przykład wzorca Adapter Figura Potrzeba wielopoziomowej hierarchii agregacji Przykład: Rysuj(in Okno : Okno) składa się z figur Library Linia Rysuj(in Okno : Okno) Plik graficzny Rysuj(in Okno : Okno) Prostakat Rysuj(in Okno : Okno) 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. Graphic file Draw(in pdc : CDC) rgraphic file.draw (Onko.pDC) Client Wzorzec Composite Component Przykład wzorca Composite Figura Request() Operation() Przesun() Leaf Composite Linia Prostakat Grupa Operation() Operation() 0.. Przesun() Przesun() Przesun() 0.. For each rcomponent rcomponent.operation For each rfigura rfigura.przesun ()

12 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 Polecenia Zapisz() 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() Jak zapewnić: Możliwość stosowania różnych sposobów wydawania poleceń Niezależność pomiędzy obiektem wysyłającym polecenie i odbiorcą Strumien XML Tabela Wzorzec Command Przykład wzorca Command Sender.. Command Execute() Menu 0.. Polecenie Wykonaj() Powieksz() Pomniejsz() Pasek narzedziowy Powieksz Pomniejsz 0.. Wykonaj() Wykonaj() Receiver Concrete command Execute() r.powieksz () r.pomniejsz () 2

13 Różna reakcja na zdarzenia w zależności od stanu Zadanie Zwolnij zasob() Zdefiniowane Zrealizowane Zaplanowane Realizowane Typowa implementacja void CZadanie::Zwolnij_zasob (TZasobID Zasob) { if (State == _ZDEFNIOWANE) { else if (State == _ZAPLANOWANE) { else if (State == _REALIZOWANE) { else if (State == _ZREALIZOWANE) { Wzorzec State Przykład wzorca State Context State Request() Handle() rstan zadania.obsluz () Zadanie Zwolnij zasob() Stan zadania Obsluz() rstate.handle () Concrete state Concrete state 2 Zdefiniowane Zaplanowane Realizowane Zrealizowane Handle() Handle() Obsluz() Obsluz() Obsluz() Obsluz() Schemat algorytmu ewolucyjnego Wzorzec Template method Znajdź populację początkową powtarzaj Selekcja Rekombinacja Mutacja dopóki nie są spełnione warunki stopu Abstract class Template method() Operation() Operation2() Concrete class Operation () Operation2 () Operation() Operation2() 3

14 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 () Grupowanie podobnych operacji Gdzie umieścić operacje tego samego typu dotyczące grupy klas? Konkretny algorytm ewolucyjny Populacja poczatkowa() Selekcja() Rekombinacja() Mutacja() Warunek stopu() Klasyczne rozwiązanie Figura Zapisz() Zapisz() Zapisz() Przykład wzorca Visitor Figura Gosc Odwiedz linie(in Linia : Linia) Odwiedz grupe(in Grupa : Grupa) Linia ZapisXML Linia Grupa Zaakceptuj(in Gosc : Gosc) Odwiedz linie(in Linia : Linia) 0.. Odwiedz grupe(in Grupa : Grupa) Zapisz() Zapisz() 0.. Grupa Zaakceptuj(in Gosc : Gosc) 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? + Rozwiązanie klasyczne - dziedziczenie Figura Nazwa Rysuj nazwe() Linia Grupa 0.. 4

15 Client Wzorzec Decorator Component Przykład wzorca Decorator 0.. Operation() Concrete component Decorator 0.. Nazwa Figura Figura z nazwa 0.. Operation() Operation() 0.. Additional behaviour rcomponenet.operation () Additional behaviour Concrete decorator Operation() Linia Grupa 0.. rfigura.rysuj () Rysuj nazwe Tworzenie obiektów Figura Wzorzec Factory method 0.. Linia Prostakat Czy rysunek musi znać wszystkie manipulatory? Product 0.. Creator Factory method() Operation() rproduct := Factory method () 0.. Manipulator linii 0.. Manipulator prostakata Concrete product Concrete creator Factory method() return new Concrete product Przykład wzorca Factory method 0.. «interface» Manipulator 0.. Linia #Skonstruuj manipulator() Figura +Manipuluj() #Skonstruuj manipulator() Prostakat #Skonstruuj manipulator() Wzorzec Singleton zapewnianie istnienia tylko jednej instancji obiektu Singleton #Unique instance +Instance() #Singleton() if (Unique instance == NULL) Unique instance = new Singleton () return Unique instance Manipulator linii Manipulator prostakata 5

16 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 instance() { if(uniqueinstance == null) { uniqueinstance = new Singleton(); return uniqueinstance; Singleton singleton = Singleton.getInstance(); Refaktoryzacja kodu Dlaczego refaktoryzacja 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 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 6

17 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().dosomething(); Nieodpowiednie, nadmierne powiązania klas Jak weryfikować brak zmian zewnętrznego działania Testowanie Analiza formalna i nieformalna Unikanie dużych zmian Procedury proste kroki Komentarze?!?! // Dochód podstaw przychód kosz D = P K; Refaktoryzacja a rozszerzanie/modyfikowanie funkcjonalności Dodanie/zmian a 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 Procedura przesuwania metody Dodanie parametru Ekstrakcja metody Ekstrakcja klasy Przesuń pole Przesuń metodę Zamień dziedziczenie na związek klas Ukryj pole/metodę 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 7

18 Opis refaktoryzacji w UML Refaktoryzacja a wzorce projektowe Refaktoryzacja często polega na zastosowaniu wzorców projektowych Wzorzec Client-Server dla pakietów klas Wzorzec Facade Interfejs uzytkownika symlulatora Symulator Interfejs uzytkownika symlulatora Okno widoku symulacji Symulator Osobnik Okno widoku symulacji Okno parametrów Okno statystyk Osobnik Organ Gatunek Okno parametrów Okno statystyk Symulator Organ Gatunek Facade Oryginalny program Ekstrakcja metody Powiadom powtarzaj if rwidok tabelaryczny <> NULL rwidok tabelaryczny.uaktualnij () if rwidok graficzny <> NULL rwidok graficzny.uaktualnij () dopóki Algorytm ewolucyjny +Generuj() Rozwiazanie Widok tabelaryczny 0.. +Uaktualnij() 0.. Widok graficzny +Uaktualnij() powtarzaj Powiadom () dopóki if rwidok tabelaryczny <> NULL rwidok tabelaryczny.uaktualnij () if rwidok graficzny <> NULL rwidok graficzny.uaktualnij () Algorytm ewolucyjny +Generuj() #Powiadom() Rozwiazanie Widok tabelaryczny 0.. +Uaktualnij() 0.. Widok graficzny +Uaktualnij() 8

19 Ekstrakcja generalizacji interfejsu Widok Modyfikacja w programie dodanie kolejnego algorytmu ewolucyjnego Algorytm ewolucyjny +Generuj() +Dodaj widok() +Usun widok() #Powiadom() «interface» Widok +Uaktualnij() Algorytm ewolucyjny 2 +Generuj() +Dodaj widok() +Usun widok() #Powiadom() Algorytm ewolucyjny +Generuj() +Dodaj widok() +Usun widok() #Powiadom() «interface» Widok +Uaktualnij() Widok graficzny Widok tabelaryczny Widok graficzny Widok tabelaryczny Dla kazdego rwidok rwidok.uaktualnij Rozwiazanie +Uaktualnij() +Uaktualnij() Rozwiazanie +Uaktualnij() +Uaktualnij() Ekstrakcja generalizacji Algorytm ewolucyjny Wzorzec Observer Rozwiazanie Algorytm ewolucyjny +Generuj() Algorytm ewolucyjny +Generuj() +Dodaj widok() +Usun widok() #Powiadom() Algorytm ewolucyjny 2 +Generuj() +Uaktualnij() Widok graficzny +Uaktualnij() «interface» Widok Widok tabelaryczny +Uaktualnij() for each robserver robserver.update () Subject +Attach() +Detach() #Notify() Concrete subject «interface class» Observer +Update() Concrete observer +Update() Cechy (zalety) wzorca Observer Możliwość wielu sposobów prezentacji 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 Projektowanie przez kontrakty (design by contract) Kontrakt oznacza zobowiązanie (klasy), do pewnego zachowania, pod warunkiem, że klient korzystający z klasy także spełni pewne warunki 9

20 Rodzaje kontraktów Specyfikacja operacji Implementacja interfejsu Klasa zobowiązuje się (o ile nie jest abstrakcyjna), że zaimplementuje wszystkie operacje abstrakcyjne Stałe ograniczenia dotyczące pól klas Muszą być spełnione zawsze (być może nie w trakcie realizacji pewnych metod) Warunki początkowe operacji (pre-conditions) Przy tych warunkach operacja musi zostać wykonana poprawnie. Obejmują ograniczenia dotyczące pól klas. Warunki końcowe operacji (post-conditions) Te warunki muszą być spełnione po wykonaniu operacji Warunki początkowe i końcowe mogą, ale nie muszą dokładnie specyfikować działanie operacji Rozwiaz (in double a, in double b, in double c, out boolean istnieje, out double x, out double x2) Warunek końcowy Jeżeli istnieje to a x^2+b x+c = 0 i a x^2+b x+c = 0 20

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

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

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

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

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

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

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

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

(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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 1) Oprogramowanie to: 2) Produkty oprogramowania w inżynierii oprogramowania można podzielić na: 3) W procesie wytwarzania oprogramowania

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

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

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

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

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

Inżynieria oprogramowania

Inżynieria oprogramowania Politechnika Poznańska, Instytut Informatyki, Studia niestacjonrne Inżynieria oprogramowania Wykład 3 13.12.2015 Refaktoryzacja Refaktoryzacja kodu Seria niewielkich modyfikacji kodu, z których każda zmienia

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

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

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

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

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

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

Programowanie Komponentowe WebAPI

Programowanie Komponentowe WebAPI Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,

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 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

Wzorce projektowe i refaktoryzacja

Wzorce projektowe i refaktoryzacja Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:

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

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

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

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36 Automatyzacja testowania oprogramowania Automatyzacja testowania oprogramowania 1/36 Automatyzacja testowania oprogramowania 2/36 Potrzeba szybkich rozwiązań Testowanie oprogramowania powinno być: efektywne

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

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

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

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

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

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

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu. Systemy rozproszone Wg Wikipedii: System rozproszony to zbiór niezależnych urządzeń (komputerów) połączonych w jedną, spójną logicznie całość. Połączenie najczęściej realizowane jest przez sieć komputerową..

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,

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

Inżynieria Wytwarzania Systemów Wbudowanych

Inżynieria Wytwarzania Systemów Wbudowanych GUT Intel 2015/16 1/19 Inżynieria Wytwarzania Systemów Wbudowanych Wykład 4b Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG October 18, 2018 Wzorce projektowe Wzorzec projektowy - ogólne

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

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

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

Programowanie Zespołowe

Programowanie Zespołowe Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6 Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

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

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

Część I Rozpoczęcie pracy z usługami Reporting Services

Część I Rozpoczęcie pracy z usługami Reporting Services Spis treści Podziękowania... xi Wprowadzenie... xiii Część I Rozpoczęcie pracy z usługami Reporting Services 1 Wprowadzenie do usług Reporting Services... 3 Platforma raportowania... 3 Cykl życia raportu...

Bardziej szczegółowo

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr

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

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

INŻYNIERIA OPROGRAMOWANIA. laboratorium

INŻYNIERIA OPROGRAMOWANIA. laboratorium INŻYNIERIA OPROGRAMOWANIA laboratorium UML 1/4 UML (Unified Modeling Language) - język modelowania obiektowego systemów i procesów [Wikipedia] Spojrzenie na system z różnych perspektyw dzięki zastosowaniu

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

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

Bardziej szczegółowo

WPROWADZENIE DO BAZ DANYCH

WPROWADZENIE DO BAZ DANYCH WPROWADZENIE DO BAZ DANYCH Pojęcie danych i baz danych Dane to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp. Baza danych (data base) to uporządkowany zbiór danych z

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

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

Zasady organizacji projektów informatycznych

Zasady organizacji projektów informatycznych Zasady organizacji projektów informatycznych Systemy informatyczne w zarządzaniu dr hab. inż. Joanna Józefowska, prof. PP Plan Definicja projektu informatycznego Fazy realizacji projektów informatycznych

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7 Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Command (action, transaction, polecenie)

Command (action, transaction, polecenie) 1/10 Command (action, transaction, polecenie) Cel: Obiekt funkcyjny. Pozwala operować żądaniem jako obiektem wysyłać jako parametr, buforować, kolejkować, składować (dzienniki lub undo). Przykład: class

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

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1 UCD - User Centered Design 1) User Centered Design Projekt Skoncentrowany

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Spis treúci. 1. Wprowadzenie... 13

Spis treúci. 1. Wprowadzenie... 13 Księgarnia PWN: W. Dąbrowski, A. Stasiak, M. Wolski - Modelowanie systemów informatycznych w języku UML 2.1 Spis treúci 1. Wprowadzenie... 13 2. Modelowanie cele i metody... 15 2.1. Przegląd rozdziału...

Bardziej szczegółowo

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP Paweł Kozioł p.koziol@students.mimuw.edu.pl Na początek - moja praca magisterska Narzędzie dla środowiska Eclipse wspierające

Bardziej szczegółowo

Design Pattern Density Defined

Design Pattern Density Defined Design Pattern Density Defined (Definicja gęstości wzorców projektowych) Marcin Mieteń Na podstawie pracy pana Dirka Riehle Wzorce Projektowe (przypomnienie) Przypomnienie idei wzorców, z których będziemy

Bardziej szczegółowo