OOP08

Слични документи
Inženjering informacionih sistema

Microsoft PowerPoint - GR_MbIS_12_IDEF

3.Kontrlne (upravlja~ke) strukture u Javi

Principi softverskog inženjerstva O predmetu

P2.1 Formalne gramatike

Microsoft PowerPoint - C-4-1

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

P11.3 Analiza zivotnog veka, Graf smetnji

Introduction to Programming

Vjezbe

Projektovanje informacionih sistema i baze podataka

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Tutoring System for Distance Learning of Java Programming Language

Upitni jezik SQL

PowerPoint Presentation

Dijagrami sekvenci

Slide 1

Пројектовање Информационих система

I колоквијум из Основа рачунарске технике I СИ- 2017/2018 ( ) Р е ш е њ е Задатак 1 Тачка А Потребно је прво пронаћи вредности функција f(x

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Teorija skupova - blog.sake.ba

Logičke izjave i logičke funkcije

Grananje u programu predavač: Nadežda Jakšić

Model podataka

PowerPoint Presentation

LAB PRAKTIKUM OR1 _ETR_

Pojačavači

Tutoring System for Distance Learning of Java Programming Language

Aksiomatska semantika kroz primere Seminarski rad u okviru kursa Verifikacija softvera Matematički fakultet Nikola Katić, 1094/2017

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft Word - SIORT1_2019_K1_resenje.docx

Classroom Expectations

Microsoft Word - Zajednička komunikacija o provedbi presude „IP Translator” v1.1

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om -

Испит из Основа рачунарске технике OO /2018 ( ) Р е ш е њ е Задатак 5 Асинхрони RS флип флопреализован помоћу НИЛИ кола дат је на след

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос

Tutoring System for Distance Learning of Java Programming Language

Auto Salon 2 Korisničke upute za rad s programom Auto Salon AUTOSALON - DOKUMENTI Podaci o vozilu se upisuju do daljnjega kao i do sad na rad s vozilo

PROMENLJIVE, TIPOVI PROMENLJIVIH

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Орт колоквијум

P9.1 Dodela resursa, Bojenje grafa

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

P1.2 Projektovanje asemblera

NIZOVI

Microsoft PowerPoint - podatkovni promet za objavu.pptx

PASCAL UVOD 2 II razred gimnazije

Uvod u statistiku

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

УДРУЖЕЊЕ ПЕЈЗАЖНИХ АРХИТЕКАТА Србије и Црне Горе

Microsoft Word - 11 Pokazivaci

Studijski primer - Dijagrami toka podataka Softverski inženjering 1

Baze podataka

KDP

Microsoft PowerPoint - Topic04-Serbian.ppt

Uvod u PHP

Microsoft PowerPoint Projektiranje informacijskih sustava [Compatibility Mode]

Рачунарска интелигенција

P1.3 Projektovanje makroasemblera

Рационални Бројеви Скуп рационалних бројева 1. Из скупа { 3 4, 2, 4, 11, 0, , 1 5, 12 3 } издвој подскуп: а) природних бројева; б) целих броје

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www.

Microsoft Word - CAD sistemi

Funkcije predavač: Nadežda Jakšić

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

PowerPoint Presentation

Funkcije predavač: Nadežda Jakšić

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

Орт колоквијум

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Microsoft Word - IP_Tables_programski_alat.doc

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

Испит из Основа рачунарске технике OO /2018 ( ) Р е ш е њ е Задатак 5 Асинхрони RS флип флопреализован помоћу НИ кола дат је на следећ

Прва економска школа Београд РЕПУБЛИЧКО ТАКМИЧЕЊЕ ИЗ СТАТИСТИКЕ март године ОПШТЕ ИНФОРМАЦИЈЕ И УПУТСТВО ЗА РАД Укупан број такмичарских

Primenjeno programiranje - vezbe GUI i baze podataka

