Típusok Halmaz (a világ objektumai közül néhány) Neve van Típushoz tartozási döntés (Real Time Type Information, RTTI) Részei lehetnek (Láthatóság!) Műveletei lehetnek Egyszerű típusok összetett típusok Alaptípusok Véges (korlátos méretű) típusok nem véges típusok Rekurzív típusok
Alaptípusok (skaláris típusok, nincsenek részei) Felsorolástípusok (SILK/SILAN, UML, Pascal, VB) enumeration Boolean {true, false}; enumeration Tristate {true, false, error};
Műveletek: Boolean
Típusok: Egész, Szöveg Eljáráshívás: Változó = Valami.Függvény(Params) Operátorok: i = 1.+(3).*(14) i = (1+3)*14 „alma”.concat(„korte”)
Dátum
AbsztraktKonkrét típusok Konkrét típusok: az adott gép, platform, programnyelv megvalósításától (ill. ábrázolási módjától függnek Integer, Long, Byte Char Number, Real, Double Számábrázolás / megcímezhetőség Byte: 8 bit – a memória byte-címzésű Szó (Word): 8-16-32-64 bit/1-2-4-8 byte Lebegőpontos ábrázolás, mantissza, exponens Fixpontos (Binary Coded Decimal) 1 char (256 féle) = 1 byte Unicode char/Wide char/wchar: ? 2 Byte vagy több?
UML-osztálydiagramok (tudnivalók) Osztályok (típusok, értékek intenzív/intuitív megadású halmaza) Osztályszerkezet: öröklődés: részhalmaz, információs gazdagítás Kapcsolatok: relációk, direktszorzat halmaz egy részhalmaza Megszorítások: osztályok/kapcsolatok egy részhalmaza Paraméteres típus: típusok egy halmaza Csomagok (package)
Gyűjteménytípusok (collections) Öröklődés – alosztály - altípus
Collection
Clark-féle gyűjteményaxiómák A. Dovier-A. Policriti-G Clark-féle gyűjteményaxiómák A.Dovier-A.Policriti-G.Rossi Uni (Verona,Udine,Parma): A uniform axiomatic view of lists, multisets, sets and the relevant unification algorithms - Halmazok (Set) – az elemek sorrendje és többszörös előfordulásuk nem lényeges Csomagok (Multiset, Bag) – az elemek sorrendje nem lényeges, de a többszörös előfordulásuk igen Compact Lists – az elemek sorrendje lényeges, de a folyamatos többszörös előfordulásuk nem Vektorok (Sequence, List) – mind az elemek sorrendje, mind a többszörös előfordulásul lényeges
Listák (vektorok) N: $z"x(xÏz) létezik olyan lista, amelynek egyetlen eleme sincs (az üres lista, nil) Vagyis: (Skolemizálás) "x (xÏnil) W: "yv$w"x(xÎwx=y Ú xÎv), yv-hez létezik olyan w szerkezet (felépíthető olyan lista), hogy x aKKKor a lista eleme, ha vagy megegyezik az y első elemmel, vagy eleme a v maradék listával. Vagyis: Wl: "yvx(xÎ[y|v]x=y Ú xÎv) Lemma1: NW |– "xy (nil ¹ [x|y]) Def: [nil]0 = nil, [nil]1 = [nil], [nil]2 = [[nil]] … stb. Lemma2: NW |– nil ¹ [x|y] NW |– i ¹ j [nil]i ¹ [nil]j
Listák (például) Listaképző operátor: [x|y] Üres lista: [] … nil Egyelemű lista: [alma] … [alma|nil] Többelemű lista [alma|[körte]]… [alma,körte] Többdimenziós lista: [[alma|[körte]]|[[kutya|[macska]]]] … [[alma,körte],[kutya,macska]] x y | | alma nil | alma körte nil | | nil | | alma | | kutya körte nil macska nil
Listák (tovább) NW eldönthetetlen: Gödel szerint az egész aritmetikában felmerülhetnek eldönthetetlen kérdések. Ha megfeleltetjük [nil]i-t i-nek, akkor NW ezen részhalmaza megfelel az egész számoknak, tehát eldönthetetlen. Érdekességképpen, de bizonyítatlanul: [nil, nil] = [nil] nem vezethető le NW-ből [nil, nil] ¹ [nil] nem vezethető le NW-ből
Szabadsági axiómák v. Clark-féle egyenlőségaxiómák F1: "x1…xn y1…yn(f(x1…xn ) = f(y1…yn ) x1 = y1 Ù ... Ù xn = yn) vagyis ugyanazon függvényszimbólummal csak azonos paraméterekből képezhető ugyanazon kifejezés F2: "x1…xm y1…yn(f ¹ g f(x1…xm ) ¹ g(y1…yn )) vagyis különböző függvényszimbólumokból csak különböző kifejezések képezhetők F3: "x (x ¹ t[x]), ahol t[x] az x kifejezés valódi részkifejezése (occur check, ciklusmentes fák, rational trees, eleme reláció ciklusmentessége)
Listák (folytatás) K axióma (N további megszorítása): "xy1…yn(xÏf(y1…yn)) ahol f különbözik a {[ | ]}, a [[ | ]] és a { | } (gyűjteményképző) operátoroktól
Csomagok (Multiset, Bag) Bag operator: {[x|y]} Wm axióma: "yvx(xÎ{[y|v]}x=y Ú xÎv) Egyenlőségi axióma (permutálhatóság): Epm"xyz {[x,y|z]} = {[y,x|z]} F1 axióma nem érvényes a Bag operátorra: F1’: "x1…xn y1…yn(f(x1…xn) = f(y1…yn ) x1 = y1 Ù ... Ù xn = yn) ahol f különbözik a {[ | ]}, a [[ | ]] és a { | } operátoroktól
Kompakt listák Compactlist operátor: [[x|y]] Wc axióma: "yvx(xÎ[[y|v]]x=y Ú xÎv) Egyenlőség (abszorpciós axióma): Eac"xy [[x,x|y]] = [[x|y]] (ugyanazon elem folyamatos előfordulása lényegtelen)
Halmazok (Sets) Halmazoperátor: {x|y} Ws: "yvx(xÎ{y|v}x=y Ú xÎv) (csak formai változtatással) Egyenlőségi axióma (permutálhatóság) (csak formai változtatással): Eps"xyz {x,y|z} = {y,x|z} Egyenlőségi axióma (absorption): Eas"xy {x,x|y} = {x|y}
Összefoglalás Multiset = List + Permutativity Compact List = List + Absorption Set = Compact List + Multiset