Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.

Lignende præsentationer


Præsentationer af emnet: "DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation."— Præsentationens transcript:

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


Download ppt "DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation."

Lignende præsentationer


Annoncer fra Google