Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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

Lignende præsentationer


Præsentationer af emnet: "Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)"— Præsentationens transcript:

1 Interfaces – hvorfor, hvad og hvordan?

2  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

3  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ø

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

5  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

6  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 * *

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

8  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 (  )

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

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

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


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

Lignende præsentationer


Annoncer fra Google