1 / 16

Paraméter továbbítás. (parameter passing)

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.];

pete
Download Presentation

Paraméter továbbítás. (parameter passing)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 SPEC SPEC1 SPEC = (S,OP,E); formális paraméterek specifikációja. p: benne foglaltatás; SPEC1 =SPEC(S1,OP1,E1); Például: p data string(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 SPEC SPEC1 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S1then s else h(s) fi. • (N:s1...sns)OPOP': • h1(N:s1...sns) = if N:s1...sns OP1then • N:h1(s1)...h1(sn)h1(s)else h(N):h(s1)...h(sn)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,s1,s2,s3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 SPECSPEC1 PSPEC paraméteres formális specifikáció; p: tartalmazás; Pl.: PELEM = (ELEM, SET); p ELEM SET 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 SPEC SPEC1 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) hset(data) = (table hset)(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(tablea(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) hset(nat) = (table hset)(nat) = table(set(nat)).

  9. Modul specifikációkon értelmezett alapvető operációk: Kompozíció. Adva M1= (PAR1, EXP1, IMP1, BOD1, e1, i1, eb1,ib1); M2= (PAR2, EXP2, IMP2, BOD2, e2, i2, eb2,ib2); Felmerülő igény: M1import interfészének és M2export interfészének az összeillesztésével hozzunk létre egy új M3 modulspecifikációt. Kompozíció. h: = M1 M2; h=(h1,h2); h1 : IMP1 EXP2; h2 : PAR1 PAR2; M3 = M1hM2;

  10. M1= (PAR1, EXP1, IMP1, BOD1, e1, i1, eb1,ib1); M2= (PAR2, EXP2, IMP2, BOD2, e2, i2, eb2,ib2); M3 = M1hM2; Eredmény: M3 = (PAR3, EXP3, IMP3, BOD3, e3, i3, eb3,ib3); PAR3= PAR1; EXP3= EXP1; IMP3= IMP2; e3 = e1;

  11. e1 PAR1 EXP1 i1 = eb1 ib1 IMP1 BOD1 h2 h1 b1 e2 PAR2 EXP2 i2 = eb2 ib2 IMP2 BOD2 BOD3

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

  13. Interfész megvalósításai. e PAR EXP i = eb IMP BOD 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; f0 : g0 fc(c): gc(c) A jelölés jelentése: f0 = rep(g0); (f0 = (g0)); fc(c): rep(gc(c)); fc(c): (gc(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: a typesort: (c) oprs: fi:a, p1,...,pka oprs: fi: (c), p1,...,pk(c) . . . eqns: eqns: fs(fc(a)) = h(a) fs(fc((c))) = h((c))

  15. Az interfész megvalósítása a diagram kommutációját fejezi ki: e PAR EXP i IMP rP rE e' PAR' EXP' i' = eb' IMP' BOD' ib' rI i' rP = rI  i; és e'  rP = rE  e; Ha rP= rE= rI = identitás, akkor egzakt megvalósítás.

  16. Interfész egzakt megvalósítása (realizációja): Adott INT = (PAR1, EXP1, IMP1, e1, i1) 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 (rP: PAR1 PAR, rE:EXP1 EXP, rI:IMP1 IMP) specifikáció morfizmus-hármas, amelyikre i'  rP = rI  i; és e'  rP = rE  e;

More Related