Kontraktsprogrammering



Relevanta dokument
Modul 3 - Modularisering

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

OOP Objekt-orienterad programmering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Programkonstruktion och datastrukturer. Formell verifiering eller hur man bevisar att program gör rätt utan att testa dem

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Laboration A Objektsamlingar

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen OOP

Föreläsning 3: Booleans, if, switch

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Föreläsning 3-4 Innehåll

Föreläsning 5 Mer om funktioner, villkor

JAVAUTVECKLING LEKTION 4

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Objektorienterad programmering D2

Malmö högskola 2007/2008 Teknik och samhälle

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Malmö högskola 2008/2009 CTS

Typkonvertering. Java versus C

Användarhandledning Version 1.2

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 1 & 2 INTRODUKTION

Programmeringsteknik I

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

2D1342 Programkonstruktion för F1, ht 2006

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen. Lösningsförslag

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Del A (obligatorisk för alla)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

1 Comparator & Comparable

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Tentamen i Objektorienterad programmering

TENTAMEN OOP

OOP Objekt-orienterad programmering

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

OOP Omtenta

LÖSNINGSFÖRSLAG TENTAMEN

Föreläsning 3. Iteration while-satsen

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Föreläsnings 9 - Exceptions, I/O

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

JAVAUTVECKLING LEKTION 8

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Föreläsning REPETITION & EXTENTA

Malmö högskola 2007/2008 Teknik och samhälle

Tentamen, EDA501 Programmering M L TM W K V

Del A (obligatorisk för alla)

Föreläsning 7. Träd och binära sökträd

Föreläsning 2, vecka 8: Repetition

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Exceptions (undantag) Murach s: kap 7

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Mer om metoder och abstraktioner

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Metoder och top-down design

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Visual Basic, en snabbgenomgång

Lösningsförslag tentamen FYTA11 Java

Objektorienterad programutveckling, fk

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Föreläsning 8: Exempel och problemlösning

Laboration 2. Objektorienterad programmering. Syfte

Objektorienterad programmering

Chapter 4: Writing Classes/ Att skriva egna klasser.

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorienterad Programmering (TDDC77)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Iteration while-satsen

Transkript:

Kontraktsprogrammering

Programmera med kontrakt Samma som i vardagen Två parter (minst), bägge följer sin del 2

Bilköp Kund Krav Betala varje månad Förtjänst Få en bil Försäljare Ge kunden en bil och serva den en viss tid Få pengar varje månad 3

Boka biljett Resenär Resebyrå Krav Betala biljetten och vara på flygplasten i tid Flyga resenären till Hawaii Förtjänst Få åka till Hawaii Få pengar 4

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 5

Division Krav Förtjänst Matematiker Nä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 6

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 7

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; 8

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) 9

sattinpengar & tautpengar public void sattinpengar(double in) { mysaldo = mysaldo + in; } public void tautpengar(double ut) { mysaldo = mysaldo - ut; } 10

Variant av tautpengar public void tautpengar(double ut) { if(ut <= mysaldo) mysaldo = MySaldo ut; } else? 11

Variant av tautpengar public boolean tautpengar(double ut) { if(ut <= saldo) { mysaldo = mysaldo ut; return true; } } else return false; 12

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! ); 13

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 14

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); 15

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 16

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); 17

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 Pålitlighet Låg Hög Typ av användare: Användare av programmet Användare av din modul Åtgärd: Maska bort fel Kräv uppfyllda förvillkor 18

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 19