Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.

Lignende præsentationer


Præsentationer af emnet: " Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt."— Præsentationens transcript:

1  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt

2  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.2 Motivation  Vi har tidligere talt om binær søgning; en effektiv måde at finde et element i en list givet at mængden er sorteret.  Men... Det var jo kun for heltal og Sequence...  Hvad med lister af strenge, navne, reelle tal.?

3  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.3 Naturlig ordning  Binær søgning (og sortering) kræver at der er en naturlig, total, ordning af elementerne af en given type 7 < 42 ”Hansen” < ”Jensen” 31. dec. 1999 < 1. jan. 2000 < < ?

4  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.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?

5  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.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);  Altså skal alle klasser hvis instanser skal kunne ordnes implementere en metode ala ”lessThan”.  Nogle gode forslag?

6  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.6 En abstrakt klasse?  Hvad med en abstrakt klasse!  public abstract class Comparable {  public abstract boolean lessThan(Object o);  }  public class Name extends Comparable {  public boolean lessThan(Object o) { ...  }

7  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.7 Mulighederne  Med den i hånden kan vi f.eks. skrive en metode som denne:  public static void order( Comparable a, Comparable b ) {  if ( b.lessThan( a ) ) {  Object swap = b;  b = a;  a = swap;  }  Og hvad gør den så?

8  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.8 Analyse  Men – der er en afgørende forskel på vores abstrakte figurklasse og vores abstrakte Comparable.  Nogle bud?

9  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.9 Analyse  Figur klassen implementerede faktisk nogle af metoderne, ikke alle var abstrakte...  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”

10  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.10 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 ComparableDate extends Date implements Comparable {  public boolean lessThan(Object o) { return....; }  }

11  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.11 Nedarvningstyper  Man taler ofte om implementationsnedarvning og interfacenedarvning.  Så Java tilbyder enkel implementations- nedarvning (extends) og multipel interfacenedarvning (implements)  class a extends b implements c,d,e,f,g {... }

12  Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.12 Java2’s Comparable  C:\ioop\jdk\docs\api\java\lang\Comparable.html  Java2’s biblioteker kommer med en indbygget Comparable 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


Download ppt " Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt."

Lignende præsentationer


Annoncer fra Google