Programowanie i projektowanie obiektowe

Podobne dokumenty
Modelowanie i Programowanie Obiektowe

Programowanie obiektowe

Programowanie i projektowanie obiektowe

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

Zaawansowane programowanie w C++ (PCP)

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

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

Technologia Programowania 2016/2017 Wykład 5

Rysunek 1: Przykłady graficznej prezentacji klas.

Programowanie i projektowanie obiektowe

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 2015

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

Wprowadzenie do programowania aplikacji mobilnych

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

Programowanie i projektowanie obiektowe

UML w Visual Studio. Michał Ciećwierz

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

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Projektowanie obiektowe Wzorce projektowe

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

Programowanie i projektowanie obiektowe

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

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

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

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

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

Zarządzanie sieciami telekomunikacyjnymi

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

PHP 5 język obiektowy

Wzorce projektowe. dr inż. Marcin Pietroo

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)

Programowanie obiektowe w VB cz 2

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Technologia Programowania 2016/2017 Wykład 4

1. CZYM JEST SERIALIZACJA

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Enkapsulacja, dziedziczenie, polimorfizm

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

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

Diagramy klas. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Mechanizm dziedziczenia

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs WWW. Paweł Rajba.

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

Analiza i programowanie obiektowe 2016/2017. Wykład 6: Projektowanie obiektowe: diagramy interakcji

Bazy danych i usługi sieciowe

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

Programowanie w języku Java WYKŁAD

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Testowanie oprogramowania Wzorce projektowe

Modelowanie danych, projektowanie systemu informatycznego

.NET Klasy, obiekty. ciąg dalszy

Programowanie i projektowanie obiektowe

Podstawy Programowania Obiektowego

Projektowanie logiki aplikacji

Programowanie obiektowe - 1.

Podstawy projektowania systemów komputerowych

Paweł Kurzawa, Delfina Kongo

Wzorce logiki dziedziny

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Proces tworzenia projektu systemu informatycznego. Inżynieria Oprogramowania

Zasady projektowania obiektowego

Modelowanie obiektowe

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

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Programowanie obiektowe

Wzorce projektowe. Wstęp

Programowanie obiektowe

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

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

Technologie cyfrowe semestr letni 2018/2019

Programowanie i projektowanie obiektowe

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

Zarządzanie sieciami komputerowymi - wprowadzenie

SubVersion. Piotr Mikulski. SubVersion. P. Mikulski. Co to jest subversion? Zalety SubVersion. Wady SubVersion. Inne różnice SubVersion i CVS

Technologie cyfrowe semestr letni 2018/2019

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04


Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Post-relacyjne bazy danych

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Programowanie Komputerów

Modelowanie klas i obiektów. Jarosław Kuchta Projektowanie Aplikacji Internetowych

UML. zastosowanie i projektowanie w języku UML

Oracle PL/SQL. Paweł Rajba.

Język programowania. Andrzej Bobyk

Transkrypt:

Programowanie i projektowanie obiektowe Projektowanie obiektowe Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 1 / 19

W poprzednim odcinku... P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 2 / 19

Obiektowy model dziedziny Obiektowy model dziedziny identyfikuje klasy pojęciowe, ich atrybuty i powiązania pomiędzy nimi. Stanowi bazę do tworzenia projektu obiektowego. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 3 / 19

Projekt obiektowy Zawiera klasy dziedziczenie atrybuty metody powiązania (wraz ze sposobem realizacji) P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 4 / 19

Metody Programowanie obiektowe polega na wyznaczaniu obiektom odpowiedzialności. Te odpowiedzialności są dwóch typów: za pamiętanie pewnych danych i za wykonywanie operacji na tych danych. Przy czym zdecydowanie trudniejsze i ważniejsze jest rozdzielenie odpowiedzialności za wykonanie operacji. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 5 / 19

Powiązania Zazwyczaj powiązania realizuje się przy pomocy atrybutów. Wybór klasy, do której należy atrybut określający powiązanie jest decyzją projektową. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 6 / 19

Typy danych Typy proste (podstawowe) (ang. primitive types, basic types) Typy proste służą do przechowywania pojedynczych wartości napisów, znakow, liczb, wartości logicznych. W naturalny sposób posługujemy się nimi w wyrażeniach. Są wydajniejsze. Typy referencyjne (obiektowe) Wartościami są referencje do obiektów (instancji klas). Uwaga na przyszłość Wartości typów prostych są niezmienialne A is A. Wartości typów referencyjnych owszem obiekty mają atrybuty. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 7 / 19

Hierarchia klas Klasa bazowa (nadklasa) (ang. base class, superclass) Definuje składowe wspólne dla wszystkich wariantów. Klasa pochodna (podklasa) (ang. derived class, subclass) Definuje składowe charakterystyczne dla konkretnego wariantu. Kryterium stosowalności Podklasa jest szczególnym przypadkiem nadklasy. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 8 / 19

Dziedziczenie Podklasa dziedziczy (ang. inherits) składowe nadklasy. Jeżeli jest to konieczne, może je przedefiniować (ang. override). P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 9 / 19