Pravilnik o poreskoj prijavi o obračunatim doprinosima za obavezno socijalno osiguranje za osnivače, odnosno članove privrednog društva (Sl.Glasnik 14

Slide 1

Tutoring System for Distance Learning of Java Programming Language

DISKRETNA MATEMATIKA

Slide 1

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Računarski praktikum I - Vježbe 11 - Funktori

01 SUBP

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

PDO

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

1

ТЕОРИЈА УЗОРАКА 2

Slide 1

Objektno orijentirano modeliranje

Транскрипт:

Object Constraint Language Naš život se sastoji uglavnom iz snova, iz nesvesnog,, i on se mora dovesti u vezu s akcijom. Oni moraju biti spojeni u jedno. Anais Nin 9.2.202 2/ / 45 Istorija OCL 996. OA&D Domain task force iz OMG objavio je zahtev za ponudama za objektno orijentisanu analizu i dizajn 997. IBM i ObjecTime Limited su zajedno kreirali ponudu u koju je uključen i OCL 997. Jos Warmer iz IBM-a je razvio OCL izdvajajući i ga iz Syntropy metoda čiji su autori Steve Cook i John Daniels,, a partneri koji su kreirali UML uključili su OCL u UML. OCL formalizuje semantiku UML i omogućava formalizaciju ograničenja u strukturi modela 9.2.202 3/ / 45 Specifikacije OMG OMG-ove specifikacije uključuju: MDA (Model Driven Architecture) UML (Unified Modeling Language) CORBA (Common Object Request Broker Architecture) CW (Common Warehouse Metamodel) specifične industijske standarde za brojna vertikalna tržišta 9.2.202 4/ / 45 Object Constraint Language OCL je dodatak UML-u u pomoću u kojeg se pišu izrazi u obliku predikata koji specificiraju poslovna pravila na nedvosmislen način Ograničen je na određeni broj konstrukcija,, ali može e biti iskorišćen i za opšta poslovna pravila Formalni, deklarativni jezik koji opisuje poslovna pravila na visokom nivou apstrakcije Dopunjuje dijagrame UML-a Manje detaljan od proceduralnog koda Kompletno dostupan na adresi: www.omg.org/cgi-bin/doc?formal/2006 bin/doc?formal/2006-05-00 9.2.202 5/ / 45 Karakteristike OCL Predstavlja deo UML standarda Jezik sa formalnim specifikacijama i preciznom semantikom Sintaksu je vrlo jednostavno čitati Pojavio se jer UML nije bio dovoljan za detaljnije opise ograničenja 9.2.202 6/ / 45 Osobine OCL ekspresivnost: : izrazi napisani u OCL-u u nemaju uticaj na model i stanje sistema, njime se može opisati kako će e se stanje menjati, ali ne u samom objektu modelovanje: : OCL je jezik za modelovanje, ne za programiranje, a svaki izraz je atomski i on ne menja stanje objekta formalizam: : svi elementi u izrazu imaju jasno značenje i uključeni su u UML specifikacije jednostavnost: : ovi izrazi su jednostavni za razumevanje 9.2.202 7/ / 45 Oblasti primene OCL OCL može e biti korišten u različite ite svrhe: za detaljnija specificiranja klasa i tipova modela klasa za specificiranja stereotipova za opise prethodnih i naknadnih uslova za operacije i metode za opis zaštite kao navigacioni jezik za specificiranje ograničenja u operacijama 9.2.202 8/ / 45 Osnovi primene OCL OCL se koristi za formulisanja osobina objekata, kao i prethodnih i naknadnih uslova operacija ovo čini UML dijagrame klasa preciznijim OCL izrazi koriste rečnik UML dijagrama klasa OCL atributi služe za navigaciju kroz UML dijagrame klasa reč označava koji se element opisuje OCL može opisivati skupove elemenata i operacija, selekcije, iteracije, upite i generalne postupke ( forall ) 9.2.202 9/ / 45

Ključne reči i u OCL and attr def else endif endpackage if implies in inv let not oper or package post pre then xor 9.2.202 0/ / 45 Oblik OCL izraza NazivTipa stereotip: OCL-izraz kontekst je obavezna službena reč na početku stereotip se navodi jednom od službenih reči: inv oznaka <<invariant invariant>> >>,, mora biti tačna za sve instance klase pre označava ava <<precondition precondition>> post označava ava <<postcondition postcondition>> službena reč self označava ava instancu tekućeg eg objekta, a result povratnu vrednost Umesto self može e biti korištena i druga reč 9.2.202 / / 45 Primer OCL izraza Invarijanta je ograničenje koje mora biti tačno u celom toku životnog ciklusa objekta Vlasnik vozila mora imati najmanje 8 godina : inv: self.. >= 8 9.2.202 2/ / 45 Primer zamene reči i self Kompanija mora imati više e od 50 zaposlenih c: Kompanija inv: c.brzaposl > 50 Kompanija brzaposl 9.2.202 3/ / 45 Vlasnik auta mora imati bar 8 godina Jedna osoba ne može imati više od 3 vozila Jedno lice može imati najviše crn auto Kako ih predstaviti u UML-u? Auto Bicikl 9.2.202 4/ / 45 Vlasnik auta mora imati bar 8 godina Auto inv: self.. >= 8 Auto Bicikl 9.2.202 5/ / 45 Jedna osoba ne može imati više od 3 vozila inv: self.vozni-park -> size <= 3 vozni-park Jedno lice može imati najviše crno vozilo inv: self.vozni-park -> select (v v. = #crna)->size <= Šta znači i sledeće e ograničenje? inv: self.vozni-park -> iterate(v; n:integer=0 if (v.=#crna) then n + else n endif) <=3 Jedna osoba ne može imati više od 3 vozila crne boje Auto Bicikl 9.2.202 6/ / 45 Auto Bicikl 9.2.202 7/ / 45 9.2.202 8/ / 45

Šta znači i sledeće e ograničenje? Auto inv: Auto.allInstances()->exists(c c.=#bela) Postoji beli auto Primeri prethodnih i naknadnih uslova Kontekst ograničenja se odnosi na operacije, tj. metode klasa Radnici u evidenciji moraju biti zaposleni, a obračunate plate veće e od 5000 Radnik::plata(zaposlen: Boolean): Real pre: : self.zaposlen = true post: self.plata > 5000 Primer dodele inicijalne vrednosti Broj radnika u odelenju postaviti inicijalno na nulu Odelenje::BrojRadnika init 0 9.2.202 9/ / 45 9.2.202 20/ / 45 9.2.202 2/ / 45 Primer izvedenih vrednosti PDV iznosi 20% naručene vrednosti Narudzba::Pdv derive: : Pdv = self.vrednost * 0.2 Primer kreiranja radnih atributa PDV iznosi 20% naručene vrednosti Narudzba::Pdv def: : Pdv: Real = self.vrednost * 0.2 Primeri operacija po tipovima podataka Integer: *, +, -, /, abs() Real: *, +, -, /, floor() Boolean: and, or, xor, not, implies, if-then-else String: concat(), size(), substring() 9.2.202 22/ / 45 9.2.202 23/ / 45 9.2.202 24/ / 45 Primer kreiranja operacija Sastaviti puno ime iz titule, imena i prezimena : ::PunoIme derive: titula.concat ( ( ).concat(ime).concat ( ( ).concat(prezime) Primer: nabrojivi tip podataka Kod ovog tipa podataka navodi se skup literala koji čini vrednost podatka inv: pol = Gender::male Primer: ograničenje vrednosti atributa mora imati više od nula godina inv: self. > 0 9.2.202 25/ / 45 9.2.202 26/ / 45 9.2.202 27/ / 45

Primer: korišćenje operacija U pozivu operacije ne moraju biti navedeni izlazni parametri iz operacije Primer: operacija zarada ima ulazni parametar datum i izlazni bonus.zarada(datum).bonus = 200.zarada(datum).result = 000 ::zarada(datum: Date): Integer post: result = osnova * 000 9.2.202 28/ / 45 Opis asocijacije u OCL-u u se asocijacija opisuje navođenjem polaznog objekta i krajnjeg odredišta korišćenjem asocijacije sa dijagrama klasa, navodi se odredišni element, tj. jedan ili više atributa ili objekata ovi elementi su opisani u ograničenju izraza 9.2.202 29/ / 45 Primer operacije sa asocijacijom Kompanija inv: self.menadžer.nezaposlen = false inv: self.zaposleni->notempty() u prvoj invarijanti rezultat je U drugoj invarijanti rezultat je skup nezaposlen: Boolean menadžer zaposleni Kompanija 9.2.202 30/ / 45 Opis realizacije upita Navodi se izraz iza službene reči body: Primer: pronađi sadašnju suprugu date osobe : ::NadjiAktivPartnera(): pre: self.ubraku = true body: self.brak->select(m m.kraj=false).partner 9.2.202 3/ / 45 Operacija select select je operacija nad kolekcijom oblik izraza: kolekcija->select(predikat) primer: pronađi radnike u kompaniji starije od 50 godina Kompanija inv: self.radnik->select(>50)->notempty() u ovom primeru pretražuje se klasa i ako je predikat tačan an taj se objekat stavlja u skup radnik 9.2.202 32/ / 45 Opšti oblik select kolekcija->select(v: tip predikat-sa-v) promenljiva v je u ovom slučaju iterator prethodni primer: Kompanija inv: self.radnik->select(p: p. > 50)->notEmpty() ovde se eksplicitno vidi da skup radnik čine objekti iz klase koji imaju više od 50 godina 9.2.202 33/ / 45 Operacija reject sintaksa je ista kao i za select, ali služi i za izdvajanje elemenata iz kolekcije kolekcija->reject(v: tip predikat-sa-v) izdvajaju se elementi za koje predikat nije tačan an primer: u skup radnika kompanije izdvojiti samo žene Kompanija inv: self.radnik->reject(p: p.pol=male)->isempty() Operacija collect ovom operacijom se izdvajaju objekti iz prethodno formiranog skupa (sa select ili reject), ali sa novim predikatom rezultat operacije se naziva bag u kojem se jedan element može e pojaviti više e puta collection->collect(v : tip predikat-sa-v) primer: sakupite sve datume rodjendana u kompaniji self.rodjendan->collect(lice : radnik lice.datumr) Tipovi kolekcija CollectionType: osnovni tip kolekcije, default ako nije definisan jedan od podtipova: SetType: matematički skup, bez ponavljanja elemenata OrderedSetType: uređeni skup,, tj. niz u kojem svaki element ima svoje mesto BagType: kolekcija u kojoj su dozvoljena ponavljanja elemenata SequenceType: uređena kolekcija u kojoj su dozvoljena ponavljanja elemenata 9.2.202 34/ / 45 9.2.202 35/ / 45 9.2.202 36/ / 45

Primer dodele tipa kolekcije sakupite sve datume rodjendana u kompaniji i dodelite redne brojeve upisa svakog u kolekciju self.rodjendan: SequenceType->collect(lice : radnik lice.datumr) Formiranje skupa bag može e sadržati ati isti element više e puta od njega se može e napraviti skup operacijom asset u skupu svaki se element pojavljuje samo jednom self.radnik->collect(datumr)->asset() skraćeni zapis collect: self.radnik.datumr Operacija forall koristi se kada ograničenje opisano predikatom treba da važi i za kompletnu klasu rezultat operacije je logička veličina: ina: tačno ako predikat važi i za sve elemente kolekcije collection->forall( v : tip predikat-sa-v ) Primer: svi zaposleni su mlađi od 65 godina Kompanija inv: self.radnik->forall(p : p. <= 65) 9.2.202 37/ / 45 9.2.202 38/ / 45 9.2.202 39/ / 45 Primer složenog forall svi zaposleni imaju raličita ita imena i prezimena I način: Kompanija inv: self.radnik->forall ( e, e2 : e <> e2 implies e.imeiprezime <> e2.imeiprezime) II način: Company inv: self.radnik->forall (e self.radnik->forall (e2 e <> e2 implies e.imeiprezime <> e2.imeiprezime)) 9.2.202 40/ / 45 Operacija exists koristi se da se utvrdi da li u kolekciji postoji bar jedan element koji ispunjava osobinu opisanu predikatom collection->exists (v : tip predikatsa-v ) primer: u kompaniji postoji osoba sa imenom Mile Company inv: self.radnik->exists(p: p.ime = Mile' ) 9.2.202 4/ / 45 Operacija iterate uopštena operacija kojom se mogu opisati sve prethodne sadrži i 2 promenljive, iterator i akumulator iterator uzima vrednosti iz kolekcije počev evši i sa datim izrazom u akumulatoru se nalaze sve vrednosti iteratora collection->iterate(el : tip; ac : tip = izraz424242 predikat-sa-el-i-ac) 9.2.202 42/ / 45 Kontekstne definicije u okviru paketa Konteksti koji važe e u granicama paketa navode se u obliku: package NazivPaketa::NazivDelaPaketa...... endpackage Komentari navode se u jednom redu, iza 2 uzastopne crtice (minusa) Sve što sledi u jednom redu iza ovih crtica smatra se komentarom primer: -- tekst u ovom redu je komentar 9.2.202 43/ / 45 9.2.202 44/ / 45 9.2.202 45/ / 45