Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);

Hasonló előadás


Az előadások a következő témára: "Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);"— Előadás másolata:

1 Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer); string(alphabet);... A paraméteres specifikáció előnye: formális paraméterekkel felírt specifikáció [formal spec.]; általános mechanizmus segítségével aktuális paraméterekkel felírt specifikáció; [érték specifikáció (value spec.)] Mechanizmus: paraméter továbbítás. Egyszerű paraméter passing: "spec" egyszerű adattípus; Iterált paraméter passing: "spec" paraméteres adattípus;

2 Paraméter továbbítás. (parameter passing) Adva: PSPEC paraméter-specifikáció: p SPECSPEC1 SPEC = (S,OP,E); formális paraméterek specifikációja. p: benne foglaltatás; SPEC1 = SPEC  (S1,OP1,E1); Például: p datastring(data) Adva: h: SPEC  SPEC' morfizmus; ahol SPEC' = (S',OP',E') : aktuális paraméterek specifikációja;

3 A paraméter továbbítás diagramja: p SPECSPEC1 h = h1 SPEC'SPEC1' p' SPEC1' : érték specifikáció; h: SPEC  SPEC' :specifikáció morfizmus; p': benne foglaltatás; h1: h1(s); s  S  S1: if s  S1 then s else h(s) fi.  (N:s 1...s n  s)  OP  OP': h1(N:s 1...s n  s) = if N:s 1...s n  s  OP1 then N:h1(s 1 )...h 1 (sn)  h1(s) else h(N):h(s 1 )...h(s n )  h(s) fi. SPEC1'= SPEC'  (S1',OP1',E1'); S1'= S1, OP1'= h1(op1), E1'= h1  (E1),

4 Példa: p data string(data) h = h1 nat string(nat) p'

5 string(data) is a type specification = parameters = data+ exports = type sort: string oprs: empty:  string make: data  string concat: string string  string ladd: data string  string radd: string data  string eqns: d  data, s,s 1,s 2,s 3  string; concat(s,empty) = s concat(empty,s) = s ladd(d,s)= concat(make(d),s) radd(s,d)= concat(s,make(d)) end string;

6 Paramétereket tartalmazó paraméter továbbítás. (Parameterized parameter passing.) Adva PSPEC = (SPEC, SPEC1); SPEC1= SPEC + (S1,OP1,E1); p SPEC SPEC1 PSPEC paraméteres formális specifikáció; p: tartalmazás; Pl.: PELEM = (ELEM, SET);p ELEMSET Adva: PSPEC' = (SPEC', SPEC1'); SPEC1'= SPEC' + (S1',OP1',E1'); Paraméteres aktuális specifikáció. Pl.: PELEM' = (NAT, SET ' );

7 Paraméter átadás morfizmusa: h: SPEC  SPEC1'; Paraméteres paraméter-átadás szintaxisa: p SPECSPEC1 h = h1 SPEC'SPEC1'SPEC2' p' q p, p' : tartalmazás; Paraméteres érték specifikáció: (SPEC', SPEC2'); Jelölés: (SPEC', SPEC2') = PSPEC  h PSPEC' table(data)  h set(data) = (table  h set)(data) = table(set(data)).

8 Példa: Paraméter átadás morfizmusa: h: data  set(data); Paraméteres paraméter-átadás szintaxisa: p PS(data  nat) PS(table a (data)) h = h1 PS(set(nat)) PS(set(nat)  nat)PStable(set(nat)) p' q p, p' : tartalmazás; Paraméteres érték specifikáció: (set(nat), PStable(set(nat))); Jelölés: (SPEC', SPEC2') = PSPEC  h PSPEC' table(data)  h set(nat) = (table  h set)(nat) = table(set(nat)).

9 Modul specifikációkon értelmezett alapvető operációk: Kompozíció. Adva M 1 = (PAR 1, EXP 1, IMP 1, BOD 1, e 1, i 1, eb 1,ib 1 ); M 2 = (PAR 2, EXP 2, IMP 2, BOD 2, e 2, i 2, eb 2,ib 2 ); Felmerülő igény: M 1 import interfészének és M 2 export interfészének az összeillesztésével hozzunk létre egy új M 3 modulspecifikációt. Kompozíció. h: = M 1  M 2 ; h=(h 1,h 2 ); h 1 : IMP 1  EXP 2 ; h 2 : PAR 1  PAR 2 ; M3 = M1  h M2;

10 M 1 = (PAR 1, EXP 1, IMP 1, BOD 1, e 1, i 1, eb 1,ib 1 ); M 2 = (PAR 2, EXP 2, IMP 2, BOD 2, e 2, i 2, eb 2,ib 2 ); M3 = M1  h M2; Eredmény: M 3 = (PAR 3, EXP 3, IMP 3, BOD 3, e 3, i 3, eb 3,ib 3 ); PAR 3 = PAR 1 ; EXP 3 = EXP 1 ; IMP 3 = IMP 2 ; e 3 = e 1 ;

11 e 1 PAR 1 EXP 1 i 1 = eb 1 ib 1 IMP 1 BOD 1 e 2 PAR 2 EXP 2 i 2 = eb 2 ib 2 IMP 2 BOD 2 BOD 3 h2h2 h1h1 b1b1

12 Megvalósítás: reprezentáció (ábrázolás) + implementáció. Reprezentáció:  : C  A;

13 Interfész megvalósításai. e PAREXP i = eb IMPBOD ib Interfész: ( PAR, EXP, IMP, e, i ) body rész jelölése az osztály morfizmus diagramjában. body = oprs: rep : C  A eqns: c  C; f 0 : g 0 f c (c): g c (c) A jelölés jelentése: f 0 = rep(g 0 ); (f 0 =  (g 0 )); f c (c): rep(g c (c)); f c (c):  (g c (c))

14 Kettős specifikáció: e par exp i = eb imp bod ib absztrakt specifikáció reprezentáció + tartalmazás konkrét specifikáció Tartalmazás: exp=body = typesort: atypesort:  (c) oprs: f i :a, p 1,...,p k  a oprs: f i :  (c), p 1,...,p k  (c). eqns: eqns: f s (f c (a)) = h(a) f s (f c (  (c))) = h(  (c))

15 Az interfész megvalósítása a diagram kommutációját fejezi ki: e PAREXP i IMP e' PAR'EXP' i' = eb' IMP'BOD' ib' i'  r P = r I  i; és e'  r P = r E  e; Ha r P = r E = r I = identitás, akkor egzakt megvalósítás. rPrP rErE rIrI

16 Interfész egzakt megvalósítása (realizációja): Adott INT = (PAR 1, EXP 1, IMP 1, e 1, i 1 ) interfész specifikáció. MOD = (PAR, EXP, IMP, BOD, e, eb, i, ib); modulspecifikációt az INT interfész egzakt megvalósításának nevezzük, ha I(MOD) = INT. I(MOD) = (PAR, EXP, IMP, e, i ). MOD' = ( PAR', EXP', IMP', BOD', e', eb', i', ib'); modulspecifikációt az INT interfész specifikáció megvalósításának nevezzük, ha létezik olyan (r P : PAR 1  PAR, r E :EXP 1  EXP, r I :IMP 1  IMP) specifikáció morfizmus-hármas, amelyikre i'  r P = r I  i; és e'  r P = r E  e;


Letölteni ppt "Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);"

Hasonló előadás


Google Hirdetések