Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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

Lignende præsentationer


Præsentationer af emnet: "Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find."— Præsentationens transcript:

1 Interfaces – brug

2 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

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

4 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

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

6 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) {... }

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

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

9 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); }

10 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? }

11 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()

12 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()

13 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)!

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

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

16 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 (  )


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

Lignende præsentationer


Annoncer fra Google