Návrh - návrhové třídy a vzory



Podobné dokumenty
Analýza problémové domény

Modelování obchodních procesů

Obsah přednášky. Postup při vytváření objektů. Postup při vytváření objektů. Alokace paměti. Inicializace hodnot atributů

Architektura softwarových systémů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

20. Projekt Domácí mediotéka

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Principy objektově orientovaného programování

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Diagramy tříd - základy

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

7.3 Diagramy tříd - základy

Modelování požadavků

Úvod do softwarového inženýrství a týmového vývoje

7.3 Diagramy tříd - základy

Programování v Javě I. Leden 2008

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Programování v Javě I. Únor 2009

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

8 Třídy, objekty, metody, předávání argumentů metod

Teoretické minimum z PJV

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do programování - Java. Cvičení č.4

Úvod do programovacích jazyků (Java)

KTE / ZPE Informační technologie

PREPROCESOR POKRAČOVÁNÍ

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Základy objektové orientace I. Únor 2010

Objektově orientované programování

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

DBS Transformace konceptuálního schématu na

knihovna programátora

Elektronická zdravotní karta

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2.

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

6. SQL složitější dotazy, QBE

Transformace ER SQL. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 9

Dědičnost (inheritance)

4IT218 Databáze. 4IT218 Databáze

OCL a integritní omezení

Reflexe RTTI Runtime Type Identification

Semestrální práce z DAS2 a WWW

Databázové systémy Cvičení 5.2

Informační systém pro fotbalový team

UML - Unified Modeling Language

Terminologie v relačním modelu

OOPR_05. Případové studie

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Databázové systémy trocha teorie

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

Tabulka fotbalové ligy

Objektové modelování BI-OMO 4. cvičení


Návrh a tvorba WWW stránek 1/14. PHP a databáze

Projekty pro výuku programování v jazyce Java

Generické programování

11. Dědičnost. Dědičnost strana 103

IRAE 07/08 Přednáška č. 1

Object-relational mapping (JPA, Hibernate)

Seminář Java II p.1/43

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Pythonu

Návrhové vzory Design Patterns

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Vytěžování znalostí z dat

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Principy objektového návrhu. Přednáška 8, LS 2013/2014

OFF-LINE PRÁCE SE ZDROJI aneb Jak na elektronické výpůjčky

Programování v C++ 1, 6. cvičení

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Vytváření a použití knihoven tříd

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování

Jazyk C++ I. Šablony 2

Typický prvek kolekce pro české řazení

Česká zemědělská univerzita v Praze. Provozně ekonomická fakulta. Katedra informačních technologií

Abstraktní datové typy: zásobník

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní


Transformace konceptuálního modelu na relační

Třída. Atributy. Operace

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

typová konverze typová inference

Jazyk C# a platforma.net

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Vytěžování znalostí z dat

INFORMAČNÍ SYSTÉM PŮJČOVNY JÍZDNÍCH KOL

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Transkript:

Návrh - návrhové třídy a vzory Ing. Jiří Mlejnek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jiří Mlejnek, 2011 jiri.mlejnek@fit.cvut.cz Softwarové inženýrství BI-SI1 LS 2011/ Před. 6 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Obsah Návrhový model tříd Databázový model Spolupráce objektů Vzory GRASP Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 2

Návrhový model tříd Závislý na zvolené technologii Vychází z doménového modelu Datové typy atributů Upřesnění relací Nové softwarové třídy Přiřazení zodpovědností Realizace scénářů případů užití Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 3

Návrhový model tříd Diagram tříd pokročilá notace Statické Abstraktní Viditelnost Konstruktor Inicializace Kolekce Závislosti class Návrhový model tříd Třída - statický atribut: int # protected atri but: int ~ package visible: i nt - /odvozený atribut: i nt - iniciali zovaný atribut: i nt = hodnota - konstantní atribut: i nt {reado nly} - kol ekce dupl icity: i nt [0..*] {bag} - uspořádaná kol ekce: i nt [1..*] {ordered} + statická m etoda() : void + abstraktní metoda() : voi d + m etoda(char) : boolean[] «constructor» + konstruktor() : void Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 4

