Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

 Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter.

Lignende præsentationer


Præsentationer af emnet: " Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter."— Præsentationens transcript:

1  Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18  Jens Bennedsen 2001Multimedie programmering Invert newValue = 255 - oldValue

19  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 = 255 - oldValue; p.setPixel(newValue); } p picture

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

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

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

23  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 0 1 2 3

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

25  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(); …

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

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

28  Jens Bennedsen 2001Multimedie programmering Implementation af registeret

29  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 { …

30  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; }


Download ppt " Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter."

Lignende præsentationer


Annoncer fra Google