Analýza a modelování dat. Přednáška 4

Podobné dokumenty
2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy

7.5 Diagram tříd pokročilé techniky

Diagramy tříd - základy

6 Objektově-orientovaný vývoj programového vybavení

7.5 Diagram tříd pokročilé techniky

1. Dědičnost a polymorfismus

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Objekty, třídy, vazby 2006 UOMO 30

Základy objektové orientace I. Únor 2010

Principy UML. Clear View Training 2005 v2.2 1

Objektově orientovaný přístup

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

PB161 Programování v jazyce C++ Přednáška 7

UML. Unified Modeling Language. Součásti UML

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

PB161 Programování v jazyce C++ Přednáška 7

DBS Konceptuální modelování

Třída. Atributy. Operace

Vyřešené teoretické otázky do OOP ( )

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvod do databázových systémů 6. cvičení

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

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Tvorba informačních systémů

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

OOT Objektově orientované technologie

Konceptuální modelování. Pavel Tyl

Metody popisu systému, základy UML

Analýza a modelování dat. Přednáška 5

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Objektově orientované databáze. Miroslav Beneš

Objektově orientované programování. Úvod

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Úvod do principů objektově orientovaného programování

Architektury Informačních systémů. Jaroslav Žáček

Úvod do databázových systémů

2. Konceptuální model dat, E-R konceptuální model

Nepravidlové a hybridní znalostní systémy

Dědění, polymorfismus

Databázové systémy. Ing. Radek Holý

Unifikovaný modelovací jazyk UML

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Analýza dat a modelování. Přednáška 2

Programování II. Polymorfismus

Modelování procesů s využitím MS Visio.

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language)

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

Databázové modelování. Analýza Návrh konceptuálního schématu

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

IB111 Programování a algoritmizace. Programovací jazyky

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Communist Party of Nepal (Unified Marxist-Leninist) Unified Modeling Language University of Massachusetts Lowell User-mode Linux.

Návrh softwaru. RNDr. Michal Žemlička, Ph.D. Zimní semestr 2013/2014

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

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Databázové systémy. Přednáška 1

Úvod do softwarového inženýrství IUS 2009/2010 p.1/30

Sada 1 - Základy programování

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

Diagram tříd (class diagram)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Jiří Mašek BIVŠ V Pra r ha

Úvod do softwarového inženýrství IUS 2009/2010 p.1/42

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

VÝUKA OBJEKTOVÉHO MODELOVÁNÍ POMOCÍ SMALLTALKU

Program a životní cyklus programu

3 druhy UML diagramů

Jazyk UML - přehled. diagram hierarchie procesů. IS firmy. podpora řízení. evidence zaměstnanců. pokladny. výroba. diagram procesních vláken

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Objektově orientované technologie. Daniela Szturcová

Strukturované metody Jan Smolík

Softwarové komponenty a Internet

Architektury Informačních systémů. Jaroslav Žáček

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Databázové systémy trocha teorie

Common Object Request Broker Architecture

Programování II. Modularita 2017/18

NÁSTROJE PRO DATOVÉ MODELOVÁNÍ

Tvorba informačních systémů

Usage of modular scissors in the implementation of FEM

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Objektové programování

TÉMATICKÝ OKRUH Softwarové inženýrství

Vývoj IS - strukturované paradigma II

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

POROVNÁNÍ RELAČNÍHO A OBJEKTOVÉHO DATOVÉHO MODELU V KONSTRUKCI DATABÁZOVÝCH SYSTÉMŮ

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

TÉMATICKÝ OKRUH Softwarové inženýrství

PB161 Základy OOP. Tomáš Brukner

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

TÉMATICKÝ OKRUH Softwarové inženýrství

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Transkript:

Analýza a modelování dat Přednáška 4

Objektově orientovaný přístup

Strukturovaný přístup starší přístup analýzy modelování dat typický zástupce: E-R model prvky reálného světa zobrazujeme do předem připravených struktur entita, vztah modelování procesů typický zástupce: data flow diagram (DFD) strukturované programování

