Diagramy klas WYKŁAD Piotr Ciskowski
przedstawienie statyki systemu graficzne przedstawienie statycznych, deklaratywnych elementów dziedziny przedmiotowej oraz związków między nimi obiekty byt, egzemplarz klasy uogólnienie, typ związki
OBIEKT - KLASA
obiekt - klasa obiekt - każdy byt (osoba, stworzenie, pojęcie lub rzecz) mający znaczenie w kontekście rozwiązywanego problemu - budowa, cechy statyczne atrybuty, własności, pola - zachowanie operacje, usługi, metody - obiekt jest instancją klasy - obiekt ma tożsamość klasa - uogólnienie zbioru obiektów, które mają te same atrybuty, operacje, związki i znaczenie
klasa nazwa: rzeczownik symbol: prostokąt różne stopnie szczegółowości: (Wrycza, Visual Studio)
klasa klasa - typ, rodzaj, zbiór obiektów - nazwa: rzeczownik, z dużej litery atrybuty własności, cechy obiektów tej klasy - statyka, struktura - nazwa: z małej litery operacje - czynności - usługi - komunikaty - dynamika, zachowanie - nazwa: z małej litery
różny poziom szczegółowości (Wrycza, Visual Studio)
klasa - obiekt jakiejś klasy: (UML dla każdego,, Visual Studio)
STEREOTYPY
przedstawienie statyki systemu graficzne przedstawienie statycznych, deklaratywnych elementów dziedziny przedmiotowej oraz związków między nimi stereotypy, zobowiązania: (UML dla każdego)
KONCEPTUALNY - IMPLEMENTACYJNY
Poziom szczegółowości: konceptualny - podstawowe elementy analityczny - przystępne nazewnictwo klas, atrybutów i operacji implementacyjny - <<implementation class>> wdrożeniowy - dodatkowo: typy danych zobowiązania widoczność statyczność klasy asocjacyjne kwalifikacje uogólnienia zależności realizacje
DODATKI
Dodatkowe elementy: ograniczenia - warunki, zastrzeżenia związane z danym obiektem - tekst, wzór, pseudokod ew. język OCL (Object Constraint Language) - w nawiasach klamrowych UML dla każdego
Dodatkowe elementy: notatki: UML dla każdego
Dodatkowe elementy: ograniczenia i notatki: UML dla każdego, Visual Studio
Dodatkowe elementy: ograniczenia i notatki: UML dla każdego, Visual-Paradigm for UML
Dodatkowe elementy: ograniczenia i notatki: UML dla każdego, Enterprise Architect
Dodatkowe elementy: zobowiązania - pomocniczo - po wstępnej analizie scenariuszy, przed pełną koncepcją klasy (atrybuty, operacje) - wysokopoziomowy opis zadań klasy - kontrakt, odpowiedzialność klasy Wrycza, Enterprise Architect
Dodatkowe elementy: widoczność + publiczny - prywatny # chroniony ~ pakietowy Wrycza, Enterprise Architect, Visual Studio, Visual Paradigm
Dodatkowe elementy: statyczność - atrybuty i operacje: - egzemplarzowe - statyczne - podkreślone
NAZEWNICTWO
Nazewnictwo klas, atrybutów, operacji: poziom konceptualny - klasy: aukcja sesja giełdowa żądanie poziom implementacyjny: Aukcja SesjaGieldowa Zadanie
Nazewnictwo klas, atrybutów, operacji: poziom konceptualny atrybuty: pojemność karty SIM adres salonu firmowego numer telefonu komórkowego poziom implementacyjny: pojemnosckartysim adressalonu nrtelkom, nrtelefonukomorkowego
Nazewnictwo klas, atrybutów, operacji: poziom konceptualny operacje: zablokuj kartę SIM zmień aktualne stawki taryf wyślij esemesa poziom implementacyjny: zablokujkartesim() zmienstawkitaryf() wyslijsms()
Notacja atrybutów na poziomie implementacyjnym: [<widoczność: + - ~ # >] [ / ] <nazwa atrybutu> [ : <typ> ] [ [ <liczebność> ] ] [ = <wartość początkowa> ] [ { <właściwość> } ] / - atrybut pochodny (od innych) - wzór zwykle obok w notatce właściwości: ordered, [not] unique, readonly itp. Notacja operacji na poziomie implementacyjnym: [ <widoczność: + - ~# > ] <nazwa operacji> [ ( <lista parametrów> ) ] [ : <właściwość> ] lista parametrów po przecinku Notacja parametrów na poziomie implementacyjnym: [ kierunek: in out inout return] <nazwa atrybutu> [ : <typ> ] [ [ <liczebność> ] ] [ = <wartość początkowa> ] [ { <właściwość> } ]
Notacja atrybutów, operacji, parametrów na poziomie implementacyjnym: Wrycza, Enterprise Architect
ZWIĄZKI - ASOCJACJE
Rodzaje związków: asocjacja uogólnienie zależność realizacja
Rodzaje związków: asocjacja - powiązania między elementami - związek znaczeniowy między klasami - binarne - n-narne n-argumentowe - nazwy - role - nawigacja - liczebność - agregacja
Rodzaje związków: asocjacja - powiązania między elementami - związek znaczeniowy między klasami - nienazwane - nazwane Wrycza, Enterprise Architect, UML dla każdego
Rodzaje związków: asocjacja - powiązania między elementami - opcja: kierunek (interpretacji) - kierunek przesyłania komunikatów - mogą być inne drogi (pośrednie) - opcja: role - powinność jednej klasy względem drugiej Wrycza, Enterprise Architect
Rodzaje związków: asocjacja - powiązania między elementami - opcja: kierunek (interpretacji) - kierunek przesyłania komunikatów - mogą być inne drogi (pośrednie) - opcja: role - powinność jednej klasy względem drugiej - opcja: liczebność - dopuszczalny zakres 1 1..* 0..1 * 0..* n 1..n 0..n n..m n..* n,p,q
Asocjacje: wielokrotne zwrotne kwalifikowane
Asocjacje kwalifikowane: do wyszukiwania kwalifikator od strony klasy dokonującej wyszukiwania
Dodatkowe elementy: liczebność
Klasy asocjacyjne: precyzyjny opis związku między klasami asocjacja = klasa: nazwa atrybuty operacje
ZWIĄZKI - AGREGACJE
Rodzaje związków: agregacja - związek całość część - agregat segment - agregacja całkowita - częściowa kompozycja silna, składowa słaba, współdzielona zniszczenie agregatu segmenty są samodzielne = zniszczenie części
Rodzaje związków: agregacja - związek całość część - agregat segment - agregacja całkowita częściowa UML dla każdego
ZWIĄZKI - UOGÓLNIENIA
Rodzaje związków: uogólnienie hierarchia klas dziedziczenie klasa podstawowa klasa pochodna klasy abstrakcyjne korzeń klasy pośrednie liście obiekt klasy pochodnej jest rodzajem obiektu klasy podstawowej jeśli nie - raczej asocjacja Wrycza, Enterprise Architect
Rodzaje związków: uogólnienie ograniczenia: {complete} - {disjoint} - {incomplete} {overlapping} dyskryminatory
ZWIĄZKI - ZALEŻNOŚCI - INTERFEJSY
Inne związki: zależność - jedna klasa zależy od drugiej - zmiany w niezależnej zmieniają tę zależną - gdy w sygnaturze operacji jednej klasy jest obiekt drugiej klasy - gdy obiekty jednej klasy wysyłają komunikaty do obiektów innej klasy - gdy obiekty jednej klasy zawierają w swoich danych obiekty innej klasy - pokazuje skalę zmian w systemie
Inne związki: zależność realizacja klasa interfejs interfejs - zestaw operacji usługi oferowane przez klasę klasa abstrakcyjna nie ma obiektów interfejs nie ma implementacji
DIAGRAM OBIEKTÓW
diagram obiektów - migawka diagramu klas - struktura systemu w pewnym momencie działania
PODSUMOWANIE
Rady: nie przesadzać oszczędnie z notacją od ogółu do szczegółu wiele diagramów różne potrzeby, perspektywy, poziomy szczegółowości niekoniecznie wszystkie klasy struktura + zachowanie biznesowe techniczne
Etapy powstawania DK: 1. zidentyfikowanie i nazwanie klas 2. określenie zobowiązań klas 3. połączenie klas związkami asocjacji 4. zidentyfikowanie i nazwanie atrybutów operacji 5. specyfikacja asocjacji: nazwy role nawigacja liczebność agregacja kwalifikacja 6. inne związki: uogólnienia zależności realizacje 7. pełna, precyzyjna specyfikacja atrybutów operacji 8. diagramy obiektów
Tworzenie DK: po rozmowie z klientem : wyszukać rzeczowniki klasy atrybuty wyszukać czasowniki operacje podstawowa lista klas - do czego służą zobowiązania