Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS 2015-06-22 Kontraktsprogrammering.

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
BARNS RÖSTER OM INTERNET
Funktioner och programorganisation
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
OOP Objekt-orienterad programmering
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Grundläggande programmering
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
MaB: Andragradsekvationer
Programmering B PHP Lektion 2
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Programmering i C# 3. Klasser.
Repetition inför slutprovet
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Matematik A - Introduktion
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Ingen vet vad han klarar innan han har försökt. ” - Publilius Syrus (85 f.Kr.-43 f.Kr.).
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Grundläggande programmering
Anders Sjögren Mer om datatyper. Anders Sjögren const det finns ett elegantare sätt att skapa konstanter i C än sättet med makro som vi använt tidigare.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Möte inför upphandling,
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Anders Sjögren Deklarationsområde och funktioner.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
faktor X faktor = produkt
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 7 Metoder Parametrar Klassmetod.
Anders Sjögren Mer om datatyper. Anders Sjögren const det finns ett elegantare sätt att skapa konstanter i C än sättet med makro som vi använt tidigare.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Selektion jämförande och logiska operatorer
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 3: Booleans, if, switch
Föreläsning 4: for, while, do-while
Programmeringsteknik DAVA07
Presentationens avskrift:

Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS Kontraktsprogrammering

DAVA07/08 JE,MG,MG,PS Karlstads universitet Datavetenskap 2 Programmera med kontrakt Samma som i vardagen Två parter (minst), bägge följer sin del

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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; }

DAVA07/08 JE,MG,MG,PS 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)

DAVA07/08 JE,MG,MG,PS Karlstads universitet Datavetenskap 10 sattInPengar & taUtPengar public void sattInPengar(double in) { mySaldo = mySaldo + in; } public void taUtPengar(double ut) { mySaldo = mySaldo - ut; }

DAVA07/08 JE,MG,MG,PS Karlstads universitet Datavetenskap 11 Variant av taUtPengar public void taUtPengar(double ut) { if(ut <= mySaldo) mySaldo = MySaldo – ut; else ? }

DAVA07/08 JE,MG,MG,PS Karlstads universitet Datavetenskap 12 Variant av taUtPengar public boolean taUtPengar(double ut) { if(ut <= saldo) { mySaldo = mySaldo – ut; return true; } else return false; }

DAVA07/08 JE,MG,MG,PS 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!”) ; }

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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);

DAVA07/08 JE,MG,MG,PS 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

DAVA07/08 JE,MG,MG,PS 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);

DAVA07/08 JE,MG,MG,PS 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:

DAVA07/08 JE,MG,MG,PS 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