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

Slides:



Advertisements
Lignende præsentationer
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Advertisements

Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Selve objektet versus referencen til objektet Nedarvning
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Forelæsning 3.1 Collections Javas for-each løkke
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
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.
Grundlæggende DW, HTML, CSS, udskæring.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
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.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
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,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
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)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
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.
 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.
Klassevariable- og metoder Funktionalitet på klasseniveau.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 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.
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.
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”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.”

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 (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’

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

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 af af returnværdi

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

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

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();  }

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