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”Hvilken 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 (metoder m. parametre osv.) Antagelser om parameterværdier 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 JavaDoc  Java har endnu en kommentar-type, som er specielt nyttig i forbindelse med kontrakter:  /** … */  Java (og Kawa) kan automatisk generere HTML- dokumentation for public klasser (skriv public foran class keyword), og medtager alt i /** … */ kommentarer.  Se C:\ioop\docs\index.html, indeholder Turtle

9 DAIMIIntroducerende objektorienteret programmering4A.9 JavaDoc Tags  JavaDoc kommentarer kan skrives i med alle normale HTML tags, f.eks.: Kuk Kuk {nyt afsnit}  Desuden forstår JavaDoc nogle specielle tags @paramBeskrivelse af parameterliste @returnBeskrivelse af returnværdi

10 DAIMIIntroducerende objektorienteret programmering4A.10 Eksempel /** returnerer årstallet for denne dato instans @return årstallet for denne dato instans */ public int year() { return y; } Genereret output

11 DAIMIIntroducerende objektorienteret programmering4A.11 Øvelse  Hvilke pre- og post-betingelser var der tilknyttet vores Date2 klasses ‘set’ metode:  public void set( int year, int month, int day )  Hvorledes ville JavaDoc kommentaren se ud

12 DAIMIIntroducerende objektorienteret programmering4A.12 En ny Dateklasse  Vores ioop-bibliotek (hvor også Turtle ligger i) indeholder en datoklasse: Date.  Testprogram:  import ioop.Date;  class TestDate {  public static void main( String[] args ) {  Date d = new Date();  d.set(1999,12,31);  d.add(1);  d.print();  }

13 DAIMIIntroducerende objektorienteret programmering4A.13 Øvelse  Hvilke metoder stiller Date i ioop-biblioteket til rådighed?


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

Lignende præsentationer


Annoncer fra Google