Návrhový model tříd deployment Náv rhov ý model tříd Java Vytisk - evidencnicislo - roknakupu - datum Vyrazeni - porizovacicena m aexem plare 1..* 1 - nazev - isbn - rokvyd ani - obsah - klicovaslova Kniha «trace» «trace» Vytisk Serializable Kniha Serializable - vytiskid: int - datum vyrazen i: Da te - evid encni cisl o: Stri ng - porizovacicena: double - rokn akupu: i nt -knihaid - knihaid: int - isbn: S trin g - klicovaslova: String - nazev: Stri ng - rokvydani: i nt + Vytisk() + getdatum vyraze ni() : Date + setdatum vyrazeni(date) : vo id + getevidencnicislo() : String + setevidencnicislo(string) : void + getpori zovacicena() : do ubl e + setporizovacicena(double) : void + getroknakupu() : int + setroknakupu(int) : void 1 + Kniha() + getisbn() : String + setisbn(string) : void + getklicovaslova() : String + setklicovaslova(string) : void + getnazev() : String + setnazev(string) : void + getrokvydani() : int + setrokvydani(int) : void Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 5

Návrhový model tříd Doporučení - důležitá je přehlednost Nezobrazovat názvy asociací Nezobrazovat get a set metody Pouze pro jednoduché třídy (Adresa, Bankovní účet) upřednostňovat zobrazení pomocí atributu Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 6

Návrhový model tříd Dotazy? Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 7

Databázový model Popisuje uložení dat v relační databázi Generování zakládacích SQL skriptů Obsahuje datové typy zvolené databáze Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 8

Databázový model Primární klíče Cizí klíče Dekompozice m:n vazeb Dědičnost 1 tabulka 2 tabulky 3 tabulky Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 9

Databázový model MySQL deployment Databázový model Autor - jm eno - pri jm eni 1..* jenapsana 0..* Kniha - nazev - isbn - rokvydani - obsah - klicovaslova «trace» Autor «trace» «colum n» jm eno: V ARCHAR(50) prijm eni: VARCHAR(50) *PK autorid: Integer «PK» + PK_ Autor() «FK» (a utorid = autorid) 0..* jenapsana «colum n» FK autorid: INT EG ER 1..* FK knihaid: INT EG ER «FK» (knihaid = kn ihaid) Kniha «colum n» nazev: VARCHAR(50) isbn: V ARCHAR(20) rokvyd ani: NUM ERIC(4 ) obsah: T EXT klicova Slova: VARCHA R(50) *PK knihaid: Integer FK regalid: INT EGER FK naklad atelstviid: INT EG ER «PK» + PK_ Kniha() «FK» + Autor() + Kniha() Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 10

Databázový model Doporučení - důležití je přehlednost Členění tabulek do více balíčků Skrývání popisů konců asociací (názvy PK, FK) Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 11

Databázový model Členění do balíčků class Relační datov ý model Ev idence knih + Autor + jenapsana + Kniha + Nakladatelstvi + Regal + Zanr + zarazenado Evidence vypujcek + Ctenar + jerezervovana + Pokuta + Rezervace + Vypujcka + Vytisk Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 12

Databázový model Rozdělení na více diagramů req Ev idence vypuj cek-slide Ctenar «colum n» cisloprukazky: INT EGER em ail: VARCHAR(50) jm eno: VARCHAR(50) prijm eni: VARCHAR(50) telefon: VARCHAR(50) *PK ctenarid: INT EGER «PK» + PK_Ctenar(INT EGER) (ctenarid = ctenarid) «FK» 1 0..* Vypujcka «colum n» datum Vraceni : DAT E datum Vypujceni : DAT E vypujcenado: DAT E *PK vypujckaid: INT EGER FK ctenarid: INT EGER FK vytiskid: INT EGER «PK» + PK_ Vypujcka(INT EGER) «FK» + m avypujceno(int EGER) + jevypujcen(int EGER) «FK» (vytiskid = vytiskid) 0..* 1 Vytisk «colum n» datum Vyrazeni: DAT E evidencnicislo: VARCHA R(50) porizovacicena: DOUBLE roknakupu: INT EGER FK vypujckaid: INT EGER stav: VARCHAR(50) *PK vytiskid: INT EGER FK knihaid: INT EGER «PK» + PK_ Vytisk(INT EGER) «FK» + jevypujcen(int EGER) + m aexem plare(int EGER) 1..* (knihaid = knihaid) «FK» 1 Ev idence knih::kniha Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 13

Databázový model Dotazy? Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 14

Spolupráce objektů Popis realizace scénářů Zachycení komunikace spolupracujících objektů Přiřazení zodpovědnosti třídám Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 15

Spolupráce objektů Notace interakční diagramy UML Sekvenční diagram Diagram komunikace Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 16

Spolupráce objektů Sekvenční diagram Objekt sd Sekv enční diagram :T řída B Objekt A:T řída A Třída Pojmenovaný Nepojmenovaný asynch. zpráva() synch. zpráva() Zpráva Statická metoda Asynchronní Synchronní Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 17

Spolupráce objektů Návratová hodnota 2 různé způsoby sd Náv ratov á hodnota :T řída A :T řída B vysledek= zprava() zprava() vysle dek Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 18

