 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.

Slides:



Advertisements
Lignende præsentationer
07 – Kort om OO Introduktion.
Advertisements

KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Selve objektet versus referencen til objektet Nedarvning
09 – Arv og polymorfi i java
Hvordan man skriver koden.
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Lektion 7 Læsestof: Kopier fra Caranno
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
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.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
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.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
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.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 1999, Henrik B. ChristensenIntroducerende objektorienteret programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
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)
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.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
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.
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.
Collections og opremsning Nye typer collections, objektorienteret sweep.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
Forelæsning Uge 6 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 12 – Mandag
Parametrisering En kort introduktion.
Præsentationens transcript:

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.2 Naturlig ordning Binær søgning (og sortering) kræver at der er en naturlig, total, ordning af elementerne af en given type S : initialiser K : K  Ø : udvælg e fra K : split K : s[0..s.size()) l = 0 ; h = s.size(); l < h mi = (l+h)/2; e = s.get(mi) if ( e < m ) l = mi+1; else // e > m h = mi;

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.3 Naturlig ordning –7 < 42 –”Hansen” < ”Jensen” –31. dec < 1. jan – < – < ?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.4 Hvad har vi? Alle klassers moder, Object, stiller en metode til rådighed –boolean equals(Object o); Indicates whether some other object is "equal to" this one. Er det nok?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.5 Abstraktion En naturlig ordning kræver at vi kan afgøre om et element er ’mindre’ end et andet: –7 < 42eller på OO’sk: 7.lessThan(42); –”Hansen”.lessThan(”Jensen”) Altså skal alle klasser hvis instanser skal kunne ordnes implementere en metode ala ”lessThan”. Nogle gode forslag?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.6 En abstrakt klasse? Hvad med en abstrakt klasse! public abstract class Comparable { /** pre:o er en ikke-null reference til et objekt af typen Comparable. * post: returnerer sandt dersom dette objekt er naturligt ordnet * før objektet o (= er mindre end mht. værdi-sammenligning.) */ public abstract boolean lessThan(Object o); } public class Name extends Comparable { public boolean lessThan(Object o) {... }

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.7 Mulighederne Med den i hånden kan vi f.eks. skrive en metode som denne: public static void printOrder( Comparable a, Comparable b) { if ( b.lessThan( a ) ) { System.out.println( ”b er mindre end a” ); } else { System.out.println( ”a er mindre end b” ); } Og hvad gør den så?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.8 Klasser fra Java bibliotekerne Tag for eksempel String! Den arver jo ikke fra vores Comparable . Derfor kan vi heller ikke lave binær søgning i en ArrayList af String… Så, kan vi ikke lave en specialisering af String?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.9 ComparableString public class ComparableString extends String and Comparable Den går ikke i Java, Java har single class- inheritance, en klasse kan kun have en enkelt superklasse. Kunne vi ikke bare droppe Comparable, og alligevel implementere ”lessThan”?

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.10 ComparableString public class ComparableString extends String {... public boolean lessThan(Object o) {... } } Tjooo, men så mister vi muligheden for at kunne betragte ’klasser med en naturlig ordning’ som en abstrakt ting. Vi kan ikke bruge vores ’printOrder’ metode fra før. Vi bliver nødt til at skrive en ny binær søgning/sortering netop til vores nye ComparableString. Og alle andre klasser for den sags skyld. Øv...

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.11 Analyse Comparable derimod er en ren kontrakt, den siger kun at ’instanser’ af typen Comparable skal definere en ordning ved at implementere ’ lessThan ’. ”Conforming to a specified set of behaviours”

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.12 Rene kontrakter I Java kan man specificere en sådan ren kontrakt vha. af et interface; og en klasse kan implementerer et vilkårligt antal interfaces interface Comparable { boolean lessThan(Object o); } public class ComparableString extends String implements Comparable { public boolean lessThan(Object o) { return....; } }

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.13 Nedarvningstyper Man taler om implementationsnedarvning og interfacenedarvning. Så Java tilbyder enkel implementations- nedarvning (extends) og multipel interface- nedarvning (implements) class a extends b implements c,d,e,f,g {... }

 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.14 Java2’s Comparable Java2’s biblioteker kommer med et indbygget Comparable interface som definerer metoden –public int compareTo(Object o)Object Returns: a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object Øvelse: Hvordan ser if’en ud for objekter? split K : if ( e < m ) l = mi+1; else // e > m h = mi;