Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.

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

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.
Objektorienteret programmering
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.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
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.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
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.
Nedarvning.
Forelæsning 2.2 Tilstand og opførsel (repetition)
Fundamentale sprogbegreber
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.
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 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
Variabler, klassevariabler, identitet og lighed, collections
Introduktion til programmering Repetition - ArrayList.
 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”
Checklister Comparable og Comparator. dIntProg, E08Checklister.2 Checkliste for Comparable Antagelse –vi har en liste med elementer af typen T: List lst;
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
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.
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 Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.
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.
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.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 5 – Mandag
Quiz – Uge 3 – mandag – første time
Parametrisering En kort introduktion.
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 5 – Mandag
Dog Sort Dogs For meget ansvar Låst til én måde at sortere på
Quiz – Uge 3 – mandag – første time
Præsentationens transcript:

Interfaces – brug

Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find én Find alle (også i dag) I dag: –Brug af Comparable

Afkobling af programkomponenter (1) Collections T min(Collection c) void sort (List l)... > Comparable Person Terning Track dIntProg, E10

Afkobling af programkomponenter (2) 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 Terning, Person, Track,...) dIntProg, E10

Ansvarsfordeling over Atlanten (1) dIntProg, E10 min(myList) Collections Comparable : Driver e.compareTo(res) e: T

Ansvarsfordeling over Atlanten (2) public T min(List l) { T res; res= l.get(0); // res == min element so far for ( T e : l ) { if ( e.compareTo(res) < 0 ) { res= e; } return res; } dIntProg, E10 public class Driver { public void run() { ArrayList myList; myList= new ArrayList ();... Track t= Collections.min(myList); } Comparable public class Track implements Comparable {... public int compareTo(Track t) {... }

Programmeringsteknologi, F11polymorfi.7 Oversigt Substitution (forfremmelse) –Statisk type vs. dynamisk type –Statisk type: compile-time check (hvad er lovligt) –Dynamisk check: hvilken metode udføres –Specialisering af opførsel (redefinering af metode)

Programmeringsteknologi, F11polymorfi.8 Et figurhierarki public class Shape { private int x, y; public Shape(int x, int y) { this.x = x; this.y = y; } public void move(int dx, int dy) { erase(); x += dx; y += dy; draw(); } public void draw(){}; public void erase(){}; }

Programmeringsteknologi, F11polymorfi.9 Et figurhierarki (2) public class Rectangle extends Shape { private int a, b; public Rectangle(int x, int y, int a, int b) { super(x, y); this.a = a; this.b = b; } public void draw() { Crayon c = new Crayon(); for ( int i=0; i<2; i++ ) { c.move(a); c.turn(90); c.move(b); c.turn(90); }

Programmeringsteknologi, F11polymorfi.10 Et figurhierarki (3) public void run() { Rectangle r = new Rectangle(10, 10, 5, 7); Ellipse e = new Ellipse(5, 5, 3, 7); Shape s; s = r; // legal? s.draw(); s = e; // legal? s.draw(); r = e; // legal? }

Programmeringsteknologi, F11polymorfi.11 Eksempel: redefineret metode public static void run() { Cat garfield = new Cat(); Tiger shereKhan = new Tiger(); Cat c; garfield.hop(); shereKhan.hop(); c = garfield; c.hop(); c = shereKhan; c.hop(); } Cat c Cat hop() Tiger hop()

Programmeringsteknologi, F11polymorfi.12 Eksempel: redefineret metode public static void run() { Cat garfield = new Cat(); Tiger shereKhan = new Tiger(); Cat c; garfield.hop(); shereKhan.hop(); c = garfield; c.hop(); c = shereKhan; c.hop(); } Cat c Cat hop() Tiger hop()

Programmeringsteknologi, F11polymorfi.13 Dynamisk binding (method dispatch) Om typer –Den statiske type er typen der optræder i erklæringen af en variabel (objektreference) –Den dynamiske type er typen af selve objektet Variabler –Den dynamiske type kan være en vilkårlig subtype af den statiske type Metodekald –Den dynamiske type afgør hvilke metoder der bliver kaldt, og denne type er først kendt på kørselstidspunktet (run-time)!

Programmeringsteknologi, F11polymorfi.14 Metodeopslag (method lookup) c.hop() –referencen c følges til objektet –objektets klasse (dynamiske type) bestemmes –hvis metoden hop er (re-)defineret i klassen, benyttes denne implementation –hvis det ikke er tilfældet ledes i superklassen og så fremdeles –den første implementation der findes, er den som udføres Bemærk at vi er sikre på at finde en implementation af metoden på stien fra objektets klasse mod klassen Object. Hvorfor?

Programmeringsteknologi, F11polymorfi.15 Eksempel: heterogen collection public hopAll(Collection coll) { for ( Cat c : coll ) { c.hop(); } Hvilken hop-metode?

Cryptomathic, F05 Designmønstre Grundbegreber fra objektorienteret design.16 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 (  )