Spolupráce objektů Vytvoření objektu sd Vytvoření, zrušení :T řída A Zrušení objektu «create» Nový objekt:t řída B zpráva() «destroy» Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 19

Spolupráce objektů Sekvenční diagram Nalezená zpráva Zaslání zprávy sám sobě (Self Message) sd SelfMessage Objekt B: T řída B Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 20

Spolupráce objektů Sekvenční diagram Fragment sd Fragment :T řída B Objekt A:T řída A Větvení Cyklus Další (opt, par) alt f [a>b] [a <=b] zpráva A() zpráva B() loop [a<b] zpráva A() Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 21

Spolupráce objektů Sekvenční diagram sd VypujceniVytisku vytisk :VytiskDT O :StavVolny knihavypujcek :KnihaVypujcek Zpracuj(Ctenar, VytiskDT O) zapisvypujcku(vytiskdt O, Ctenar) new() vypujcka setvytisk(vytiskdt O) setctenar(ctenar) setvypujcenado(date) setstav(new StavVypujceny()) Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 22

Spolupráce objektů Diagram komunikace Objekt Třída Zpráva Pojmenovaný Nepojmenovaný Statická metoda Synchronní Asynchronní sd Diagram komunikace :Třída A 1: zpráva() 1.2: zprá va() Obj ektb:třída B 1.1: zpráva() :Třída C Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 23

Spolupráce objektů Diagram komunikace Vytvoření objektu Zrušení objektu sd Diagram komunikace v ytv áření obj ektu :Třída A 1: create() :Třída B «create» 1.1: vytvor() «destroy» 1.2: zprava() :Třída C Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 24

Spolupráce objektů Diagram komunikace Podmínky Cykly Iterace sd Diagram komunikace v ětv ení, cykly :Třída A 1: [a>b]:zprava() :Třída B :Třída A 1.1: *[i=1..n]:zprava() :Třída B :Třída A 1.2: *[i=1..n]:zprava() obj ekty[i]:třída B Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 25

Spolupráce objektů Diagram komunikace sd 6. přednáška :VytiskDTO 1: zpracuj(ctenar, VytiskDT O) :Stav Volny 1.1: zapisvypu jcku(vytiskdt O, Ctenar) :Vypuj cka 1.2: create() 1.3: setvytiskid(int) 1.4: setctenarid(int) :KnihaVypuj cek 1.5: setvypujcena do(date) Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 26

Spolupráce objektů Sekvenční diagram Výhody Nevýhody Přehledné zachycení pořadí zasílání zpráv Větší vyjadřovací schopnosti Velké nároky na prostor v horizontálním směru Nevhodné pro zobrazení většího množství objektů Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 27

Spolupráce objektů Diagram komunikace Výhody Nevýhody Úspornější na místo i při zobrazení více objektů Možnost uspořádat objekty horizontálně i vertikálně Obtížnější sledování pořadí zasílání zpráv Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 28

Spolupráce objektů Dotazy? Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 29

GRASP Základní vzory / principy pro přiřazení zodpovědností třídám Zodpovědnost je úkol, který má třída řešit Existuje mnoho způsobů rozdělení úloh mezi třídy Neexistuje jediné správné řešení Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 30

GRASP Informační expert (Information Expert) Nízká provázanost (Low Coupling) Vysoká soudržnost (High Cohesion) 6 dalších Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 31

GRASP Informační expert Základní princip přiřazení zodpovědnosti Popis Přiřaďte zodpovědnost třídě, která má informace potřebné pro splnění této zodpovědnosti Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 32

GRASP Nízká provázanost Zmenšuje dopad při provádění změn Popis Přiřaďte zodpovědnost tak, aby provázanost zůstala nízká Každá třída by si měla vystačit při plnění úkolu sama a minimalizovat nutnost využití ostatních tříd Zvyšuje možnost znovupoužití Počet vazeb mezi třídami by měl být minimální Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 33

GRASP Vysoká soudržnost Podporuje nízkou provázanost Popis Přiřaďte zodpovědnost tak, aby soudržnost zůstala vysoká Každá třída by měl být zaměřena na jediný úkol Zvyšuje srozumitelnost systému Zodpovědnost třídy je snadno pochopitelná Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 34

GRASP Jedna třída umí všechno Nízká provázanost Malá soudržnost Každá třída pouze jednu metodu Vysoká provázanost Velká soudržnost Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 35

GRASP Další informace Larman, Craig (2005). Applying UML and Patterns An Introduction to Object-Oriented Analysis and Design and Iterative Development http://en.wikipedia.org/wiki/grasp_(objectoriented_design) Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 36

GRASP Dotazy? Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 37

Děkuji za pozornost. Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 6 - Návrh - návrhové třídy a vzory 38