Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)

Slides:



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

1 Frameworks. 2 Plan Frameworks • Kollektioner • Input/output Nyt designmønster: Decorator.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Selve objektet versus referencen til objektet Nedarvning
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
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.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper: arrays, stakke, køer,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
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.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Nedarvning.
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.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
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
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Variabler, klassevariabler, identitet og lighed, collections
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.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.
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)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
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 programmering Collections Samlinger af objekter.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Query optimization MICHAEL I
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Grundbegreber fra objektorienteret design
Forelæsning Uge 12 – Mandag
Parametrisering En kort introduktion.
Præsentationens transcript:

Interfaces – hvorfor, hvad og hvordan?

 Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface) og implementation (klasse) –Modellering (abstrakt/konkret, generelt/specielt) –Afkobling af programkomponenter Interfaces, hvad –Mange-til-mange relation mellem specifikation og implementation –Typehierarki Interfaces, hvordan –Sprogkonstruktion i Java –Essentielt begreb i CORBA –Java-specifik karakteristik

 Michael E. Caspersen 2003IOOPInterfaces.3 Separering af spec. og impl. Implementation (hvordan) –lineær potensopløftning –logaritmisk potensopløftning –Quicksort –Mergesort –Bobblesort –et hjørne og to sidelængder –to hjørner –array (sorteret) –kædet liste (sorteret) –søgetræ (balanceret) –bunke (heap) Specifikation (hvad) –Beregn x y –Sorter listen –Rektangel –Prioritetskø

 Michael E. Caspersen 2003IOOPInterfaces.4 Modellering Containerklasser –I Java findes en række collectioninterfaces og –klasser –Såvel interfaces som -klasser er organiseret i klassifikations- hierarkier (specialisering) –Interfaces er abstrakte, klasser er konkrete –Et interface definerer en abstrakt datatype (ADT) –En klasser definerer én implementation (datastruktur) HashSet impl Set TreeSet impl SortedSet ArrayList impl List LinkedList impl List HashMap impl Map TreeMap impl SortedMap Interfaces (specifikation) Klasser (implementation)

 Michael E. Caspersen 2003IOOPInterfaces.5 Afkobling af programkomponenter CalculatorStack ArrayStack CollectionStack LinkedStackSimpleScientific Financial Komponenterne kan udskiftes uafhængigt af hinanden dvs. 3  3  9 mulige konfigureringer

 Michael E. Caspersen 2003IOOPInterfaces.6 Mange-til-mange relation Fra spec. til impl. –Det er oplagt at en specifikation kan implementeres på mange måder (slide 3-5) Fra Impl. til spec. –Der er måske mindre oplagt at en implementation kan opfylde flere forskellige specifikationer –En specifikation udtrykker mindstekrav til en implementation ved at beskrive en rolle som en implementation skal udfylde –En implementation kan leve op til flere forskellige mindstekrav / udfylde flere forskellige roller Specifikation Implementation * *

 Michael E. Caspersen 2003IOOPInterfaces.7 Eksempel, mange-til-en > Rectangle circumference interface Rectangle { float circumference(); } interface Comparable { int compareTo(Object o); } class R implements Rectangle, Comparable { private Point p; private int b, h; public circumference() { return 2*(b+h); } public int compareTo(Object o) {... } } R circumference compareTo p: Point b: int h: int UML > Comparable compareTo Java

 Michael E. Caspersen 2003IOOPInterfaces.8 Typehierarki extends –udtrykker en generaliserings- / specialiseringsrelation implements –udtrykker en abstraktions- / konkretiseringsrelation Subtype –Såvel specialisering som konkretisering danner subtype Relationer For klassebaserede typer gælder:  Alle typer, T, er subtype af Object: T  Object  Alle typer, T, er subtype af sig selv: T  T  T1  T2  T2  T3  T1  T3  T 2  T 1, hviss T 1 og T 2 er defineret på en af følgende tre måder: class T 2 extends T 1 {... } class T 2 implements T 1 {... } interface T 2 extends T 1 {... } Subtyper i Java (  )

 Michael E. Caspersen 2003IOOPInterfaces.9 Comparable public interface Comparable { public int compareTo(Object o); } public class Name implements Comparable { private String first, last; public int compareTo(Object o) { Name n = (Name) o; int lastCmp = last.compareTo(n.last); return ( lastCmp!=0 ? lastCmp : first.compareTo(n.first) ); }

 Michael E. Caspersen 2003IOOPInterfaces.10 Generiske funktioner (1) public class GF { public static Object min(Comparable c1, Comparable c2) { if ( c1.compareTo(c2) <= 0 ) return c1; else return c2; } public static void sort(List c) {... } public static boolean search(Searchable s, Object m) {... }

 Michael E. Caspersen 2003IOOPInterfaces.11 Generiske funktioner (2) public class GF { public static Object min(Comparable c1, Comparable c2) {... } public static void bubblesort(List c) { for ( int s=c.size()-1; s>0; s-- ) for ( int i=0; i<s; i++ ) if ( c.get(i).compareTo(c.get(i+1)) > 0 ) swap(c, i, i+1) } public static boolean search(Searchable s, Object m) {... }