OCL a integritní omezení

Rozměr: px
Začít zobrazení ze stránky:

Download "OCL a integritní omezení"

Transkript

1 OCL a integritní omezení Karel Richta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze 2011 Softwarové inženýrství I., BI-SI1 04/2011, Přednáška 9 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 1/78

2 Proč OCL? Pomocí diagramů UML nelze popsat všechno proto je součástí specifikace UML i definice OCL. Co je zvláštní na následujícím obrázku? (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 2/78

3 Jiný příklad: Předměty a zkoušky class Studium bez omez... Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal +z 1 +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 3/78

4 Předměty a zkoušky o něco lépe class Příklad Studium s omezením Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal +z 1 Student/studentka si mohou zapsat zkouškový termín pouze z předmětů, které právě studují. {C1} +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 4/78

5 OCL -ObjectConstraintLanguage pochází z metodiky Syntropy(IBM) je čistě funkcionální (bez vedlejších efektů) není to programovací jazyk -je určen pro vyjádření invariantů - je to specifikační jazyk je silně typovaný (každý výraz OCL má definován typ) má předdefinovanou sadu typů (primitivní typy Integer, Boolean, String, Real, UnlimitedIntegera z nichutvořené kolekce) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 5/78

6 Jak vypadá zápis v OCL? context <jméno> [inv pre post]: <výraz> klíčové slovo contextslouží pro definici kontextu pro výraz v OCL, např. zápis: context Osoba inv : <výraz> označuje, že uvedený výraz se vztahuje k instancikontextu (třídy) Osoba (na kterou se lze odkazovat klíčovým slovem self) klíčová slova inv, pre, postzastupují stereotypy <<invariant>>, <<precondition>>, <<postcondition>> (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 6/78

7 Příklad zápisu v OCL context Osoba inv: self.příjem > tento zápis vyjadřuje, že pro každou instance třídy Osoba, musí mít atribut příjem hodnotu větší než context x:osoba inv: x.příjem > označuje totéž context x:osoba inv OK : x.příjem > zavádí pro toto integritní omezení jméno (OK) Příklad popisu metody: context Osoba::pridej(kolik:Integer):Integer pre : kolik > nemá smysl přidávat méně post : result = + kolik (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 7/78

8 Příklad: Předměty a zkoušky class Studium v OCL Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal {C1} «Invariant» {-- Student/studentka si mohou zapsat zkouškový termín pouze z předmětů, které právě studují. inv C1 : is-element(self.si_zapsal.z, studuje)} +z 1 +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 8/78

9 EA vygeneruje tabulky, ale integritní omezení ne. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 9/78

10 Příklad: Hypotéky Uvažme příklad světa hypoték - ukázka z katalogu požadavků: 1. Každá hypotéka bude vždy pro jednu osobu. 2. Osoba si může vzít několik hypoték. 3. Každou nemovitost vlastní právě jedna osoba. 4. Osoba může vlastnit libovolný počet nemovitostí. 5. Každá hypotéka musí být zajištěna nejméně jednou nemovitostí. 6. Nemovitost může být použita k zajištění více hypoték. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 10/78

11 Příklad modelu evidence hypoték class Hypotéky bez omezení Nemovitost - označení: string - hodnota: penize +je_zajištěna 1..* +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje +má_půjčenu Hypotéka - od: datum - do: datum - celková_částka: peníze = ,- - měsíční_splátka: peníze (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 11/78

12 Příklad: Hypotékyo něco lépe class Hypotéky s omezením Nemovitost - označení: string - hodnota: penize +je_zajištěna 1..* +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 «Invariant» {Hypotéka může být zajištěna pouze takovými nemovitostmi, které daná osoba vlastní.} {C1} +zajišťuje +má_půjčenu Hypotéka - od: datum - do: datum - celková_částka: peníze = ,- - měsíční_splátka: peníze (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 12/78

13 class DDL CASE (EA) vygeneruje tabulky, ale integritní omezení ne. Nemov itost «column» označení: VARCHAR2(50) hodnota: penize *pfk nemovitostid: Integer FK je_majetkem: Integer «PK» + PK_Nemovitost(Integer) «FK» + skládá se z(integer) + FK_je_majetkem(Integer) +PK_Nemovitost (nemovitostid = nemovitostid) «FK» +Nemovitost JoinHypotékaToNemov itost «column» *FK nemovitostid: Integer *FK hypotékaid: Integer +FK_je_majetkem +Hypotéka 1..* (je_majetkem = osobaid) «FK» (hypotékaid = hypotékaid) «FK» +PK_Osoba +PK_Hypotéka 1 Osoba «column» jméno: VARCHAR2(50) příjmení: VARCHAR2(50) příjem: peníze *PK osobaid: Integer «PK» + PK_Osoba(Integer) +PK_Osoba 1 (pro = osobaid) «FK» +FK_pro Hypotéka «column» od: datum do: datum celková_částka: peníze = ,- měsíční_splátka: peníze *PK hypotékaid: Integer FK pro: Integer «FK» + Nemovitost(Integer) + Hypotéka(Integer) «PK» + PK_Hypotéka(Integer) «FK» + FK_pro(Integer) 13 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 13/78

14 CASE vygenerujesql, aleio ne. DROP TABLE Hypotéka CASCADE CONSTRAINTS;... CREATE TABLE Hypotéka ( od DATE, do DATE, celková_částka NUMBER(12,2) DEFAULT ,-, měsíční_splátka NUMBER(12,2), hypotékaid Integer NOT NULL, pro Integer );... ALTER TABLE Hypotéka ADD CONSTRAINT PK_Hypotéka PRIMARY KEY (hypotékaid);... ALTER TABLE Hypotéka ADD CONSTRAINT FK_pro FOREIGN KEY (pro) REFERENCES Osoba (osobaid);... (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 14/78

15 Ale mohl by něco vygenerovat V popisu integritního omezení v jazyce OCL je dost informace pro vygenerování integritního omezení např. pro SQL: ALTER TABLE JoinHypotékaToNemovitost ADD CONSTRAINT C2 CHECK ( /* -- Hypotéky osoby mohou být zajištěny pouze nemovitostmi, které tato osoba vlastní. */ ); context inv: self.je_zajištěna.je_majetkem = self.pro nemovitostid.je_majetkem = hypotékaid.pro (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 15/78

16 Kdy použít OCL? pro vyjádření integritních omezení v datovém modelu (diagramu tříd) pro vyjádření typových omezení při definici stereotypů pro popis vstupních a výstupních podmínek operací, nebo pro popis operací (metod) ve tvaru: operace(x1,, xn) = výraz kde výrazmůže obsahovat x1,, xn jako navigační jazyk (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 16/78

17 self.příjem Výrazy v OCL hodnota vlastnosti objektu o kterém v daném kontextu mluvíme v tomtopřípadě se jedná o atribut a hodnotu typu peníze x.vlastní hodnota vlastnosti objektu o kterém v daném kontextu mluvíme v tomtopřípadě se jedná o vztah a hodnotu typu kolekce nemovitostí (případně prázdná) class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako + žádost(peníze, Nemovitost) : boolean +pro 1 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 17/78

18 Příklad použití OCL I. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Kolik osob může vlastnit auto? Vlastníkem auta může být osoba, které je alespoň 18 let? context Car inv: self.owner.age >= 18 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 18/78

19 Příklad použití OCLII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.age >= 18 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 19/78

20 Příklad modelu evidence hypoték class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 20/78

21 OCL lze použít pro navigaci class Příklad modelu pro hypotéky skládá se z 1 Chceme označit Nemov itost měsíční splátky +vlastní - označení: string hypoték osoby Q: - hodnota: penize +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba Q.má_půjčenu.měsíční_splátka +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. (je to množina údajů výsledek je typu Bag(peníze) ) + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 21/78

22 Integritní omezení v OCL class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +pro 1 Hypotéka musí být zajištěna nemovitostí, jejíž cena není menší než celková zapůjčená částka (pokud je zajištěna +má_půjčenu jednou nemovitostí). context Hypotéka inv : self.celková_částka <= self.je_zajištěna.hodnota (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 22/78

23 Typy v OCL předefinované primitivní typy (s obvyklými operacemi): Integer Boolean String Real UnlimitedInteger konstruktory: Collection, Set, Bag, Sequence s operátory: collect, select, reject, forall, exists, iterate, include, count, union, intersect, isempty, notempty, isunique,... (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 23/78

24 Primitivní typy Typ Boolean Integer Operace and, or, xor, not, implies, if-then-else *, +, -, /, abs(), div(integer), mod(integer), min(integer), max(integer) Real String *, +, -, /, abs(), floor(), round(), max(real), min(real) size(), concat(string), toupper(), tolower(), substring(integer, Integer) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 24/78

25 Operace s primitivními typy size() : Integer (počet znaků v řetězci self) substring(lower : Integer, upper : Integer) : String (podřetězec self začínající na pozici lower a končící na pozici upper. Pozice se počítají od 1 do self.size(). pre: 1 <= lower pre: lower <= upper pre: upper <= self.size() concat(s : String) : String (spojení řetězců self a s) post: result.size() = self.size() + s.size() post: result.substring(1, self.size() ) = self post: result.substring(self.size() + 1, result.size() ) = s (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 25/78

26 Výčtové typy context Person inv: gender = Gender::male (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 26/78

27 Příklad použití OCLIII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ow nership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Všechna vozidla osob jsou černá: context Person inv: self.fleet -> forall(v v.colour = Colour::black) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 27/78

28 Výrazy v OCL (pokr.) x.vlastní -> isempty() test, zda hodnota typu kolekce nemovitostí je prázdná x.vlastní.hodnota kolekce hodnot typu peníze představující cenu nemovitostí, které objekt x vlastní x.vlastní.hodnota -> sum() cena nemovitostí, které objekt x vlastní, spočítaná jako součet hodnot jednotlivých nemovitostí class Pøíklad modelu pro hypotéky skládá se z 1 Nemovitost - oznaèení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - pøíjmení: string - pøíjem: peníze Osoba +je_zajištìna 1..* + žádost(peníze, Nemovitost) : boolean Nemovitost se zde chápe jako (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 28/78 jednotka vlatnictví. Pokud nějakou +pro 1

29 Vytváření kolekcí Set {2, 4, 1, 5, 7, 13, 11, 17 } OrderedSet {1, 2, 3, 5, 7, 11, 13, 17 } Sequence {1, 2, 3, 5, 7, 11, 13, 17 } Bag {1, 2, 3, 2, 1} (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 29/78

30 Pro všechny objekty jsou definovány metody: Typ Operace oclistypeof(t : OclType) : Boolean ocliskindof(t : OclType) : Boolean oclinstate(s : OclState) : Boolean oclisnew() : Boolean oclastype(t : OclType) : instance of OclType (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 30/78

31 Kolekce Typ Collection Operace ->size(), ->includes(object), ->includesall(collection), ->excludes(object), ->excludesall(collection), ->count(object), ->isempty(), ->notempty(), ->sum(), ->exists(expression), ->forall(expression), ->isunique(expression), ->sortedby(expression), ->iterate(expression), ->any(expression), ->one(expression) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 31/78

32 Příklad použití OCLIV. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Nikdo nemůže vlastnit více než 3 vozidla context Person inv: self.fleet -> size <= 3 nebo změníme násobnost v diagramu to je ale statické, nemůže se to dynamicky měnit. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 32/78

33 Kolekce typu Set Typ Collection::Set Operace ->union(set), ->union(bag), ->intersection(set), ->intersection(bag), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asbag() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 33/78

34 Kolekce typu Bag Typ Collection::Bag Operace ->union(bag), ->union(set), ->intersection(bag), ->intersection(set), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asset() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 34/78

35 Kolekce typu Sequence Typ Collection::Sequence Operace ->union(bag), ->union(set), ->intersection(bag), ->intersection(set), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asset() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 35/78

36 Přesnější vyjádření IO class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* + žádost(peníze, Nemovitost) : boolean Hypotéka musí být zajištěna +pro 1 Nemovitost se zde chápe jako nemovitostmi, jejichž součet jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí cen není menší než celková se na samostatné části dle podílu vlastníků. zapůjčená částka. +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Hypotéka inv : self. celková_částka <= self. je_zajištěna.hodnota -> sum() Y36SIN - Jazyk OCL (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 36/78 36

37 A obráceně class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +má_půjčenu +pro 1 Nemovitost může zajišťovat pouze tolik hypoték, jejichž součet celkových částek není větší, než cena nemovitosti. context Nemovitost inv : self.zajišťuje.celková_částka -> sum() <= self.hodnota Richta: NSWI041 - Jazyk OCL 37 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 37/78

38 object Hypotéky bez hranic Důležitá podmínka class Příklad modelu pro hypotéky H-123 :Hypotéka Karlštejn :Nemovitost pro Josef :Osoba zajištěna? vlastní Bouda :Nemovitost skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +má_půjčenu +pro 1 Hypotéky osoby mohou být zajištěny pouze nemovitostmi, které tato osoba vlastní. context Hypotéka inv : self.je_zajištěna.je_majetkem = self.pro Richta: NSWI041 - Jazyk OCL 38 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 38/78

39 Vlastnosti operací v OCL class Příklad modelu pro hypotéky skládá se z 1 Nemov itost +vlastní - označení: string Osoby - mohou hodnota: penize žádat o hypotéky, pokud suma +je_zajištěna 1..* měsíčních splátek osoby nepřesáhne 30% příjmu osoby. +je_majetkem Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Osoba::žádost(částka:peníze,zajištění:Nemovitost) pre : (self.má_půjčenu.měsíční_splátka -> sum()) + částka/počet_splátek <= self.příjem * 0.3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 39/78 39

40 Typická vlastnost hierarchie class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. + žádost(peníze, Nemovitost) : boolean +pro 1 Nemovitost se nemůže skládat sama ze sebe. +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Nemovitost inv : not (self.skládá_se_z iselement(self)) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 40/78

41 Příklad použití OCLV. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Nikdo nevlastní víc než 3 černá vozidla: context Person inv: self.fleet -> select(v v.colour = Colour::black)-> size <= 3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 41/78

42 Příklad použití OCLVI. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.fleet -> iterate(v ; acc:integer=0 if (v.colour = Colour::black) then acc+1 else acc endif) <= 3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 42/78

43 Příklad použití OCLVII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.fleet -> age < 18 implies forall(v not v.ocliskindof(car)) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 43/78

44 Příklad použití OCLVIII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Existuje červené auto: context Car inv: Car.allInstances -> exists(c c.colour = Colour::red) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 44/78

45 Příklad použití OCLIX. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Metoda setage třídy Person pro nezáporný argument newage nastaví atribut age: context Person::setAge(newAge:Integer):Integer pre: newage >= 0 post: self.age = newage (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 45/78

46 Příklad použití OCLX. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Vyvolání metody birthday třídy Person zvýší věk osoby o 1: context Person::birthday() post: self.age = + 1 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 46/78

47 Příklad použití OCLXI. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Výsledek volání metodygetnametřídy Person je hodnota atributu name: context Person::getName():String post: result = self.name nebo, protože getname je {query}: context Person inv: self.getname = self.name (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 47/78

48 Úrovně modelů (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 48/78

49 Příklad využití OCL (metamodeluml) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 49/78

50 Příklad podmínky v OCL (metamodel) class Model elementu «metaclass» Element - mustbeowned: boolean +owner 0..1 Element, který musí mít vlastníka, musí mít vlastníka. +ownedelement context Element inv: self.mustbeowned() implies owner->notempty() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 50/78

51 Příklad: definice odvozené vlastnosti Elementy, které vlastní daný element (je to odvozené sjednocení). /ownedelement: Element[*] (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 51/78

52 Příklad: definice odvozené vlastnosti Element, který vlastní tento element (owner) je to odvozené sjednocení (union). /owner: Element [0..1] (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 52/78

53 Příklad: popis operace v OCL Operace allownedelements() vrací všechny elementy, které přímo či nepřímo vlastní daný element context Element::allOwnedElements(): Set(Element) post: result = ownedelement -> union( ownedelement->collect(e e.allownedelements() ) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 53/78

54 Příklad: podmínky v OCL Element nemůže přímo, nebo nepřímo vlastnit sám sebe context Element inv: not self.allownedelements() -> includes(self) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 54/78

55 The End (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 55/78

Jazyk OCL a modelem řízený vývoj 1

Jazyk OCL a modelem řízený vývoj 1 Jazyk OCL a modelem řízený vývoj 1 Karel Richta Katedra softwarového inženýrství, MFF UK Malostranské nám.25, 118 00, Praha 1 Tel: 221917316 e-mail: richta@ksi.mff.cuni.cz www: http://www.ksi.mff.cuni.cz/~richta/

Více

Rekonstrukce OCL z SQL *

Rekonstrukce OCL z SQL * Rekonstrukce OCL z SQL * Karel RICHTA 1 1 Katedra softwarového inženýrství, MFF UK Praha Malostranské nám. 25, 118 00 Praha karel.richta@mff.cuni.cz Abstrakt. Jednou z často citovaných zkratek poslední

Více

UML. Unified Modeling Language. Součásti UML

UML. Unified Modeling Language. Součásti UML UML Unified Modeling Language 1995 počátek 1997 verze 1.0 leden dnes verze 2.0 (vývoj stále nedokončen) Standardní notace OMG podpora velkých firem (Microsoft, IBM, Oracle, HP ) popisuje struktury popisuje

Více

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D. http://siret.cz/hoksza

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D. http://siret.cz/hoksza Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hksza, Ph.D. http://siret.cz/hksza Osnva Seznámení s SQL Server Management Studiem (SSMS) Základní architektura

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

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

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id)) Vzorové příklady SQL Tabulka: Kniha CREATE TABLE kniha název VARCHAR(50, PRIMARY KEY (id Tabulka: Autoři CREATE TABLE autoři jméno VARCHAR(10, příjmení VARCHAR(20, titul VARCHAR(7, prostřední VARCHAR(10,

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

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

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

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

6. SQL složitější dotazy, QBE 6. SQL složitější dotazy, QBE Příklady : Veškeré příklady budou dotazy nad databází KONTAKTY nebo KNIHOVNA nebo FIRMA Databáze KONTAKTY OSOBA (Id_osoba, Příjmení, Jméno, Narození, Město, Ulice, PSČ) EMAIL

Více

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

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

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

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

Semestrální práce z DAS2 a WWW

Semestrální práce z DAS2 a WWW Univerzita Pardubice Fakulta elektrotechniky a informatiky Semestrální práce z DAS2 a WWW Databázová část Matěj Trakal 8.12.2009 Kapitola 1: Obsah KAPITOLA 1: OBSAH 2 KAPITOLA 2: ZÁKLADNÍ CHARAKTERISTIKA

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk

Více

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL) SQL strukturovaný dotazovací jazyk Structured Query Language (SQL) SQL - historie 1974-75 - IBM - 1.prototyp - SEQUEL od 1979 - do praxe - ORACLE (1979) IBM - SQL/DS (1981), DB/2 (1983) postupně přijímán

Více

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

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

Dolování v objektových datech. Ivana Rudolfová

Dolování v objektových datech. Ivana Rudolfová Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený

Více

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální

Více

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

Návrh - návrhové třídy a vzory 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é

Více

Skripty základy VB, vestavěné objekty, příklady

Skripty základy VB, vestavěné objekty, příklady Skripty základy VB, vestavěné objekty, příklady Tento dokument popisuje základy VB, vestavěné objekty, jejich metody a vlastnosti. Na závěr jsou uvedeny typické příklady použití. Stav ke dni: 9.12.2006

Více

DBS Konceptuální modelování

DBS Konceptuální modelování DBS Konceptuální modelování Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze Michal.Valenta@fit.cvut.cz c Michal Valenta, 2010 BIVŠ DBS I, ZS 2010/11 https://users.fit.cvut.cz/

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,... Jazyk SQL 1 Přehled SQL 1) jazyk pro definici dat (DDL), 2) jazyk pro manipulaci dat (DML), 3) jazyk pro definice pohledů 4) jazyk pro definice IO 5) jazyk pro přiřazení přístupových práv (DCL) 6) řízení

Více

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo

Více

- sloupcové integritní omezení

- sloupcové integritní omezení CREATE TABLE - CREATE TABLE = definice tabulek a jejich IO - ALTER TABLE = změna definice schématu - aktualizace - INSERT INTO = vkládání - UPDATE = modifikace - DELETE = mazání CREATE TABLE Základní konstrukce

Více

Tabulka fotbalové ligy

Tabulka fotbalové ligy Semestrální práce na X36DB2 Michal Rezler Jan Zmátlík Tabulka fotbalové ligy a tabulka střelců 8. prosinec 2011 Obsah 1 Zadání....................................................... 3 1.1 Stručný popis.............................................

Více

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

Měřící systém se vzdáleným přístupem. Databáze

Měřící systém se vzdáleným přístupem. Databáze ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA MĚŘENÍ Měřící systém se vzdáleným přístupem Databáze Jiří Javůrek 2003/2005 0. Obsah 0. Obsah...1 1. Požadavky...2 2. Struktura databáze...2

Více

UML - Unified Modeling Language

UML - Unified Modeling Language UML - Unified Modeling Language Martin Molhanec Katedra elektrotechnologie, ČVUT - Fakulta elektrotechnická, Technická 2, 166 21 PRAHA 6 e-mail: molhanec@fel.cvut.cz Abstrakt UML Unified Modeling Language

Více

Kapitola 6: Omezení integrity. Omezení domény

Kapitola 6: Omezení integrity. Omezení domény - 6.1 - Omezení domény Referenční integrita Aserce Spouštěče (Triggers) Funkční závislosti Kapitola 6: Omezení integrity Omezení domény Omezení integrity zabraňují poškození databáze; zajišťují, že autorizované

Více

Souhrn Apendixu A doporučení VHDL

Souhrn Apendixu A doporučení VHDL Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza Databáze SQL SELECT David Hoksza http://siret.cz/hoksza Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL Structured Query Language (SQL) SQL napodobuje jednoduché anglické

Více

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

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B PŘIJÍMACÍ TEST Z INFORMATIKY A MATEMATIKY NAVAZUJÍCÍ MAGISTERSKÉ STUDIUM V OBORU APLIKOVANÁ INFORMATIKA FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITY HRADEC KRÁLOVÉ ČÁST A Registrační číslo Hodnocení -

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Jazyk SQL slajdy k přednášce NDBI001

Jazyk SQL slajdy k přednášce NDBI001 Jazyk SQL slajdy k přednášce NDBI001 Jaroslav Pokorný MFF UK, Praha pokorny@ksi.mff.cuni.cz Dotazovací jazyky 1 Přehled SQL92 1) jazyk pro definici dat, 2) interaktivní jazyk pro manipulaci dat, 3) jazyk

Více

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

Databázové modelování. Analýza Návrh konceptuálního schématu Databázové modelování Analýza Návrh konceptuálního schématu 1 Vytváření IS Analýza Návrh Implementace Testování Předání SW Jednotlivé fáze mezi sebou iterují 2 Proč modelovat/analyzovat? Standardizované

Více

Dotazovací jazyk SQL I

Dotazovací jazyk SQL I Dotazovací jazyk SQL I Historický vývoj I IBM - 70. léta - prototyp relačního DBMS - System R 80. léta - základ 2 komerčních DBMS: SQL/DS, DB2 SQL jako standard Standardizační instituce ANSI: American

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek 5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené

Více

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz Databáze čajových sáčků Martina Málková Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky Databázové systémy 2 9. června 2007 krovacek@students.zcu.cz 1 1 Datová analýza V původním

Více

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

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

Databázové systémy I

Databázové systémy I Databázové systémy I Přednáška č. 8 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz Skupinové a souhrnné dotazy opakování Obsah Pohledy syntaxe použití význam Vnořené

Více

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Explicitní aplikace a vyhodnocování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 6 V. Vychodil (KI, UP Olomouc) Explicitní aplikace a vyhodnocování Přednáška

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName 8 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah MS SQL Server 2005, Jazyk Transact-SQL, syntaxe, proměnné, struktury,

Více

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years SQL v14 4D Developer konference Obsah části SQL Porovnání 4D a SQL Nové příkazy SQL Upravené příkazy SQL Optimalizace SQL SQL v14 porovnání Definice dat - struktury Manipulace s daty Definice dat Vytvoření

Více

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports , Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 9. dubna 2014 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

1. Relační databázový model

1. Relační databázový model 1. Relační databázový model Poprvé představen 1969 (Dr. Edgar F. Codd) IBM Založeno na Teorii množin Predikátové logice prvního řádu Umožňuje vysoký stupeň nezávislosti dat základ pro zvládnutí sémantiky

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

Kód v databázi. RNDr. Ondřej Zýka

Kód v databázi. RNDr. Ondřej Zýka Kód v databázi RNDr. Ondřej Zýka 1 Obsah Jazyk Skripty Funkce Procedury Triggery Správa chyb Java, CLR, apod.. Dobré a špatné praktiky 2 PL/SQL Jazyk Oracle Inspirovaný jazykem ADA Objektový Samostatné

Více

Principy UML. Clear View Training 2005 v2.2 1

Principy UML. Clear View Training 2005 v2.2 1 Principy UML Clear View Training 2005 v2.2 1 1.2 Co je touml? Unified Modelling Language (UML) je univerzálníjazyk pro vizuální modelování systémů Podporuje všechny životní cykly Mohou jej implementovat

Více

Konceptuální modelování. Pavel Tyl 21. 3. 2013

Konceptuální modelování. Pavel Tyl 21. 3. 2013 Konceptuální modelování Pavel Tyl 21. 3. 2013 Vytváření IS Vytváření IS Analýza Návrh Implementace Testování Předání Jednotlivé fáze mezi sebou iterují Proč modelovat a analyzovat? Standardizované pracovní

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového

Více

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování. Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou MySQL Typy tabulek Storage Engines MyISAM defaultní, neumí transakce, umí fulltext InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) MEMORY (HEAP) v paměti; neumí transakce ARCHIVE velké množství

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

UML: Unified Modeling Language

UML: Unified Modeling Language UML 1 UML: Unified Modeling Language Systém kombinace softwaru, hardwaru, dat a uživatelů, která umožňuje řešení konkrétního problému Vývoj systémů vytváření systémů pro klienta Vývoj probíhá na základě

Více

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

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Úvod do databázových systémů 2012/2013 IS MHD

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Úvod do databázových systémů 2012/2013 IS MHD Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava Úvod do databázových systémů 2012/2013 IS MHD Jiří Znoj, (zno0011) Ostrava, 29. listopadu 2012 I. Obsah I. Obsah...

Více

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

2. Modelovací jazyk UML 2.1 Struktura UML 2.1.1 Diagram tříd 2.1.1.1 Asociace 2.1.2 OCL. 3. Smalltalk 3.1 Jazyk 3.1.1 Pojmenování

2. Modelovací jazyk UML 2.1 Struktura UML 2.1.1 Diagram tříd 2.1.1.1 Asociace 2.1.2 OCL. 3. Smalltalk 3.1 Jazyk 3.1.1 Pojmenování 1. Teoretické základy modelování na počítačích 1.1 Lambda-kalkul 1.1.1 Formální zápis, beta-redukce, alfa-konverze 1.1.2 Lambda-výraz jako data 1.1.3 Příklad alfa-konverze 1.1.4 Eta-redukce 1.2 Základy

Více

11.5.2012. 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

11.5.2012. 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 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

Více

Kapitola 4: SQL. Základní struktura

Kapitola 4: SQL. Základní struktura - 4.1 - Kapitola 4: SQL Základní struktura Množinové operace Souhrnné funkce Nulové hodnoty Vnořené poddotazy (Nested sub-queries) Odvozené relace Pohledy Modifikace databáze Spojené relace Jazyk definice

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence

Více

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013 Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013 1. Nástroje programu MS Word a) vysvětlete pojmy šablona, styl (druhy stylů) význam a užití, b) vysvětlete pojem oddíl (druhy oddílů),

Více

Analýza problémové domény

Analýza problémové domény Analýza problémové domény 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é

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Popis souboru pro generování reportů *.report

Popis souboru pro generování reportů *.report Popis souboru pro generování reportů *.report [Main]... 1 Create... 1 Description... 1 Protect... 1 Nazev... 2 PopisX... 2 PopisY... 2 GRAFDATAOD... 2 GRAFDATADo... 2 GRAFOSAX... 2 TYP_GRAFU... 2 GRAF_VEDLEJSI_OSA...

Více

Webové služby. služby OctopusPro

Webové služby. služby OctopusPro OctopusPro s.r.o. Webové služby pro služby OctopusPro 1 CENOVÉ MAPY Verze: 1.0 Datum vytvoření: 21.10.2015 Datum poslední aktualizace: 21.10.2015 Copyright OctopusPro s.r.o, Praha, 2012-2015 S t r á n

Více

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

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 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 Co je to UML Evoluce UML Diagram komponent Diagram odbavení Diagram tříd Aktivity diagram Stavový diagram Sekvenční diagram Diagram

Více

Databázové systémy. Tomáš Skopal. - úvod do relačního modelu. - převod konceptuálního schématu do relačního

Databázové systémy. Tomáš Skopal. - úvod do relačního modelu. - převod konceptuálního schématu do relačního Databázové systémy - úvod do relačního modelu Tomáš Skopal - převod konceptuálního schématu do relačního Osnova přednášky relační model převod ER diagramu do relačního modelu tvorba univerzálního relačního

Více

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec) MySQL přes MySQL Command Line Client Zobrazení existujících databází mysql> SHOW DATABASES; Database test Vytvoření databáze mysql> CREATE DATABASE krouzek; Query OK, 1 row affected (0.00 sec) mysql> SHOW

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OPVK-VT-III/2-ŠR-303 Druh didaktického materiálu DUM Autor RNDr. Václava Šrůtková Jazyk čeština

Více

Modelem řízený vývoj. SWI 1 Jan Kryštof

Modelem řízený vývoj. SWI 1 Jan Kryštof Modelem řízený vývoj SWI 1 Jan Kryštof Související zkratky MDA ~ Architecture formální vymezení MDD ~ Development aktivita SW vývojářů MDG, MDE,... UML ~ Unified modeling language OMG ~ Object Management

Více

Structured Query Language SQL

Structured Query Language SQL Structured Query Language SQL Spouště DML Řízení transakcí Vložené a dynamické SQL SQL DDL Spouště Integritní omezení Bezpečnost Přístupová práva SQL SEQUEL-XRM, IBM v roce 1974 Neprocedurální jazyk říkáme

Více

4IT218 Databáze. 4IT218 Databáze

4IT218 Databáze. 4IT218 Databáze 4IT218 Databáze Pátá přednáška Dušan Chlapek (katedra informačních technologií, VŠE Praha) 4IT218 Databáze Pátá přednáška SQL - DDL - dokončení SQL - DCL Vlastnosti relačních databázových systémů. Princip

Více

7. Dynamické datové struktury

7. Dynamické datové struktury 7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.

Více

Materiál ke cvičením - SQL

Materiál ke cvičením - SQL Materiál ke cvičením - 1. Stručná syntaxe vybraných příkazů jazyka (detailní syntaxe příkazů je uvedena on-line manuálech přístupných z prostředí sítě VŠE) SELECT výběr a zobrazení hodnot z databáze: SELECT

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

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

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines

Více

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

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více