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

Podobne dokumenty
Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

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

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

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

Świat rzeczywisty i jego model

Diagramy klas. dr Jarosław Skaruz

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

Wykład 1 Inżynieria Oprogramowania

Podstawy programowania III WYKŁAD 4

Programowanie obiektowe

Programowanie obiektowe

Technologie obiektowe

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

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

Inżynieria oprogramowania. Część 5: UML Diagramy klas

Modelowanie. Wykład 1: Wprowadzenie do Modelowania i języka UML. Anna Kulig

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Modelowanie i analiza systemów informatycznych

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

Programowanie obiektowe

Programowanie obiektowe - 1.

UML w Visual Studio. Michał Ciećwierz

Projektowanie logiki aplikacji

PRZEWODNIK PO PRZEDMIOCIE

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Podstawy Programowania Obiektowego

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

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Programowanie obiektowe

UML. zastosowanie i projektowanie w języku UML

Analiza i projektowanie obiektowe 2015/2016. Wykład 2: Przypadki użycia

Diagramu Związków Encji - CELE. Diagram Związków Encji - CHARAKTERYSTYKA. Diagram Związków Encji - Podstawowe bloki składowe i reguły konstrukcji

Język programowania. Andrzej Bobyk

Analiza i projektowanie aplikacji Java

Programowanie obiektowe

Baza danych przestrzennych modelowa reprezentacja fragmentu świata rzeczywistego

Modelowanie obiektowe

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Wykład 8: klasy cz. 4

Podstawy projektowania systemów komputerowych

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wymiar poziomy: oś na której umieszczono instancje klasyfikatorów biorące udział w interakcji.

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Charakterystyka oprogramowania obiektowego

Projekt systemu informatycznego

TECHNOLOGIE OBIEKTOWE WYKŁAD 2. Anna Mroczek

Język Java część 2 (przykładowa aplikacja)

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

Język Java część 2 (przykładowa aplikacja)

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

UML cz. II. UML cz. II 1/38

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Klasy abstrakcyjne i interfejsy

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

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

Wykład I. Wprowadzenie do baz danych

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Podstawy modelowania programów Kod przedmiotu

Zapisywanie algorytmów w języku programowania

Materiały do zajęć VII

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Feature Driven Development

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

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

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

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Programowanie obiektowe

PRZEWODNIK PO PRZEDMIOCIE

Wykład 3 Wymagania. MIS n Inżynieria oprogramowania Październik Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Wstęp do programowania obiektowego. Wykład 2

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Modelowanie i Programowanie Obiektowe

PHP 5 język obiektowy

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela

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

Wzorce projektowe. dr inż. Marcin Pietroo

Michał Adamczyk. Język UML

Diagramy czynności Na podstawie UML 2.0 Tutorial

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

Definiowanie własnych klas

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

Modelowanie i analiza systemów informatycznych

IBM Rational Software Architect uproszczona instrukcja użytkowania

TEMAT : KLASY DZIEDZICZENIE

Technologie informacyjne - wykład 12 -

Wykład 7 Metodyki wytwarzania oprogramowania internetowego (2) Wykładowca: dr inż. Mariusz Trzaska

UML - zarys 2007/2008

Paweł Kurzawa, Delfina Kongo

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

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

Wytwarzanie oprogramowania

Modelowanie danych, projektowanie systemu informatycznego

Projektowanie obiektowe Wzorce projektowe

INŻYNIERIA OPROGRAMOWANIA

Specyfikowanie wymagań przypadki użycia

Transkrypt:

Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy diagramu klas. 2. Zasady tworzenia projektowego diagramu klas. 3. Model implementacyjny. 2 1

Projektowy diagram klas 3 Kiedy tworzymy projektowy diagram klas? Projektowy diagram klas (design class diagram DCD) ma za zadanie wizualizować klasy softwarowe (i interfejsy) składające się na tworzoną aplikację. Diagram taki powinien zawierać pełne informacje o klasach: atrybuty, asocjacje, metody. Diagram tworzony jest równolegle z procesem tworzenia diagramów interakcji. Przykład: 4 2