Odpowiedzialność Projekt określa jakie składowe (funkcjonalności) klasa udostępnia. Do ich realizacji mogą być potrzebne składowe pomocnicze. Składowe pomocnicze mogą zależeć od implementacji. Nie należy na nich polegać. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 10 / 19

Widoczność Składowe klasy mogą być oznaczone jako: publiczne (ang. public) mogą ich bez ograniczeń używać obiekty wszystkich klas chronione (ang. protected) mogą ich bez ograniczeń używać obiekty tej samej klasy lub jej podklas prywatne (ang. private) mogą ich używać jedynie obiekty tej samej klasy P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 11 / 19

Kapsułkowanie Oznaczać atrybutów jako prywatne chroni przed wieloma błędami, ale jak się wtedy do nich dostawać? Konwencja get, set i is Jeżeli atrybut ma nazwę jakaśnazwa to metoda, która odczytuje jego wartość powinna się nazywać getjakaśnazwa() a metoda, która pozwala tą wartość zmienić setjakaśnazwa(). W wypadku atrybutów przechowujących wartości logiczne metoda odczytująca wartość jest też czasami nazywana isjakaśnazwa(). P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 12 / 19

Diagramy przebiegu Diagramy przebiegu służą do przedstawiania interakcji obiektów. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 13 / 19

Sprzężenie, a spójność Luźne sprzężenie Sprzężenie (ang. coupling) jest miarą jak bardzo obiekty, podsystemy lub systemy zależą od siebie nawzajem. Przykładowo obiekt wykonujący metodę innego obiektu jest z nim sprzężony. Tak samo podklasa jest sprzężona z nadklasą. Sprzężenie obiektów utrudnia wprowadzanie zmian w kodzie. Wysoka spójność Spójność to miara jak funkcjonalnie powiązane są metody danej klasy. Warto dbać o utrzymanie wysokiej spójności (ang. high cohesion). Może się wydawać, że zachowanie wysokiej spójności przez zlecanie odpowiedzialności ma negatywny wpływ na sprzężenie. Jednak klasy mające wiele odpowiedzialności są zazwyczaj sprzężone z wieloma innymi klasami. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 14 / 19

Klasy pomocnicze Tworzenie klas pomocniczych pomaga zachować spójność. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 15 / 19

Wzorce projektowe (ang. design patterns) Zazwyczaj istnieje wiele rozwiązań projektowych danego problemu. Kryteria jakości prostota pracochłonność elastyczność łatwość w utrzymaniu Wzorce projektowe stanowią dobrze znane pary problem-rozwiązanie wraz z zaleceniami odnośnie stosowania, analizą zalet i wad, sposobami implementacji etc. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 16 / 19

Wzorce projektowe (ang. design patterns) c.d. Przykłady Name Description Abstract factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes. Builder Separate the construction of a complex object from its representation allowing the same construction process to create various representations. Factory method Define an interface for creating a single object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses. Object pool Avoid expensive acquisition and release of resources by recycling objects that are no longer in use. Can be considered a generalisation of connection pool and thread pool patterns. Prototype Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype. Adapter or Convert the interface of a class into another interface clients expect. An adapter lets classes Wrapper work together that could not otherwise because of incompatible interfaces. Composite Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. Facade Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. Module Group several related elements, such as classes, singletons, methods, globally used, into a single conceptual entity. Iterator Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. Null object Avoid null references by providing a default object. Observer or Publish/subscribe Define a one-to-many dependency between objects where a state change in one object results in all its dependents being notified and updated automatically. Servant Define common functionality for a group of classes Strategy Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 17 / 19

Zadanie 1 Supermarket Towary w supermarkecie wystawione są na półkach, które pogrupowane są w regały i alejki. Na półce mogą znajdować się produkty jednego rodzaju. Półka ma ograniczoną pojemność. Ponadto istnieje magazyn, gdzie przechowywane są zapasy towarów. Sprzedaż jest rejestrowana w kasach. Należy zaprojektować system pozwalający na rejestrowanie ilości towarów wystawionych w sklepie oraz składowanych w magazynie. Na podstawie sprzedaży należy prognozować stany na półkach i generować zlecenia uzupełnienia towarów. Należy również wprowadzić możliwość rejestrowania stanów faktycznych. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 18 / 19

Zadanie 2 Sieć kolejowa Zadanie Sieć kolejowa składa się ze stacji połączonych torami. Pomiędzy dwiema stacjami może być więcej niż jeden tor. Wśród stacji wyróżniamy mijanki, przystanki, posterunki odgałęźne i stacje, które różnią się między innymi liczbą pociągów, które mogą na nich oczekiwać. Na jednym torze może w danej chwili znajdować się co najwyżej jeden pociąg. Pociągi są ciągnięte przez lokomotywy spalinowe lub elektryczne, z zastrzeżeniem że lokomotywy elektryczne nie mogą poruszać się po niezelektryfikowanych odcinkach. Pociągi jeżdżą według rozkładu. Należy zaprojektować system zarządzania ruchem kolejowym z uwzględnieniem priorytetów pociągów (towarowy, osobowy, pospieszny, ekspres). Istotne jest również obliczanie kosztów dostępu do torów i zużytej energii. P. Daniluk (Wydział Fizyki) PO w. II Jesień 2014 19 / 19