Interfaces Afkobling af programkomponenter (eksempel: Comparable)

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
Arv Idéen i arv et at kunne genbruge gennem generalisering
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.
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
Fundamentale datastrukturer
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,
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
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.
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
Introduktion til programmering Repetition - ArrayList.
Checklister Comparable og Comparator. dIntProg, E08Checklister.2 Checkliste for Comparable Antagelse –vi har en liste med elementer af typen T: List lst;
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 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 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.
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.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
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.
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 programmering Collections Samlinger af objekter.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
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.
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;
Forelæsning Uge 5 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 12 – Mandag
Parametrisering En kort introduktion.
Forelæsning Uge 12 Abstrakte klasser og interfaces
Præsentationens transcript:

Interfaces Afkobling af programkomponenter (eksempel: Comparable)

dIntProg, E08Interfaces.2 Date-klasse(r) med interface Date setToNextDate() toString() R 1 : day, month year R 2 : # dage siden... Date > DateR2 DateR1

dIntProg, E08Interfaces.3 Abstrakt og konkret type Date > DateR2 DateR1 Abstrakt type (ADT) Konkret(e) type(r) (CDT)

dIntProg, E08Interfaces.4 Super- og subtyper En abstrakt type er supertype til sin(e) konkret(e) type(r) En konkret type er subtype til sin(e) abstrakt(e) supertype(r)

dIntProg, E08Interfaces.5 Typeregel for assignment Typen af udtrykket på højresiden skal være en subtype af variablen på venstresiden: v = exp; T(v) ≥ T(Exp) En type er sin egen subtype (  )

dIntProg, E08Interfaces.6 Eksempler Date d; d= new DateR1(); // lovligt d= new Person(); // ulovligt List l; l= new ArrayList(); // lovligt l= new HashSet(); // ulovligt

dIntProg, E08Interfaces.7 Interface vs. Class Et interface beskriver en abstrakt type –kan benyttes som formel type for variabler og som returtype for metoder En klasse beskriver en konkret type –kan benyttes ligesom interfaces OG til instansiering af objekter Date d; public Date next(Date d) d = new DateR1(); public DateR1 sort(DateR1 d)

dIntProg, E08Interfaces.8 Interfaces i Javas Collection API Containerklasser –I Java findes en række collection-interfaces 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)

dIntProg, E08Interfaces.9 Afkobling af programkomponenter (1) Klient Interface Implementation Programmer til et interface Hvad Hvordan

dIntProg, E08Interfaces.10 Afkobling af programkomponenter (2) Den væsentligste fordel er at vi får mulighed for at operere uniformt på alle objekter af en bestemt kategori (polymorfi): A BC Klient * >

dIntProg, E08Interfaces.11 Dobbelt anvendelse af polymorfi class Klient { public void doSomething(Collection items) { // behandl items som om det er en Collection // uanset om det faktisk er en ArrayList, // et HashSet, et... } for ( A a : items ) { // behandl alle items som om de er // A-objekter uanset om de faktisk // er B- eller C-objekter }

Typeparametrisering Generel kode (generisk kode)

dIntProg, E08Interfaces.13 Ønsket om at kunne skrive generel kode Vi ønsker f.eks. at kunne skrive følgende metode: // Vi antager at listen ikke er tom public T min(List c) { T res; res = c.get(0); // res = min element so far for ( T e : c ) { if ( ”e < res” ) { res = e; } return res; }

dIntProg, E08Interfaces.14 Hvordan sammenligner man objekter? public interface Comparable { /** whether this object is * smaller (negative integer) * equal (0) * or greater (positive integer) * than object o */ public int compareTo(T o); }

dIntProg, E08Interfaces.15 Brug af interfaces (klient) Programmering vha. interfacet Comparable: public Object min(List c) { T res; res = c.get(0); // res = min element so far for ( T e : c ) { if ( e.compareTo(res) < 0 ) { res = e; } return res; }

dIntProg, E08Interfaces.16 Brug af interfaces (implementør) Tænk på et interface som en rolle Objekter fra en klasse kan spille rollen beskrevet i et interface –Person-objekter kan spille rollen Comparable public class Person implements Comparable {... public int compareTo(T o) {... }

dIntProg, E08Interfaces.17 Collections Klassen Collections indeholder en lang række anvendelige metoder: Som hovedregel forudsætter metoderne at typen T implementerer interfacet Comparable int binarySearch(List l, T key) void copy(List dest, List src) boolean disjoint(Collection c1, Collection c2) int frequency(Collection c, Object o) T max(Collection c) T min(Collection c) void reverse(List l) void shuffle(List l) void sort(List l)...

dIntProg, E08Interfaces.18 Afkobling af programkomponenter (3) Collections T min(Collection c) void sort (List l)... Comparable Person Terning Date

dIntProg, E08Interfaces.19 Afkobling af programkomponenter (4) Der er behov for at kunne mindske afhængigheden mellem programkomponenter Interfaces benyttes til at fastlægge minimale afhængigheder mellem programkomponenter Ved brug af interfaces kan samarbejdende programkomponenter udvikles, oversættes, testes, etc. uafhængigt af hinanden –tidsmæssigt kan der være lang tid mellem at komponenterne udvikles (f.eks. Collections.sort() og Person, Terning, Date,...)