počátky OOP: Historie OOP 60. léta: programovací jazyk Simula67 rysy OOP rozvoj OOP: 70. léta: výzkumné středisko PARC projekt Dynabook návrh osobního grafického počítače základ pro Apple Macintosh, MS Windows, X- Window

Historie OOP jednotný software (OS) a programovací jazyk: SmallTalk považována za první čistý skutečně objektový jazyk spojoval rysy neprocedurálního (funkcionálního) jazyka Lisp a jazyka SIMULA67

Objektově orientovaný programovací styl Jedna z definic: Objektově orientovaný programovací styl lze označit jako obecný postup analýzy, návrhu a implementace programu, založený na přímém modelování (programovém popisu) objektů z reálného světa aplikace (včetně jejich vazeb a interakce) ve světě počítače s využitím prostředků pro abstrakci a hierarchizaci popisu.

Čisté OOP a smíšený přístup čisté OOP programovací jazyky pouze objektové rysy, neexistence globálních proměnných SmallTalk, Java smíšený přístup klasické jazyky (většina - C, Pascal) rozšířené o rysy OOP (C++, C#, Borland Delphi Pascal s objekty) je možné zapsat program i v klasickém strukturovaném stylu, překladače jej přeloží, mixovat styly

Čisté OOP a smíšený přístup Proč vznikl smíšený přístup? v 80. letech nebyl dostatečně výkonné počítače a překladače pro plnou podporu všech rysů OOP snaha o zpětnou kompatibilitu

OMG Object Management Group www.omg.org sdružení zabývající se standardy objektového modelování UML OCL MDA (Model Driven Architecture)

Objekty Základní datový prvek objekt modeluje nějakou část reálného světa (člověk, zvíře, zařízení), i abstraktní (stav počasí, ) sdružuje (zapouzdřuje) data (tzv. atributy) a funkcionalitu (operace nad daty metody) objekt je zapouzdřením atributů a metod objekty jsou propojené vazbami a vzájemně na sebe působí

Zprávy, metody zpráva zasílaný požadavek, který objekt přijímá např. požadavek na zjištění jména ( vybírání hodnot atributů), zápis jména ( zapisování hodnot do atributů) spouštění operací nad objekty v praxi volání metod metoda může mít parametry protokol objektu seznam všech zpráv, které může objekt přijímat

Polymorfismus mnohotvarost, vícetvarost stejná zpráva může vyvolat různé operace, např. podle typu objektu z pohledu toho, kdo posílá zprávu, je stejná v C++ (Javě) je polymorfismus realizován mechanismem: přetěžování metod metoda se rozlišuje počtem a typem parametrů dynamicky vázanými metodami (virtuálními) rozhodnutí, která metoda se vyvolá, se děje až za běhu programu podle typu objektu, nad kterým je metoda vyvolána

Objektově orientovaná analýza zjednodušeně: spočívá v tvorbě modelových objektů co nejlépe zobrazující prvky reálného světa a hledání vazeb mezi nimi objekt: dvojice (D,F): D - atributy, F - metody snažíme se identifikovat atributy, popíšeme je svým jménem a typem metody popisujeme jménem, chování popisujeme v prvé fázi zpravidla slovně, později třeba konečným automatem

měli bychom pamatovat i na výjimečné a chybové stavy výstupem objektově orientované analýzy je systémový popis pomocí ustálených diagramů nebo již definice objektů zapsaná v programovacím jazyce jedna z prvních knih o OOA: Peter Coad, Edward Yourdon: Object -Oriented Analysis, Yourdon Press, 1991 notace: zavedena právě Codadem: Codadova notace viz další snímek

z Codadovy notace vychází dnes převážně používané UML diagram tříd Objekt 1 atributy metody 1 n Objekt 2 atributy metody více např. Richta, K. - Sochor, J.: Softwarové inženýrství I., skripta ČVUT, 1996

Kolekce objektů v čistém OO přístupu se rozeznává: množina SET objekty jsou neuspořádané, každý objekt se vyskytuje pouze 1x (v jedné instanci) batoh BAG objekty jsou neuspořádané, stejné objekty se mohou vyskytovat v kopiích seznam LIST batoh, kde objekty jsou uspořádané podle určité hodnoty: lze určit první, druhý,, poslední prvek Poznámka: tabulka je také druh kolekce, ale v OOP se nepoužívá

Třída Třída je popis objektu Objekt je instancí třídy

Popis třídy v UML konkrétní třída Název třídy Seznam datových položek objektů této třídy (atributů) Seznam metody objektů této třídy Osoba Jméno Příjmení Adresa Datum_narozeni Vek()

Popis třídy v UML v UML se ještě specifikuje: - - soukromý (privat) atribut (metoda) + - veřejný (public) atribut (metoda) # - chráněný (protected) atribut (metoda) ~ - atribut viditelný v rámci balíku u metod návratový typ: vek(): integer a seznam parametrů

Objekt instance třídy v UML Josef Novák: Osoba Jméno = Josef Příjmení = Novák Adresa = Praha Datum_narozeni = 8.1.1980 Vek()

Kolekce objektů V UML neexistuje standardní symbol byl zakomponován v návrhu verze 0.8, ale později byl odstraněn UML 2.0 dovoluje definici vlastních symbolů lze dodefinovat V OOA se používá symbol: Název kolekce: typ kolekce

Kolekce objektů ZAMĚSTNANCI : SET Osoba Jméno Příjmení Adresa Datum_narozeni Vek()

Dědění definice jedné třídy (subclass - podtřída) využívá definici druhé třídy (superclass nadtřída) podtřída dědí od nadtřídy všechny atributy a metody v OOP lze metody přetížit, tj. předefinovat v podtřídě lze dodefinovat atributy i metody podtřída má vše, co má nadtřída, a může mít něco navíc tam, kde se užívají instance nadtřídy, lze použít i instance podtřídy

Dědění Dospělá Osoba Jméno Příjmení Adresa Datum_narozeni Vek() nadtřída (superclass) Dítě Matka Otec Adresa() poddtřída (subclass)

Skládání objektů datová položka objektu (atribut) může být také objekt otec Dospělá Osoba Jméno Příjmení Adresa Datum_narozeni Vek() Dítě matka Adresa()

Skládání objektů ohodnocená orientovaná hrana (pojmenovaná šipka) znamená instance třídy Dítě mají dvě položky otec, matka, které obsahují instance třídy Dospělá Osoba v UML se využívá pro skládání (agregaci) šipka s prázdným kosočtvercem na konci instance mohou existovat samostatně, nezávisle, mohou být součástí více seskupení

Skládání objektů V UML existuje ještě silnější typ agregace: kompozice Instance nemohou existovat samostantě (složené objekty bez komponent a komponenty bez složených objektů, každá komponenta je součástí pouze jednoho složeného objektu kompozice a agregace často determinují dopředu i implementační detail realizaci komponenty jako objekt nebo ukazatel na objekt

Skládání objektů LIDÉ: SET otec Dospělá Osoba Jméno Příjmení Adresa Datum_narozeni Vek() Dítě matka Adresa()

Skládání objektů LIDÉ: SET otec Dospělá Osoba Jméno Příjmení Adresa Datum_narozeni Vek() Dítě matka Adresa()

vyjadřuje vazby mezi objekty (vztahy) kardinalita: Asociace dospělá osoba má 0 nebo více dětí dítě má jednoho (otec neznámý) nebo dva rodiče šipka u textu určuje směr čtení, nikoliv fakt, kterým směrem asociace platí Dospělá Osoba 1..2 má 0..* Dítě

Asociace x skládání asociace může být někdy nahrazena skládáním tři možnosti realizace 1. dítě obsahuje objekt rodiče Dospělá Osoba otec matka Dítě vhodné, když častěji pracujeme s dětmi a občas se podíváme na rodiče

Asociace x skládání 2. rodiče obsahují kolekci dětí Dospělá Osoba děti { Set } Dítě vhodné, když častěji pracujeme s rodiči a díváme se na všechny jejich děti

Asociace x skládání 3. oba způsoby softwarově náročnější (konzistence) Dospělá Osoba matka otec Dítě děti { Set }

Operace nad kolekcemi operace se zapisují pomocí výrazů tzv. λ - kalkulu výběr (selection) vybere z kolekce podmnožinu na základě podmínky př. výběr osob mladších 20 let z kolekce LIDÉ LIDÉ (λx x vek < 20)

Operace nad kolekcemi sběr (collection) přeměna prvků nějaké kolekce na jinou kolekci výběr všech otců dětí Inst(Dítě) >> (λx x otec) pro všechny instance z kolekce Dítě vytvoř kolekci jejich otců

Operace nad kolekcemi projekce (projection) operace je převzata z relačních databázových systémů (relační algebry) zvláštní případ sběru: transformuje objekty zmenšováním protokolu, tj. vybírá jen některé atributy LIDÉ >> [Příjmení, Datum_narození]

OCL (Object Constraint Language) jazyk pro popis omezení (podmínek) pro objektově orientovaný návrh jako doplněk UML 2.0 specifikován OMG poslední verze 2.4 z roku 2014 věty jazyka OCL mají podobu logických formulí odvozených z λ - kalkulu lze zapsat podmínky pro prvky kolekcí, operaci selekce (výběru), log. výrazy,...

OCL - příklady (z knihy Merunka: Objektové modelování) žádné dvě instance od třídy osoby nesmějí mít stejné jméno Osoba.allInstances -> forall(p1,p2 p1 <> p2 implies p1.jmeno <> p2.jmeno)

OCL - příklady všichni zaměstnanci musí být starší 18 let Zamestnanci.select(p p.vek<=18) -> is Empty()

ONF (objektové normální formy) odvozeny od normálních forem relací 1ONF 2ONF 3ONF Pokročilé techniky návrhu Objektové normální formy

1ONF Třída je v 1ONF, jestliže její objekty neobsahují skupinu opakujících se atributů Převedení do 1ONF vyčlenění atributů do nové třídy zavést vazbu na kolekci této nové třídy

2ONF Třída je ve 2ONF, jestliže její objekty neobsahují atribut nebo skupinu atributů, které by byly sdílené s nějakým jiným objektem Převedení do 2ONF vyčlenění sdílených atributů do nové třídy zavést vazby na kolekci této nové třídy

3ONF Třída je ve 3ONF, jestliže její objekty neobsahují atribut nebo skupinu atributů, které mají samostatný význam nezávislý na objektu Převedení do 3ONF vyčlenění atributů do nové třídy zavést vazbu na kolekci této nové třídy

popisují modelové situace a dávají návod, jakým způsobem je řešit struktura návrhového vzoru název popis problému, který návrhový vzor řeší řešení Návrhové vzory zpravidla diagram a slovní popis řešení důsledky použití vzoru

strukturální vzor angl. adaptor, též wrapper (obálka) problém: Příklady: Adaptér na stávající objekt potřebujeme nasadit jiné rozhraní, které bude měnit protokol objektu (a též např. transformovat data) Adaptér 1 Adaptovaná

Příklady: Adaptér Adaptér jméno příjmení ulice č_domu psč město osoba 1 Osoba jméno příjmení adresa extrahuje z osoby části adresy

strukturální vzor angl. Composite problém: potřebujeme implementovat hierarchické stromové struktury bez předem známé hloubky využití kusovník Příklady: Skladba

Příklady: Skladba Celek List Skladba

Příklady: Stav behaviorální vzor (vyjadřuje chování) angl. State problém: potřebujeme zachytit chování - různé stavy objektu, každý stav má jiné atributy řešení: objekt má datovou položku (atribut) typu abstraktní stav

Příklady: Stav Objekt 1 Abstraktní stav Stav A Stav B

Příklady: Stav Osoba jméno příjmení adresa role 1 Role Student ročník obor Zaměstnanec plat zařazení

Příklady: Stav udržujeme informace o osobách ve škole při změně role (student dostuduje a stane se zaměstnancem) není nutné rušit objekt nesoucí informace o osobě, změní se pouze hodnota položky role