Newest Viewed Downloaded

Frameworks

Frameworks

Plan Frameworks Kollektioner Input/output Nyt designmønster: Decorator

Et objektorienteret framework er en mængde af samvirkende klasser, der repræsenterer genbrugeligt design inden for et specifikt anvendelsesområde. Et framework (ramme, skelet, stel) består typisk af en mængde af abstrakte klasser og grænseflader, der udgør delene i halvfærdige applikationer. Til et framework er knyttet anvisninger på, hvorledes de abstrakte klasser udvides, hvorledes grænsefladerne implementeres, og hvorledes instanser bringes til at samvirke. Frameworks

AnimationApplet (mini-framework til animering) GUI frameworks (AWT, Swing) Collections (kollektioner, objektbeholdere) Input/output (indlæsning og udskrivning) RMI (fjernmetodekald) javaSimulation (diskret simulering) jDisco (kombineret simulering) Eksempler på frameworks Keld Helsgaun

Udvidelighed Ofte inversion af kontrol Designmønstre bruges som byggeblokke Designmønstrene Template Method og Strategy bruges i næsten alle frameworks. Karakteristika

Designmønsteret Template Method Struktur: ... hookMethod1() ... hookMethod2() ... GenericClass templateMethod() hookMethod1() hookMethod2() ConcreteClass hookMethod1() hookMethod2()

Designmønsteret Strategy Struktur: StrategyA algorithm() StrategyB algorithm() Strategy algorithm() Context contextMethod() Strategy er en variant af Template Method: Ved Strategy er hook-metoderne placeret i separate klasser og kaldes ved delegering. Ved Template Method er hook-metoderne placeret i underklasser.

Fuldstændighed (opfylder alle relevante behov) Tilpasningsevne (let at tilpasse en given platform) Effektivitet (tid, plads, udviklingstid) Sikkerhed (håndtering af forkert brug) Enkelhed (let at overskue) Udvidelighed (nye klasser kan tilføjes) Krav til design af frameworks (Booch, 1994)

En kollektion er en samling af objekter. Javas collections er et sæt af grænseflader og klasser, der understøtter lagring og genfinding af objekter i kollektioner. Kollektionerne kan være baseret på forskellige datastrukturer og algoritmer (og dermed have forskellige tids- og pladskompleksitet). Kollektioner En kollektion er et objekt, der fungerer som en beholder for andre objekter. Disse kaldes for kollektionens elementer.

Abstrakte kollektioner En pose (bag, Collection) er en uordnet kollektion, som gerne må indeholde dubletter. En mængde (Set) er en uordnet kollektion, som ikke må indeholde dubletter. En liste (List) er en ordnet kollektion (sekvens), som gerne må indeholde dubletter. En afbildning (Map) er en uordnet kollektion af nøgle-værdi-par. Nøglerne skal være unikke.

Map SortedMap SortedSet Collection Set List Retningslinje for design: Maksimer ensartethed af de fælles aspekter af relaterede klasser og grænseflader Grænseflader for kollektioner java.util.*

Konkrete kollektioner ArrayList LinkedList Map SortedMap TreeMap HashMap Collection Set List SortedSet HashSet TreeSet LinkedHashSet LinkedHashMap IdentityHashMap

boolean add(Object o) boolean addAll(Collection c) void clear() boolean contains(Object o) boolean containsAll(Collection c) boolean isEmpty() Iterator iterator() boolean remove(Object o) boolean removeAll(Collection c) boolean retainAll(Collection c) int size() Object[] toArray(); interface Collection For primitive typer benyttes wrapper-klasser

interface Set extends Collection boolean add(Object o) boolean addAll(Collection c) Ingen nye metoder, men kontrakterne for er ændret (strammet), således at et objekt kun tilføjes, hvis der ikke i forvejen findes en dublet (dette afgøres med equals).

Eksempel på anvendelse af Set Set set = new HashSet(); set.add("cat"); set.add("dog"); int n = set.size(); System.out.println("The set contains " + n + " elements"); if (set.contains("dog")) System.out.println("dog is in the set");

interface List extends Collection void add(int i, Object o) Object get(int i) int indexOf(Object o) int lastIndexOf(Object o) ListIterator listIterator() ListIterator listIterator(int i) Object remove(int i) Object set(int i, Object o) List subList(int i, int j) Nye metoder: Ændrede kontrakter for add(o), addAll(c) og remove(o)

interface Map Object put(Object key, Object value) Object get(Object key) Object remove(Object key) void clear() boolean containsKey(Object key) boolean containsValue(Object value) boolean isEmpty() void putAll(Map m) int size() Set keySet() Collection values() Set entrySet()

Eksempel på anvendelse af Map Map map = new HashMap(); map.put("cat", "kat"); map.put("dog", "hund"); Object val = map.get("dog"); // val er "hund" map.remove("cat"); map.put("dog", "køter"); val = map.get("dog"); // val er "køter" (indholdsadresserbar tabel)

Gennemløb af kollektioner Til gennemløb af kollektioner er defineret to grænseflader: interface Iterator { boolean hasNext(); Object next(); void remove(); } interface ListIterator extends Iterator { boolean hasPrevious(); Object previous(); void add(Object o); int previousIndex(); int nextIndex(); void set(Object o); }

Konkrete iteratorer En konkret iterator fås ved kald af iterator() fra grænsefladen Collection, eller ved kald af listIterator() fra grænsefladen List. Gennemløb af en afbildning (3 syn): Syn Kald Type nøgler keySet().iterator() Object værdier values().iterator() Object indgange entrySet().iterator() Map.Entry

Showing 1 - 20 of 102 items Details

Name: 
05_Frameworks
Author: 
N/A
Company: 
N/A
Description: 
Frameworks
Tags: 
int | public | new | object | string | void | out | static
Created: 
9/28/2009 2:51:37 PM
Slides: 
102
Views: 
5
Downloads: 
4
Rating: 
0


> Comment



Share this presentation
|

Comments

Share this presentation:

|
Sitemap