Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afHarald Jespersen Redigeret for ca. et år siden
1
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation
2
DAIMIIntroducerende objektorienteret programmering4A.2 Kontraktbaseret design En klasse bør altid betragtes fra to, klart adskilte, synsvinkler: “Udefra”Hvad opførsel tilbyder klassen? “Indefra”Hvordan programmerer vi denne opførsel? Dette kan opfattes som en kontrakt mellem en udbyder og en bruger (client) af klassen. “Klassen stiller en række faciliteter til rådighed, hvis brugeren overholder et sæt regler.”
3
DAIMIIntroducerende objektorienteret programmering4A.3 Eksempler Skildpadden:Turtle Udefra/bruger: Tilbyder grafisk præsentation af stregtegninger Tilbyder basal ‘skildpadde’-opførsel Kræver at brugeren benytter metoderne korrekt: Giver de rigtige parametre osv. Indefra/udbyder: Kode til styring af Java’s grafiske faciliteter
4
DAIMIIntroducerende objektorienteret programmering4A.4 Kontrakten Kontrakten består af tre ting: Klassens interface (metoderne, deres prototyper) Antagelser om parameterværdier Deres garanterede opførsel Eks: Klassen Name’s print metode [IPUJ s. 121]: –public void print( PrintStream target) Antagelser –parameter target er en objekt-reference til en gyldig PrintStream Opførsel: –Navn udskrives som ‘titel fornavn efternavn’
5
DAIMIIntroducerende objektorienteret programmering4A.5 Kontrakt Kun selve prototypen er beskrevet direkte i Java, resten er kun beskrevet implicit: Der er ingen angivelse af, at target skal være gyldig! Man bliver nødt til at læse hele metodekroppen for at finde ud af, hvilken opførsel ‘print’ tilbyder
6
DAIMIIntroducerende objektorienteret programmering4A.6 En vej frem... Som udbyder af en klasse skal man være eksplicit omkring alle tre krav til en kontrakt. Java sproget tilbyder kun hjælp til det ene. Altså må man som programmør være disciplineret og selv sørge for at beskrive de to andre krav. Antagelser: Pre-betingelser / pre-conditions Opførsel: Post-betingelser / post-conditions
7
DAIMIIntroducerende objektorienteret programmering4A.7 Kontrakt for ‘print’ Vi vil bruge kommentarer til at angive pre- og post-betingelser. Enten angiver vi direkte “Pre” og “Post”, eller vi kan beskrive det samme i ‘normalt’ sprog. /** Pre: Antager at ‘target’ er en gyldig PrintStream Post: Navnet udskrives på target i 'title firstname lastname' rækkefølge */ void print(PrintStream target) { … }
8
DAIMIIntroducerende objektorienteret programmering4A.8 Øvelse Hvilke pre- og post-betingelser var der tilknyttet vores Date2 klasses ‘set’ metode: public void set( int year, int month, int day )
9
DAIMIIntroducerende objektorienteret programmering4A.9 JavaDoc Java har endnu en kommentar-type, som er specielt nyttig i forbindelse med kontrakter: /** … */ Java kan automatisk generere HTML- dokumentation for klasser, og medtager alle /** kommentarer.
10
DAIMIIntroducerende objektorienteret programmering4A.10 JavaDoc Specielle etiketter i en JavaDoc kommentar har betydning for JavaDoc: @param x beskrivelse af parameteren x @return beskrivelse af returværdi
11
DAIMIIntroducerende objektorienteret programmering4A.11 JavaDoc eksempel /** indsæt et beløb @param amount beløbet som skal indsættes */ void deposit(int amount) { balance += amount; }
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.