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

Slides:



Advertisements
Lignende præsentationer
Stored Procedure Stored Procedure er programstumper, der gemmes i databasen og afvikles op databaseserveren på samme måde som forespørgsler. Med Stored.
Advertisements

Hvordan man skriver koden.
Objektorienteret programmering
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Forelæsning 3.1 Collections Javas for-each løkke
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
Eksamen 20 minutters mundtlig prøve, inklusiv ca. 5 minutter til votering. Prøven bedømmes efter 7-trinsskalaenskalaen. Der ikke forberedelsestid. I kan.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN KbP/seminar2: design21 Kontraktbaseret programmering Seminar 2 Klassedesign: Immutable lister Queue Shallowcopy og alkvantoren.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Tilgængelighed og Content Management Systemer - ATAG.
ATAG Tilgængelighed og Content Management Systemer.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
GP 4, 27/ Grundlæggende programmering Forår 2002 Forelæsning 4 onsdag 27/ kl. 9:15 – 12:00.
Grundlæggende DW, HTML, CSS, udskæring.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
DAIMIIntroducerende objektorienteret programmering3C.1 Design af klasser Specifikation og implementation.
DAIMIIntroducerende objektorienteret programmering4C.1 Systemdesign Design med flere klasser, En kaffeautomat.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering1B.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14A.1 Del, løs og kombinér.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Klassevariable- og metoder Funktionalitet på klasseniveau.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
DAIMIIntroducerende objektorienteret programmering1 Et lille banksystem Modellering beskrevet ved et UML klassediagram.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering15A.1 Eksamen…
DAIMIIntroducerende objektorienteret programmering12B.1 Obligatorisk Opgave 2 Et program til planlægning af madplaner.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Eksamen Praktisk prøve.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Klasser og objekter (Afsnit i manualen).
Dokumentation.
Dokumentation.
Dokumentation.
Præsentationens transcript:

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

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.”

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

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’

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 

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

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) { … }

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 )

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.

DAIMIIntroducerende objektorienteret programmering4A.10 JavaDoc  Specielle etiketter i en JavaDoc kommentar har betydning for x beskrivelse af parameteren beskrivelse af returværdi

DAIMIIntroducerende objektorienteret programmering4A.11 JavaDoc eksempel /** indsæt et amount beløbet som skal indsættes */ void deposit(int amount) { balance += amount; }