S0-02 Típusmodellek (Programozás elmélet)

Hasonló dokumentumok
Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations

Programfejlesztési Modellek

Diszkrét matematika 2. estis képzés

OOP. Alapelvek Elek Tibor

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Objektumelvű programozás

Programozási módszertan

Programok értelmezése

Általános algebra. 1. Algebrai struktúra, izomorfizmus. 3. Kongruencia, faktoralgebra március Homomorfizmus, homomorfiatétel

Interfészek. PPT 2007/2008 tavasz.

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Objektumorientált paradigma és a programfejlesztés

Diszkrét matematika 2. estis képzés

Már megismert fogalmak áttekintése

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

OOP #14 (referencia-elv)

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

1. előadás: Halmazelmélet, számfogalom, teljes

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Kiterjesztések sek szemantikája

Objektum orientált programozás Bevezetés

Objektumorientált paradigma és programfejlesztés Bevezető

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Logika nyelvészeknek, 12. óra A típuselmélet alapjai. Lehetőség van a kvantorfogalom mellett a funktorfogalom általánosítására is.

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Objektum orientált kiterjesztés A+ programozási nyelvhez

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika gyakorlat 1. ZH október 10. α csoport

Lineáris leképezések (előadásvázlat, szeptember 28.) Maróti Miklós, Kátai-Urbán Kamilla

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Diszkrét matematika 1. estis képzés

Bevezetés a Python programozási nyelvbe

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Ismeretalapú modellezés XI. Leíró logikák

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Diszkrét matematika 2. estis képzés

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

SZÁMÍTÁSTUDOMÁNY ALAPJAI

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Struktúra nélküli adatszerkezetek

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Programozási nyelvek Java

FUNKCIONÁLIS PROGRAMOZÁS

Programozási nyelvek Java

Bevezetés az informatikába

Programozás módszertan p.1/46

Interfészek. Programozás II. előadás. Szénási Sándor.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

OOP: Java 8.Gy: Abstract osztályok, interfészek

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk:

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

