Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,

Lignende præsentationer


Præsentationer af emnet: "Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,"— Præsentationens transcript:

1 Collectionklasser Klassifikation og anvendelse

2 Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær, initialiser Den udvidede for-løkke dIntProg, E12

3 iTunes – et motiverende eksempel Track Playlist

4 iTunes klassemodel dIntProg, E12 Track String getName() String getArtist() int getTime() Player void add(PlayList p) List find(String q) void print() * PlayList String getName() void addTrack(Track t) void print() Track shortestTrack() Track longestTrack() List search(String q) List longerThan(int r) void shuffle() * *  Associeringer Vilkårligt mange objekter af den pågældende type Playlist Track

5 Endnu et eksempel En adressebog hvor man kan: –Tilføje kontakter (personer) – så mange som man vil –Udskrive adressebogen –Finde et telefonnummer, givet et navn –Finde gennemsnitsalderen på kontakterne Problem –Hvordan kan jeg huske på personerne? –Hvordan realiseres en-til-mange relationen? dIntProg, E12 AddressBook void addPerson(Person p) void print() String getPhone(String name) int averageAge() Person String getName() String getNumber() int getAge() ? *

6 dIntProg, E12 Collections - Samlinger af objekter Objektreferencer –for at holde fast i et objekt skal der bruges en objektreference (en variabel) –for at holde fast i 10.000 objekter skal der bruges 10.000 objektreferencer... Collections –en særlig slags objekter der kan opbevare (referencer til) objekter –f.eks. ArrayList java.util –en pakke der bl.a. indeholder klasserne i Javas såkaldte collection framework

7 dIntProg, E12 Eksempel: Liste af personer public void testMethod1() { Person tp; ArrayList l= new ArrayList (); tp= new Person( "Jeppe", "89425665", 33 ); l.add(tp); tp= new Person( "Ole", "32789878", 28 ); l.add(tp); tp= new Person( "Linda", "90023234", 21 ); l.add(tp); }

8 dIntProg, E12 Objektmodel for personeksempel l: ArrayList 0 1 2 size() = 3 name: number: age: 21 ”Linda” ”90023234” name: number: age: 33 ”Jeppe” ”89425665” name: number: age: 28 ”Ole” ”32789878” tp:

9 Realisering af en-til-mange - UML dIntProg, E12 AddressBook ArrayList persons void addPerson(Person p) void print() String getPhone(String name) int averageAge() Person String getName() String getNumber() int getAge() *

10 Realisering af en-til-mange - Kode For at realisere en en-til-mange relation i koden skal man : 1.Importere en objekttype (f.eks. en liste) import java.util.ArrayList; 2.Erklære en feltvariablen af passende type private ArrayList persons; 3.Initialisere feltvariablen i konstruktøren public AddressBook(){ persons = new ArrayList (); } dIntProg, E12

11 Collection ArrayList –lister (sekvenser) af objekter af typen E public class ArrayList { boolean add(E o){} void add(int index, E element){} E get(int index){} boolean contains (Object o){} boolean isEmpty(){} Iterator iterator(){} boolean remove(Object o){} int size(){}... } Se JavaDoc...

12 dIntProg, E12 Gennemløb med udvidet for-løkke public void testMethod1() { Person tp; List pl= new ArrayList (); tp= new Person( ”Jeppe”, ”89525665”, 33 ); pl.add(tp); tp= new Person( ”Ole”, ”32789878", 28 ); pl.add(tp); tp= new Person( ”Linda”, ”90023234”, 48 ); pl.add(tp); // for alle personer p i pl... for ( Person p : pl ) { System.out.println(p); }

13 dIntProg, E12 Eksempel: gennemsnitsalder /** * return the average age of the people in the addressbook */ public int averageAge() { ? } Specifikation (hvad)

14 dIntProg, E12 Implementation (1) /** * return the average age of the people in the address book */ public int averageAge() { return ageSum() / persons.size(); } Implementation (hvordan) /** * return the sum of the age of the people in the address book */ private int ageSum() { ? }

15 dIntProg, E12 Implementation (2) /** * return the sum of the age of the people in the address book */ private int ageSum() { int result= 0; // accumulate the sum of... in variable result return result; }

16 dIntProg, E12 Implementation (3) /** * return the sum of the age of the people in the address book */ private int ageSum() { int result= 0; for (Person p : persons) { result= result + p.getAge(); } return result; }

17 Collections, recap… Motivation –hvorfor bruge collections? Realisering af en-til-mange –Importer, erklær, initialiser Den udvidede for-løkke dIntProg, E12


Download ppt "Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,"

Lignende præsentationer


Annoncer fra Google