FEN 2013-05-19KbP/seminar3: frameRules1 Frame rules Indramning - Omgivelser Frame rules specificerer, hvad der ikke ændres.

Slides:



Advertisements
Lignende præsentationer
FEN KbP/seminar3: subcontracts1 Kontraktbaseret programmering Seminar 3 Kontrakter og arv Underleverandørsyn Substitutionsprincippet Guarded.
Advertisements

Opsamling Loops Klassedesign Immutable Lister shallowCopy() Projekt 2 FEN KbP/seminar3: Opsamling.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
FEN KbP/seminar2: design21 Kontraktbaseret programmering Seminar 2 Klassedesign: Immutable lister Queue Shallowcopy og alkvantoren.
KAPITEL 2 Renterisiko.
KAPITEL 7 Kreditrisiko.
KAPITEL 3 Volatilitet, Beta og Tracking Error
Ventilation og indeklima
KAPITEL 10 Derivater.
KAPITEL 5 Delta Normal Value at Risk
dagsorden Metoder i samfundsfag – hvorfor?
Statisk ubestemte konstruktioner. Robusthed
Trigonometri som værktøj for problemløsninger ved geometri og måling
Pengurusan Pembayaran Penyelidikan Research Management Centre
Hvilke sager ligger der på vejlederkonsulentens bord for tiden?
C4 C4 i Hillerød Erhverv Handel Turisme, kultur, sport Uddannelse
Amukurs.dk Power point 1: Online præsentation af amukurs.dk - Sådan gør du: Læs ”Værd at vide, når du skal give en online præsentation af amukurs.dk”
Mit liv - nu med DAT MIT LIV - nu med DAT.
Analyse af miljøforhold
Omkostninger til tilsyn m.v. for statsautoriserede revisorer
Forhandlingsteknik Strategi og proces Kommunikation Psykologi
Tema 5: Relationer og kommunikation Psykoedukation til patienter med emotionel ustabil personlighedsforstyrrelse.
Modulet International Projektudvikling og –Ledelse
Kort om Hjerteforeningen
Søgeradius med Aabenraa som udgangspunkt
Søgeradius med Kerteminde som udgangspunkt
Min første søgning for 4 – 5 klasse
Luther – med liv og lyst Vejen Kirke
Det danske ejendomsmarked
FÆLLESSKAB, FREMDRIFT OG FORRETNING
Ea Thystrup & Louise Mikkelsen 3øa
Grundforskningscenteret “Glas & Tid”, Roskilde Universitet.
Fagligt samspil mellem matematik og samfundsfag
Lyd data (audio data) (Side 4-6 i artiklen: 2. Repræsentation og manipulation af Data)
DK: Indledende: Jeg er jeres vært, og jeg har ansvaret for jer, mens I er her – og for, at I forlader bygningen igen, når vores møde er slut. I bedes derfor.
Koordinatsystemer og Kinematik
3d Billeddata (Side i artiklen: 2. Repræsentation og manipulation af Data)
Vektorprodukt (Krydsprodukt)
Lokale lønforhandlinger
Rekeparty Fredag 16. juni 2017 Kl. 18:00 Eventuelt:
Eva Danielsen, Nærum Gymnasium
Folkeskolens prøver i matematik
Førstegradsligninger
Funktioner.
Nogle af de nye emner i læreplaner for samfundsfag
יסודות מבני נתונים תרגול 9: שאלות חזרה.
دور بورصة فلسطين في النمو الاقتصادي دراسة قياسية
Introduktion.
Informationsmøde om Praktikplads-AUB
Hans Ole Lund Christiansen
Rullede deje.
CUSTOMER LIFETIME VALUE
Også kendt som Dynamisk fræsning…
Forløb med portfolioelementer
Redesign af antennetårn for test af antenner i DTU’s radiodøde rum, under integreret anvendelse af Creo Top-Down Design og Creo simulate Indlæg ved.
Hvad er naturvidenskab?
At udvikle produkter og services sammen med vores brugere
Sted - klasse - dato H H H H H H H H H H
Direktørmøde- Rammeaftale Sjælland 7. oktober 2016 kl
Lynæs Sejl- og Kajakklub åbner Sejlsportsligaen med Lynx-open d. 25
Vejledning - Lokal tilpasning af oplæg og proces
Introduktion til kemiske reaktioner
MADPLAN Uge xx Morgenmad Frokost Aftensmad Mandag Tirsdag Onsdag
Dagens program 9.00 – Værgemål herunder arv/testamente Pause
Lineær eller eksponentiel graf gennem to punkter
Forelæsning Uge 2 – Torsdag
Buffons nåleproblem Introduktion Beskrivelse af aktiviteten
Svangreomsorgen starter hos praksispersonalet
Galileos faldlove, v=at og s=kt2
Albedo, drivhusgas og strålingsbalance.
Præsentationens transcript:

FEN KbP/seminar3: frameRules1 Frame rules Indramning - Omgivelser Frame rules specificerer, hvad der ikke ændres

FEN KbP/seminar3: frameRules2 Specifikationer - notation Summering: |[N: int ; b: array [0..N) of int ; s: int ; s : [N  0, s = (  i | 0  i < N : b[i])] ; ]| Omgivelser Ramme Precond. Postcond Implicit frame rules: Kun variable nævnt i rammen ændres af algoritmen

FEN KbP/seminar3: frameRules3 Frame rules - Indramning Hidtil har vi specificeret kommandoer ved at specificere, hvad der ændres. Det har været underforstået, at det er det eneste, som ændres. En fuldstændig specifikation bør også fortælle, hvad der ikke ændres. Dette kaldes en frame rule.

FEN KbP/seminar3: frameRules4 Queue Hvad med resten af køen? // Commands ensures ensures public void put(Object o); requires ensures ensures (\forall int i; 0<=i && \old(shallowCopy()).get(i+1) == public void remove();

FEN KbP/seminar3: frameRules5 Queue Her er en (delvis) frame rule med shallowCopy() // Commands ensures ensures ensures (\forall int i; 0<=i && \old(shallowCopy()).get(i) == public void put(Object o);

FEN KbP/seminar3: frameRules6 shallowCopy() vs. deepCopy() Vores frame rule skal udtrykke, at –alle elementer i køen inden put(-) skal stå på samme plads efter, og –elementerne skal være uændrede Det sidste kan ikke gøres med shallowCopy() deepCopy() skal implementeres

FEN KbP/seminar3: frameRules7 Queue2 – Immutable lister ensures ensures public void put(Object o); Resten af køen skal være uændret??? Vi skal udtrykke, at sublisten fra 0 til \old(size())-1 skal være lig med listen fra 0 til size()-1

FEN KbP/seminar3: frameRules8 ImmutableList requires l != ensures (l.isEmpty() != isEmpty()) ==> ensures (!isEmpty()) ==> (\result == (l.head()==head() public boolean equals(ImmutableList l); requires 0<=from && from<=to && ensures ensures (from!=to) ==> ensures (from!=to) public ImmutableList sublist(int from, int to); equals() og sublist(-) må kunne bruges?

FEN KbP/seminar3: frameRules9 Sublisten fra 0 til \old(size())-1 skal være lig med listen fra 0 til size()-1 ensures ensures ensures items().sublist(0, public void put(Object o);

FEN KbP/seminar3: frameRules10 Men… public boolean equals(ImmutableList l) { boolean result; if (l.isEmpty()!=isEmpty()) { result = false; } else if (isEmpty()) { result = true; } else { result = l.head() == head && l.tail().equals(tail); } return result; } Checker kun på referencer!

FEN KbP/seminar3: frameRules11 Kan det betale sig? Ifølge DbC: nogen gange: –Hvis klientprogrammører laver fejl, som tyder på en misforstået opfattelse af, hvad en operation gør, så kan eksplicitte frame rules være en hjælp. –Hav den konvention, at alle ændringer skal være eksplicit nævnt i postconditions. –Ved review og lignende: husk at checke mod (både implicitte og eksplicitte) frame rules.

FEN KbP/seminar3: frameRules12 Øvelser… Frame rule for Queue.remove() Frame rules for Stack …men ikke i dag