modell, amiben csak bináris sok-egy kapcsolatok (link, memberowner,

Felügyelt önálló tanulás - Analízis III.

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Direkt limesz, inverz limesz, végtelen Galois-bővítések

Kvantumszimmetriák. Böhm Gabriella. Szeged. Wigner Fizikai Kutatóközpont, Budapest november 16.

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Komputeralgebra Rendszerek

Leképezések. Leképezések tulajdonságai. Számosságok.

Kalkulus I. gyakorlat Fizika BSc I/1.

Kutatói pályára felkészítı akadémiai ismeretek modul

1. Mellékosztály, Lagrange tétele

Komplex záróvizsga témakörök Gazdaságinformatikus szak Pénzintézeti informatikus szakirány 2018

Nagy Gábor compalg.inf.elte.hu/ nagy

Programozás III. - NGB_IN001_3

Intergrált Intenzív Matematika Érettségi

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

Diszkrét matematika 2.C szakirány

S01-7 Komponens alapú szoftverfejlesztés 1

Algoritmizálás, adatmodellezés tanítása 6. előadás

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Programozási nyelvek Java

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Gy ur uk aprilis 11.

Programozás C és C++ -ban

Komplex számok. Wettl Ferenc előadása alapján Wettl Ferenc előadása alapján Komplex számok / 18

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Diszkrét matematika 2.

5. A kiterjesztési elv, nyelvi változók

OOP és UML Áttekintés

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében?

Programozási nyelvek 6. előadás

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

2. Ítéletkalkulus szintaxisa

Átírás:

S0-02 Típusmodellek (Programozás elmélet) Tartalom 1. Absztrakt adattípus 2. Adattípus specifikációja 3. Adattípus osztály 4. Paraméterátadás 5. Reprezentációs függvény 6. Öröklődés és polimorfizmus 7. Liskov féle szubsztitúciós elv 8. További források 1. Absztrakt adattípus Típus fogalma általában Mi a típus? Biteken tárolt információk jelentése, illetve hogy hogyan kell értelmezni és módosítani őket Típus fogalma formálisan Egy páros, ahol (A, F ) A: adattípust felépítő objektumok halmaza F: objektumokon értelmezett műveletek halmaza Absztrakt adattípus (ADT) Szolgáltatásoknak egy halmaza, ahol a szolgáltatásokat egy megvalósító adattípus nyújtja ADT specifikációja Szolgáltatások leírása, a specifikáció nem írja elő a megvalósítás módját ADT megvalósítása ilyen szolgáltatásokat nyújtó adattípus ADT korai és modernebb megközelítése 1

Korai megközelítésben: azonos STRUKTÚRÁJÚ adatok (C struct-ok) Modern megközelítésben: azonos SZOLGÁLTATÁST nyújtó adatok (C++/Java/C# osztályok) Szignatúra Programozási nyelvekben ez a deklarációnak felel meg (Gondolj a függvény típusszignatúrájára Haskell-ben) szignatúra egy = (S, OP ) S = {S 0, S 1,..., S n }: szortok neveinek halmaza (fajták, alaptípusok) OP = {f 0, f 1,..., f m }: művelet neveinek halmaza Az f i művelet: egy f i : s i1 s i2 s ik s i0 parciális leképezés (művelet : argumentum szortok target szortok) Argumentum szortok (miből): s i1 s i2 s ik, k 0 Target szort (mibe): s i0 Lényeg: a műveletek szortokból szortokba képeznek le Szignatúra algebra Ez az ami jelentést rendel a szignatúrához Programozási nyelvekben ez a definíciónak (implementációnak) felelne meg Az ADT lehetséges implementációját modellezi le = (S, OP ) szignatúrához tartozó algebra: A = (S A, OP A ) S A = {A s0, A s1, A sn }: szortok, amikhez jelentések is tartoznak (hordozó halmaz) OP A = {f 0, f 1,..., f m }: műveletek, amikhez jelentések is tartoznak (függvények) A f i művelet: egy f i : A si1 A si2 A sik A si0 parciális leképezés k = 0 esetén f i az A si0 szort konstansa Szortok neveihez hordozó halmazt rendel Műveletek neveihez függvényeket rendel 2. Adattípus specifikácija Szignatúra és szignatúra algebra: lehet, hogy van két különböző módon viselkedő szignatúra algebra! Hogyan adjunk szemantikát ezekhez? Specifikációval. Specifikáció: szerződés a felhasználó és a megvalósító között Legyen a lehető legáltalánosabb, hogy ne korlátozza a megvalósítást! 2

Absztrakt adattípus specifikációja Specifikáció: SP EC = (, E) (alternatív jelölés: SP EC = (S, OP, E)) : szignatúra E: műveletek szemantikáját meghatározó specifikáció Absztrakt adattípus specifikációk fajtái 1. Állapot elvű specifikáció (Hoare-féle módszer) Műveletek elő- és utófeltételeinek halmaza {ϕ}p {ψ} ϕ: előfeltétel P: program ψ: utófeltétel 2. Procedurális specifikáció Műveletek kiszámítási szabályainak halmaza Függvény jelentésének, kiszámítási szabályának pszeudokód-szerű definiálása 3. Axiomatikus specifikáció (algebrai specifikáció) Eljárás jelentését meghatározó logikai állítások Függvények jelentését axiómákban írjuk le Axiomákat rendszerint predikátumokkal adjuk meg Szignatúra algebrák közötti homomorfizmus (morfizmus: leképezés) Alaphalmazok (S) és műveletek (OP) Legyen két szignatúra algebra: A = (S A, OP A ) és B = (S B, OP B ) h : A B egy függvénycsalád 1. Minden S-beli s szortra h s : A s B s azaz A szortját B megfelelő szortjára képezi le 2. f Ai és (A si1, A si2,..., A sik ) esetén: f Bi megfelelf Ai -nek úgy, hogy h si0 (f Ai (A si1, A si2,..., A sik )) = f Bi (h si1 (A si1 ),..., (h sik (A sik )) előző laikusan: A-n való homomorfizmus végrehajtása (formula bal oldala) után B az A leképezéseit fogja tartalmazni (formula jobb oldala) 3

Szignatúra algebra homomorfizmusok speciális esetei 1. Átnevezés szignatúra szortjainak és műveleteinek átnevezése 2. Bővítés szignatúra bővítése új szortokkal és műveletekkel új szignatúra definíció a korábbi átvételével 3. Új ábrázolás szignatúra átvétele, meglévő szortok helyére más szortokból képzett ábrázolások Szignatúra algebra izomorfizmus 1-1 leképezés A és B között Jelölés: A B (A izomorf B-vel) (szürjektív: minden B-beli elemhez kapcsolódik valaki) (injektív: minden A-beli elem különböző B-beli elemhez kapcsolódik) (bijektív: egyszerre szürjektív és injektív) Ha egy homomorfizmus bijektív = akkor izomorfizmusról beszélünk Az izomorf algebrák azonosak egymással (átnevezést leszámítva) Adattípus szignatúra algebrai megközelítésben Izomorfikus szignatúra algebrák ekvivalencia osztálya: ahol osztály[a] = {B Alg( ) : B A} [A]: ekvivalencia osztály B Alg( ): B az Alg( ) szignatúra algebra része B A: B izomorf A-val Monomorfikus és polimorfikus absztrakt típus Monomorfikus Egyetlen adattípus tudja megvalósítani Minden eleme izomorf Csak egy ekvivalencia osztály van benne Polimorfikus Több adattípus tudja megvalósítani Absztrakt adattípus nem monomorfikus Több ekvivalencia osztály is van benne 4

Specifikáció homomorfizmus Szignatúra algebra homomorfizmus kiterjesztése a SP EC = (, E) specifikációban lévő műveleti szemantikát leíró E specifikációban lévő változókra és kifejezésekre Specifikáció változói és kifejezései leképezhetők másik specifikáció változóira és kifejezéseire 3. Adattípus osztály specifikációja Specifikációk Figure 1: Adattípus osztály morfizmus diagramja PAR: formális paraméterek tulajdonságainak specifikációja paraméteres specifikáció esetén a specifikáció részei csak akkor lesznek meghatározva = amikor formális paraméterekkel példányosítjuk a specifikációt (gondolj konstruktorra) EXP: export felület specifikációja EXP = P AR + (S 1, OP 1, E 1 ) rajta értelmezett műveletek szintaxisának és szemantikájának definíciója kitüntetett szortú specifikáció (kitüntetett szort: szort ami az adattípus elemeit azonosítja): EXP = (S EXP, OP EXP, E EXP ) IMP: import felület specifikációja IMP = P AR + (S 2, OP 2, E 2 ) más osztályból átvett szolgáltatások tulajdonságainak leírása BOD: törzsrész specifikációja BOD = IMP + eb(exp ) típusosztály megvalósitása, adatok reprezentálásának definíciója modul rejtett része, szortok, műveletek axiómái kitüntetett szortú specifikáció: BOD = (S BOD, OP BOD, E BOD ) 5

Morfizmusok e: specifikációmorfizmus PAR-ből EXP-re tartalmazást jelent i: specifikációmorfizmus PAR-ból IMP-re tartalmazást és átnevezést jelent ib: specifikációmorfizmus IMP-ből BOD-ra tartalmazást jelent eb: kitüntetett szortú specifikációmorfizmus EXP-ből BOD-ra reprezentációt, objektumok ábrázolásával együtt megvalósuló tartalmazást jelent Az adattípus osztályspecifikációjának részei és szabályai : adattípus osztály interfésze, konstrukciós része, megnyílvánulási aspektus része, megvalósítás része 1. Interfész osztálynév (name) paraméter felület (PAR) export felület (EXP) import felület (IMP) 2. Konstrukciós rész import felület (IMP) törzsrész (BOD) 3. Megnyilvánulási aspektus rész export felület (EXP) import felület (IMP) 4. Megvalósítás törzsrész (BOD) 6

4. Paraméterátadás, annak jelentése és morfizmus diagramja Paraméteres specifikáció Specifikáció egyes részei akkor lesznek meghatározva = ha formális paraméterekkel példányosítjuk a specifikációt Figure 2: Paraméterátadás morfizmus diagramja PAR: paraméter specifikáció, paraméterek tulajdonságai e: specifikáció morfizmus paraméterek specifikációjából export specifikációba EXP: export specifikáció kitüntetett szortú specifikáció Programozási nyelvekben: template-ek (C++) és generikus típusok (Java, C#) 5. Reprezentációs függvény Adva egy adattípus absztrakt és konkrét specifikációja: d a = (A, F, E a ); d c = (C, G, E c ); A = {A 0,..., A n }; C = {C 0,..., C m }; F = {f 0 A 0,..., f i : A j...a k A l,...}; G = {g 0 : C 0,..., g i : C j...c k C l,...}; ahol d a : adattípus absztrakt specifikációja d c : adattípus konkrét specifikációja A: absztrakt szortnevek C: konkrét szortnevek F: absztrakt műveletek G: konkrét műveletek Absztrakt és konkrét objektumok egymáshoz való viszonya: ϕ : C A ϕ = (ϕ 0,..., ϕ n ) 7

ahol ϕ 0 : C 0 A 0 ; ϕ 1 : C 1 A 1 ;...; ϕ n : C n A n ; A C objektumhalmazt az A objektumhalmaz egy reprezentánsának nevezzük az adott ϕ mellett ha minden a A objektumnak létezik legalább egy c C reprezentánsa azaz a = ϕ(c). Ennek jelentősége kettős specifikációnál: eb megmondja hogyan reprezentáljuk IMP-el P AR + EXP -et 6. Típusöröklés Az öröklődéssel létrehozott osztály objektuma Helyettesítheti az eredeti osztály, a szuperosztály (superclass) megfelelő objektumát Öröklődés során azonban a szuperosztály leképezései (publikus metódusai) újradefiniálhatók de csak úgy, hogy azok szintaktikai formája ne változzon meg. Típusöröklődés definíciója: Adva C = (P AR, EXP, IMP, BOD, e, i, eb, ib) osztályspecifikáció Adva C = (P AR, EXP, IMP, BOD, e, i, eb, ib ) osztályspecifikáció 8

Adva f s = (f SP, f SE ) morfizmus: Figure 3: Öröklődés morfizmus diagramja úgy, hogy e f SP = f SE e pt(exp ) = f SE (pt(exp )) Morfizmus során az operációk szintaktikai formája megőrződik 9

7. Liskov féle szubsztitúciós elv Más néven: szemantikai öröklődési követelmény Figure 4: Szemantikai örkölődés T 1 -ből T 2 -be Ha a T 1 típusnak minden o 1 objektumához létezik a T 2 típusnak egy olyan o 2 objektuma, amelyre igaz a következő: minden olyan P programban amely T 1 típusú termként van definiálva, a P program viselkedése nem változik meg, valahányszor az o 1 objektumot o 2 objektumra cseréljük ki, = akkor a T 2 a T 1 típus altípusa! 8. További források Előadás diasor 10