 Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

1 Frameworks. 2 Plan Frameworks • Kollektioner • Input/output Nyt designmønster: Decorator.
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Forelæsning 3.2 Billedredigering (bl.a. brug af for-løkker)
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper: arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Sweep-algoritmer. DAIMIIntroducerende objektorienteret programmeringsweep.2 Datatypen Sequence Oprette Sequence() Sequence(s, l, h) Kopiere Sequence clone()
Variabler, klassevariabler, identitet og lighed, collections
Introduktion til programmering Repetition - ArrayList.
Checklister Comparable og Comparator. dIntProg, E08Checklister.2 Checkliste for Comparable Antagelse –vi har en liste med elementer af typen T: List lst;
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collections og opremsning Nye typer collections, objektorienteret sweep.
Billedbehandling – processering af digitale billeder.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 3 – Torsdag
Forelæsning Uge 3 – Torsdag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 3 – Torsdag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 3 – Torsdag
emne erklæring SmartArt-grafik med billeder på rød baggrund
Forelæsning Uge 3 – Torsdag
Parametrisering En kort introduktion.
Forelæsning Uge 4 – Torsdag
Forelæsning Uge 3 – Torsdag
Præsentationens transcript:

 Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter

 Jens Bennedsen 2001Multimedie programmering Collection framework Interfaces –ADT der definerer grænsefladen til hvad der kan gøres (men ikke hvordan) –Java interface-klasser Implementation –Realisering af interfaces –… implements … Algoritmer –generiske der kan arbejde på (alle) interfaces

 Jens Bennedsen 2001Multimedie programmering Mange objekter Containerklasser –antag at man skal repræsentere et kartotek over studerende på dette kursus –der er behov for en klasse der kan modellere begrebet student –der er også behov for et særligt containerobjekt der kan opbevare student-objekterne –i Java findes en række forskellige containerklasse –containerklasserne er organiseret i et klassifikationshierarki HashSet impl Set TreeSet impl SortedSet ArrayList impl List LinkedList impl List HashMap impl Map TreeMap impl SortedMap Interfaces (specifikation) Klasser (implementation)

 Jens Bennedsen 2001Multimedie programmering Generel samling Collection har (bl.a.) følgende egenskaber:

 Jens Bennedsen 2001Multimedie programmering Test af Collection import java.util.*; public class CollectionTester { public static void main(String[] args) { Collection c = new …; Studerende s1 = new StuderendeImpl("Peter"); c.add(s1); Studerende s2 = new StuderendeImpl("Helle"); c.add(s2); } Tilføj s2 til c. Parameteren til add er af typen Object, hvilket vil sige at alle objekter kan anvendes For at kunne anvende Collection

 Jens Bennedsen 2001Multimedie programmering Hvordan får man noget ud?

 Jens Bennedsen 2001Multimedie programmering Kodeeksempel Iterator i = c.iterator(); while (i.hasNext()) { Studerende s = (Studerende)(i.next()); Karakter k = s.gennemsnit(); System.out.println(k.getKarakter()); } Få en iterator der kan gennemløbe c Bliv ved sålænge der er flere elementer i gennemløbet Få det i ´peger på og flyt i frem til næste element next returnerer noget af type Object fortæl at det er af typen Studerende

 Jens Bennedsen 2001Multimedie programmering Et andet eksempel på en Collection Billede –En følge af Pixels Picture +pixels():Iterator +neighbourhood(pixel:Pixel):Iterator +neighbourhood(pixel:Pixel,distance:int):Iterator +neighbourhood(pixel:Pixel, ´ innerDist:int,outerDist:int):Iterator +getPixel(x:int,y:int):Pixel Pixel getValue:int setValue(int value) getXPos:int setXpos(int xPos) getYPos: int setYPos(int yPos )

 Jens Bennedsen 2001Multimedie programmering Billedrepræsentation x y pixel (r, s)  [0..255] 0 ~ sort, 255 ~hvid x  [0..width), y  [0..heigth) 0 0 heigth width

 Jens Bennedsen 2001Multimedie programmering Picture, et billede-interface public interface Picture { // returnerer billedets højde public int getHeight(); // returnerer billedets bredde public int getWidth(); // returnerer billedelementet på position (x, y) public Pixel getPixel(int x, int y); // returnerer en iterator til billedelementerne i billedet public Iterator iterator(); // iterator til billedelementerne til og med afstand 1 fra p public Iterator neighbourhood(Pixel p); // iterator til billedelementerne til og med afstand d fra p public Iterator neighbourhood(Pixel p, int d); // iterator til billedelementerne fra og med afstand id // til og med afstand od fra p public Iterator neighbourhood(Pixel p, int id, int od); public void hide(); public void show(); public void repaint(); }

 Jens Bennedsen 2001Multimedie programmering iterator public interface Picture {... // returnerer en iterator til billedelementerne i billedet public Iterator iterator();... }

 Jens Bennedsen 2001Multimedie programmering neighbourhood public interface Picture {... // iterator til billedelementerne til og med afstand 1 fra p public Iterator neighbourhood(Pixel p);... } p

 Jens Bennedsen 2001Multimedie programmering neighbourhood 2 public interface Picture {... // iterator til billedelementerne til og med afstand d fra p public Iterator neighbourhood(Pixel p, int d);... } pd = 2

 Jens Bennedsen 2001Multimedie programmering neighbourhood 3 public interface Picture {... // iterator til billedelementerne fra og med afstand id // til og med afstand od fra p public Iterator neighbourhood(Pixel p, int id, int od);... } pid = 2 od = 3

 Jens Bennedsen 2001Multimedie programmering Simpel billedbehandling Iterator i = picture.iterator(); while ( i.hasNext() ) { Pixel p = (Pixel) i.next(); int oldValue = p.getValue(); int newValue; // calculate newValue // from oldValue p.setPixel(newValue); } picture p

 Jens Bennedsen 2001Multimedie programmering Lighten newValue = oldValue + 30

 Jens Bennedsen 2001Multimedie programmering Lighten, Javakode Iterator i = picture.iterator(); while ( i.hasNext() ) { Pixel p = (Pixel) i.next(); int oldValue = p.getValue(); int newValue; newValue = oldValue + 30; p.setPixel(newValue); } picture p

 Jens Bennedsen 2001Multimedie programmering Invert newValue = oldValue

 Jens Bennedsen 2001Multimedie programmering Invert, Javakode Iterator pixels = picture.iterator(); while ( pixels.hasNext() ) { Pixel p = (Pixel) pixels.next(); int oldValue = p.getValue(); int newValue; newValue = oldValue; p.setPixel(newValue); } p picture

 Jens Bennedsen 2001Multimedie programmering Samarbejde next():java.lang.Object hasNext():boolean 'while' repeat condition iteartor() reversePicture():void

 Jens Bennedsen 2001Multimedie programmering Andre billedoperationer (1) brighten Gør billedet lidt lysere darken Gør billedet lidt mørkere flip Spejlvend billedet omkring den horisontale midterakse mirror Spejlvend billedet omkring den vertikale midterakse invert Inverter hver farveværdi. Dvs. 0 bliver til 255, 1 bliver til 254, 2 bliver til 253, etc. rotateL Rotér billedet 90 grader (90 grader mod uret, venstreom) rotateR Rotér billedet -90 grader (90 grader med uret, højreom) thresholding Sæt alle pixels der højst har tærskelværdien til 0 og alle pixels større end tærskelværdien til 255 Parameter: tærskelværdien thresholding Sæt hver pixel til sort (0), grå (127) eller hvid (255) border Sæt en sort ramme omkring billedet Parameter: rammens bredde smoothing Erstat hvert pixel med gennemsnitsværdien i det 3x3 kvadrat det er centrum i

 Jens Bennedsen 2001Multimedie programmering Andre billedoperationer (2) oilPainting Erstat hvert pixel med den hyppigst forekommende værdi i det nxn kvadrat det er centrum i Parameter: størrelsen på kvadratet (n) fillImage Fyld billedet med en given farve Parameter: farveværdien drawRect Tegn et rektangel ind på billedet Parametre: øverste venstre og nederste højre hjørne samt en farve fillRect Udfyld et givent rektangel i billedet med en farve Parametre: øverste venstre og nederste højre hjørne af rektanglet samt fyldfarven add Læg et billede til et andet Billeder adderes ved at addere værdierne for korresponderende pixels (pas på grænsen på 255) Parameter: et billede subtract Træk et billede fra et andet Parameter: et billede crop Skær et rektangel ud af et billede og lav dette til et nyt billede Parametre: øverste venstre og nederste højre hjørne på crop-rektanglet

 Jens Bennedsen 2001Multimedie programmering Forskellige collections { 4, 5, 1, 7 }  { 7, 5, 1, 4 } { 1, 4, 5, 7 } [ 4, 5, 1, 7 ]  [ 7, 5, 1, 4 ] { (”gigantisk”, ”gigantic”), (”abe”, ”monkey”) } { (”abe”, ”monkey”), (”gigantisk”, ”gigantic”) } Collection –samlebegreb for Set og List Set –uordnet samling objekter SortedSet –sorteret samling objekter List –ordnet samling objekter (rækkefølgen har betydning) –0, 1,..., size()-1 Map –uordnet mængde af par SortedMap –sorteret mængde af par

 Jens Bennedsen 2001Multimedie programmering Implementationer Grønne: Hurtige, fylder mere Gule: Langsommere, fylder mindre

 Jens Bennedsen 2001Multimedie programmering Skift af realisering public void blurPicture() { if (picture != null) { Collection newPixelValues = new ArrayList(); … public void blurPicture() { if (picture != null) { Collection newPixelValues = new LinkedList(); …

 Jens Bennedsen 2001Multimedie programmering Modellering med mængder Collections –ofte har man behov for i en klassemodel at operere med mængder (samlinger) af objekter –eksempler et videoregister en samling af videoer en video er en samling af optagelser en vennekreds er en samling personer UML –i UML beskrives mængder som en egenskab ved relationen mellem to klasser (begreber) VideoOptagelse VennekredsPerson * * Videoregister *

 Jens Bennedsen 2001Multimedie programmering Eksempel: Studenterregister Hvilke egenskaber skal et studenter register have? –void add(Studerende s) s tilføjes til registeret –void delete(Studerende s) s fjernes fra registeret hvis det findes ellers sker ingenting –Studerende find(String navn) Returner den studerende mad navnet navn hvis han findes ellers null public interface StudenterRegister { /**... */ public void add(Studerende s); /**... /* public void delete(Studerende s); /**... */ public Studerende find(String navn); }

 Jens Bennedsen 2001Multimedie programmering Implementation af registeret

 Jens Bennedsen 2001Multimedie programmering Algoritmer Sortering ( Collections.sort(…) ) search ( Collections.binarySearch(list, key)) –Hvordan afgøres om en studerende er mindre end en anden? –Comparable! class StuderendeImpl implements Studerende, Comparable { …

 Jens Bennedsen 2001Multimedie programmering Implementation public class StuderendeImpl implements Studerende, Comparable { … public int compareTo(Object o) { if (gennemsnit.getKarakter()< ((Studerende)o).gennemsnit().getKarakter()) return -1; else if (gennemsnit.getKarakter()== ((Studerende)o).gennemsnit().getKarakter()) return 0; else return 1; }