Co składa się na projektowy diagram klas Elementy, które są zawarte w projektowym diagramie klas: Klasy, asocjacje i atrybuty, Interfejsy, Metody, Informacja o typie atrybutów, Skierowanie (navigability), Zależności (dependency). W przeciwieństwie do modelu wiedzy dziedzinowej, projektowy diagram klas zawiera klasy softwarowe, a nie pojęcia ze świata rzeczywistego (klasy konceptualne). Nazwa projektowy diagram klas jest skrótem od nazwy diagram klas w modelu projektowym. 5 Model wiedzy dziedzinowej, a projektowy diagram klas (1) Model wiedzy dziedzinowej ma za zadanie wizualizację pojęć (klas konceptualnych) występujących w rozpatrywanej dziedzinie, a nie reprezentację klas softwarowych występujących w tworzonym systemie. Podczas pracy nad projektem, model wiedzy dziedzinowej ma inspirować projektantów do wprowadzania do modelu projektowego klas nazywanych podobnie jak w modelu wiedzy dziedzinowej. Pozwala to na zmniejszanie luki reprezentacyjnej (luki semantycznej) pomiędzy modelem konceptualnym danej dziedziny, a jego reprezentacją w konkretnym rozwiązaniu informatycznym. W projektowym diagramie klas mogą pojawiać się klasy, które nie były wcześniej zawarte w modelu wiedzy dziedzinowej! Klasy takie mogą odnosić się do klas konceptualnych wcześniej nie znalezionych oraz do klas, które nie majążadnego związku z rozpatrywaną dziedziną (nie mają odpowiadających sobie klas konceptualnych w modelu wiedzy dziedzinowej)! 6 3

Model wiedzy dziedzinowej, a projektowy diagram klas (2) Klasy o tych samych nazwach w modelu wiedzy dziedzinowej oraz w projektowym diagramie klas oznaczają różne pojęcia. Np. w modelu wiedzy dziedzinowej klasa Sprzedaz oznacza abstrakcję pojęcia ze świata rzeczywistego, które jest rozważane jako kandydat do umieszczenia w tworzonej aplikacji. W projektowym diagramie klas klasa Sprzedaz opisuje komponent softwarowy. 7 Zasady tworzenia projektowego diagramu klas 8 4

Identyfikacja klas i dodanie metod W pierwszym kroku tworzenia projektowego diagramu klas analizujemy wszystkie utworzone diagramy interakcji wyszukując pojawiające się klasy. Dla programu POS są to następujące klasy: Kasa, Sprzedaz, KatalogProduktow, OpisProduktu, Sklep, ElementPozycjiSprzedazy, Platnosc Nie wszystkie klasy z modelu wiedzy dziedzinowej znajdą się w modelu projektowym np. klasa Kasjer (w rozpatrywanej iteracji nie ma potrzeby wprowadzanie takiej klasy). Do modelu należy wprowadzić metody, które pojawiają się w diagramach interakcji. 9 Komunikat create Komunikat create jest elementem występującym jedynie w UML i nie występuje jako taki w większości języków programowania. Tworzenie obiektów jest realizowane na różny sposób: w C++ wymagana jest alokacja pamięci, wywołanie operatora new i wywołanie konstruktora, w Javie wywołanie operatora new i wywołanie konstruktora. Ponieważ interpretacje tej metody są różne w różnych językach programowania i ponieważ jest to czynność powszechna i oczywista, w większości sytuacji pomija się w projektowym diagramie klasy metody związane z komunikatem create. 10 5

Metody dostępu do danych Metody dostępu do danych to metody pozwalające na czytanie (akcesory), bądź ustawianie (mutatory) wartości atrybutów. W większości języków programowania (C++, Java) przyjmuje się, że wprowadzony jest akcesor i mutator dla każdego atrybutu. Wynika to z faktu deklarowanie atrybutów w sekcji prywatnej (w celu zwiększenia enkapsulacji). W większości sytuacji akcesory i mutatory nie są umieszczane w projektowym diagramie klas. Np. w diagramie klas dla programu POS nie zostanie umieszczona metoda podajcene w klasie OpisProduktu, ponieważ jest to akcesor. 11 Umieszczanie informacji o typach danych W projektowym diagramie klas można umieszczać informację o typach atrybutów, parametrów metod i wartości zwracanych przez metody. Podczas umieszczania tych informacji należy brać pod uwagę odbiorców diagramu: Jeżeli projektowy diagram klas tworzony jest w narzędzie typu CASE z automatycznym generowaniem kodu, pełny i wyczerpujący opis typów danych jest niezbędny, Jeżeli projektowy diagram klas jest tworzony dla programistów tylko w celu zapoznania się z ogólnymi koncepcjami, umieszczanie oczywistych typów danych może utrudniać czytanie modelu; jeżeli na postawie diagramu programiści mają podejmować decyzje dotyczące rodzaju użytych danych szczegółowość diagramu powinna być większa. 12 6

Skierowanie (1) Każdy z końców asocjacji posiada rolę, która może być uzupełniona o skierowanie (navigability). Skierowanie informuje, że asocjacja działa tylko w jedną stronę od obiektu źródła do obiektu celu. W większości sytuacji skierowanie zakłada występowanie widzialności typu atrybutowego. 13 Skierowanie (2) Umieszczenie skierowanie przy asocjacji oznacza, że w trakcie implementacji w obiekcie źródło pojawi się atrybut zawierający referencję/wskaźnik do obiektu cel. W związku z powyższym asocjacje na projektowym diagramie klas powinny zawierać skierowania informacja ta ma wpływ na implementację! Informacja dotycząca skierowań odróżnia model wiedzy dziedzinowej od projektowego diagramu klas. Sytuacje sugerujące wprowadzenie skierowania od klasy A do klasy B: A wysyła komunikat do B, A tworzy instancję klasy B, A potrzebuje zachować powiązanie do B. 14 7

