Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avLars-Olof Hermansson
1
Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS 2015-06-22 Kontraktsprogrammering
2
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 2 Programmera med kontrakt Samma som i vardagen Två parter (minst), bägge följer sin del
3
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 3 Bilköp KravFörtjänst KundBetala varje månadFå en bil FörsäljareGe kunden en bil och serva den en viss tid Få pengar varje månad
4
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 4 Boka biljett KravFörtjänst ResenärBetala biljetten och vara på flygplasten i tid Få åka till Hawaii ResebyråFlyga resenären till Hawaii Få pengar
5
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 5 Två sidor av kontraktet Från ”insidan” Vad kräver jag vid anrop av mig Vad ger jag tillbaka till anroparen Från ”utsidan” Vad krävs för att anropa modulen Vad får jag tillbaka
6
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 6 Division KravFörtjänst MatematikerNämnaren får ej vara noll Får kvoten mellan täljare och nämnare Funktion för att dividera Dividera täljare med nämnare och returnera kvoten Slipper kontrollera om täljaren är noll
7
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 7 Förvillkor och Eftervillkor Förvillkor – vad som ska gälla när funktionen anropas, om det inte är uppfyllt är resultatet odefinierat Eftervillkor – vad som ska gälla när funktionen är klar, under förutsättning att förvillkoret var uppfyllt
8
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 8 Funktion för division //pre: nämnare != 0 //post: kvoten mellan taljare och //namnare har returnerats public static double dividera(double taljare, double namnare) { return taljare/namnare; }
9
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 9 Bank-program Saldo – en variabel, hur mycket pengar vi har sattInPengar – en funktion som sätter in pengar (dvs ökar saldo) taUtPengar – en funktion som tar ut pengar (dvs minskar saldo)
10
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 10 sattInPengar & taUtPengar public void sattInPengar(double in) { mySaldo = mySaldo + in; } public void taUtPengar(double ut) { mySaldo = mySaldo - ut; }
11
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 11 Variant av taUtPengar public void taUtPengar(double ut) { if(ut <= mySaldo) mySaldo = MySaldo – ut; else ? }
12
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 12 Variant av taUtPengar public boolean taUtPengar(double ut) { if(ut <= saldo) { mySaldo = mySaldo – ut; return true; } else return false; }
13
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 13 Returvärde Användaren måste kolla returvärdet: boolean togUt; togUt = taUtPengar(200); if(togUt == false){ System.out.println(”Du har inte tillräckligt med pengar!”) ; }
14
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 14 Kontrakt för taUtPengar Förvillkor på taUtPengar: man får inte ta ut mer än man har pre: ut <= saldo Eftervillkoret på taUtPengar: man har tagit ut pengar post: saldo har minskats med ”ut” kronor
15
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 15 Kontrakt för taUtPengar //pre: ut <= mySaldo //post: mySaldo = mySaldo – ut public void taUtPengar(double ut) { mySaldo = mySaldo - ut; } Kollar före anrop till funktionen taUtPengar if( mySaldo >= 200) taUtPengar(200);
16
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 16 Kontrakt för sattInPengar Förvillkor på sattInPengar: man får inte sätta in en negativ summa pre: in >= 0 Eftervillkoret på sattInPengar: man har satt in pengar post: saldo har ökats med ”in” kronor
17
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 17 Kontrakt för sattInPengar //pre: in >= 0 //post: mySaldo = mySaldo + in public void sattInPengar(double in) { mySaldo = mySaldo + in; } Användaren kollar innan han anropar funktionen if( in >= 0) sattInPengar(200);
18
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 18 Grad av pålitlighet Butik litar inte på folk, gör kreditupplysning Vi litar inte på slutanvändare – låg pålitlighet Egna programdelar – hög pålitlighet Andras programdelar – medel pålitlighet LågHög Pålitlighet ”Maska bort fel” Kräv uppfyllda förvillkor Användare av programmet Användare av din modul Typ av användare: Åtgärd:
19
DAVA07/08 JE,MG,MG,PS 2015-06-22 Karlstads universitet Datavetenskap 19 Varför använda kontrakt Mer logisk kod Klarare ansvarsfördelning Lättare att debugga Kortare kod Mindre redundans (upprepning av samma sak) Färre fel i färdig produkt
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.