Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afMarianne Bagge 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”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?
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.