Skierowanie (3) 15 Skierowanie (4) 16 8

Relacja zależności (1) W UML można opisać informację o relacji zależności (dependency), która wskazuje, że jeden element posiada wiedzę na temat innego elementu. Relacja ta jest wykorzystana do opisu widoczności nie atrybutowych. Widoczność atrybutowa jest opisywana przy pomocy asocjacji. Zależność jest wizualizowana w UML przy pomocy przerywanej linii zakończonej strzałką. 17 Relacja zależności (2) 18 9

Model implementacyjny 19 Czym jest model implementacyjny Unifed Process określa jako Model Implementacyjny wszystkie byty tworzone podczas fazy kodowania: kod źródłowy, model bazy danych, uszczegółowione diagramy klas itp. Podczas tworzenia modelu implementacyjnego byty abstrakcyjne opisane w projektowym diagramie klasy oraz w diagramach interakcji są przenoszone do kodu w obiektowym języku programowania. Kodowanie w języku obiektowym nie jest częścią procesu analizy i projektowania obiektowego, jest tylko celem tego procesu. Przenoszenie wyników analizy i projektowania obiektowego do kodu nie jest jedynie mechanicznym ich przełożeniem!! Wynik analizy i projektowania obiektowego powinien być traktowany jako niekompletny pierwszy krok, który dopiero w trakcie programowania i testowania doprowadzi nas produktu ostatecznego dla danej iteracji. 20 10

Zmiany kody, a proces iteracyjny (1) Poprawnie zbudowany model będący wynikiem fazy analizy i projektowania oraz odpowiednio dobrany proces iteracyjny powinien zapewniać wygodne iteracyjne konstruowanie aplikacji. Przyjmuje się, że kod uzyskany podczas danego przyrostu powinien być punktem wyjścia do wszystkich etapów kolejnego przyrostu: Analiza wymagań Analiza wymagań Analiza wymagań Analiza i projekt Analiza i projekt Analiza i projekt Implementacja i testowanie Implementacja i testowanie Implementacja i testowanie Pierwszy przyrost Drugi przyrost Trzeci przyrost... 21 Zmiany kodu, a proces iteracyjny (2) Podczas implementacji w procesie iteracyjnym należy pamiętać o tym, że kod uzyskany w wyniku n-tej iteracji różni się przeważnie od modelu z n-tej iteracji podczas implementacji wprowadzone są do kodu wszelkie niezbędne zmiany dotyczące struktury modelu. Ważnym problemem jest więc zsynchronizowanie modelu opisanego w diagramie projektowym z modelem, który de facto jest opisany w kodzie po zakończeniu danego przyrostu. Problem ten może być rozwiązany poprzez stosowanie narzędzi modelowania typu CASE (modelery), które pozwalają na budowanie modeli obiektowych z gotowego kodu. Zagadnienie to nosi nazwę reverse-engineering, czyli generowanie diagramów z kodu zapisanego w języku obiektowym. 22 11

Tworzenie kodu: budowa klasy w oparciu o definicje zapisane w projektowym diagramie klas W większości przypadków projektowy diagram klas posiada wszelkie niezbędne informacje konieczne do zapisania w języku obiektowym kodu dla rozpatrywanej klasy. Metoda create została zastąpiona konstruktorem 23 Tworzenie kodu: dodawanie atrybutów referencyjnych Atrybut referencyjny to atrybut, który wykorzystywany jest do przechowywania referencji, bądź wskaźnika do obiektu, a nie do typu prostego takiego jak liczba, bądź łańcuch. Atrybuty referencyjne są wykorzystywane do implementacji asocjacji zapisanych w projektowym diagramie klas atrybuty takie nie są zapisywane wprost w projektowym diagramie klas. Atrybut referencyjny 24 12

Tworzenie kodu: implementacja metod (1) W trakcie budowy diagramów interakcji do projektowego diagramu klas wprowadzone są metody, które będą musiały być zaimplementowane. Diagramy interakcji obrazują kolejność przesyłania komunikatów pomiędzy instancjami klas w odpowiedzi na wywołanie danej metody. W trakcie budowania ciała takiej metody sekwencja tych komunikatów przełoży się na kolejno wywoływane wyrażenia. 25 Tworzenie kodu: implementacja metod (2) Deklaracja klasy Kasa Definicja metody dodajprodukt 26 13

Kolejność implementacji Przyjmuje się, że kolejność implementacji klas zależy od stopnia ich powiązań w pierwszej kolejności powinny być implementowane klasy o niskim współczynniku powiązań. 27 14