Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties.

Slides:



Advertisements
Verwante presentaties
Hoofdstuk 14: Exception Handling JAVA -- H14.
Advertisements

Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
Conditional Clauses If-zinnen.
Programmeren in Java met BlueJ
Van domeinklasse tot implementatie
OOP met Java Sessie 1.
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
Het ontwerpen van een klasse
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Klassen en objecten.
AAHA (voor intern gebruik)
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Inleiding Databanken: oefeningen
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Hoofdstuk 4: Klassen definiëren
Server side scripting 1 Webtechnologie Lennart Herlaar.
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
en ‘If-zinnen’ (klik hier als je meteen naar If-zinnen wilt.)
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Inleidend probleem Data structuur (hiërarchie van classes)
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
JAVA -- H81 Exception: ongewone of foutieve situatie->prog. mislukt kan onderschept en afgehandeld worden. = een object van de klasse Throwable, gegenereerd.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Hibernate Object relational mapping
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
DB&SQL8- 1 VBA Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het.
H21. en H22. COLLECTIONS FRAMEWORK. 1. INLEIDING.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 Hoofdstuk 11: Strings en karakters Inleiding In dit hoofdstuk bespreken we de mogelijkheden van de klassen : String StringBuffer Character StringTokenizer.
Hoofdstuk 15: Exception Handling JAVA -- H15.
HOOFDSTUK 7 ARRAYS 7.1.     INLEIDING Array
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoofdstuk 9 Objecten en klassen.
Hoorcollege 9 Jewel Jam The revenge. Hierarchie van game objecten Game object (lijst) Game object (grid) Game object (lijst) Game object.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Deel XIX Security, Servlets & authenticatie 1 Internetapplicaties Deel XIX: Security, Servlets & Authenticatie.
Internetapplicaties - VI Herhaling 1 Internetapplicaties Deel 6: Herhaling.
Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
TOPIC O: Pointers | pag. 1 Pointer = adres in het geheugen, is zelf geen geheugen! Expliciet geheugen aanvragen vóór gebruik.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
In samenwerking met HowITsDone Spring as legacy Hoe innovatie legacy kan worden.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Algoritmiek Class Hierarchies, Inheritance. Hoorcollege 12 - Ma. 20 nov L.M. Bosveld-de Smet.
Inleiding tot programmeren
Datacommunicatie en netwerken
JAVA: een platformonafhankelijke taal
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Informatie beoordelen If else Switch En Wiskunde.
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Lists en interfaces
OOS Object geOrienteerd Software-ontwerp - 5
Implementatie Zoekboom
Transcript van de presentatie:

Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties

Internetapplicaties - IV Collecties2 Boeken/tutorials:  Beginning JSP Web Development, Wrox  Vooral hfdst. 8  Officiële java documentatie 

Internetapplicaties - IV Collecties3 Doelstelling  Geavanceerde java-klassen en java- taalconstructies kunnen gebruiken, voor zover nodig in de praktijk, in het bijzonder i.v.m. JSP-internetapplicaties.  De officiële Javadocumentatie leren gebruiken

Internetapplicaties - IV Collecties4 Inhoudstafel  Collecties  Interfaces  Verzamelingen (Set interface)  Lijsten (List interface)  Mappings (Map interface)  Klassen  ArrayList  Doorlopen van een ArrayList (Iterators)  Sorteren  Comparable  Hashmap

Internetapplicaties - IV Collecties5 Enkele Interfaces en klassen (officiële indeling van Sun)  Collection interface  Set interface  HashSet, TreeSet  List interface  ArrayList, Vector*, Stack*, LinkedList  Map interface  AbstractMap interface (sub-interface van Map)  HashMap, WeakHashMap, TreeMap, HashTable* *=verouderd

Internetapplicaties - IV Collecties6 Verzamelingen (Set interface)  Eigenschappen:  Geen volgorde voorzien (default)  Geen dubbels toegelaten  N.B.: voldoen aan klassieke eigenschappen van verzamelingen zoals geleerd in de lagere school: {1,2,3,3}=={1,2,3}=={3,1,2}

Internetapplicaties - IV Collecties7 Lijsten (List interface)  Eigenschappen:  Wel volgorde voorzien  Wel dubbels toegelaten  N.B.: voldoen aan klassieke eigenschappen van n-tupels (koppels, 3-tallen, 4-tallen) zoals geleerd in de lagere school: (1,2,3,3)≠(1,2,3) en (1,2,3)≠(1,3,2)

Internetapplicaties - IV Collecties8 Mappings ( Map interface)  Objecten worden in koppels bewaard.  Eén object is de unieke sleutel (key)  Het ander object is de waarde (value)  Met behulp van de sleutel, kun je een waarde terugvinden  N.B.: Je kunt het voorstellen als een verzameling van koppels {(“A0001”,”Jefke”), (“B0001”,”Louis”), (“B0001”,”Francine”),…}

Internetapplicaties - IV Collecties9 ArrayList  Is een klasse die de List interface implementeert  Dit betekent dat bepaalde methode-namen van de List interface van een implementatie zijn voorzien.  We vertrekken weerom van een voorbeeldje dat we achteraf van opmerkingen voorzien.  N.B. 1 Voor de duidelijkheid hoor je eigenlijk elk statement op een nieuwe lijn te beginnen.  N.B. 2 Voor grotere systemen hoor je elke identifier een lange betekenisvolle naam te geven.

Internetapplicaties - IV Collecties10 ArrayList: Voorbeeldje  U creëert folder en bestand: c:\jakarta-tomcat \webapps\ hfdst4\classes\be\scvobirm\hulp\ hfdst4\classes\be\scvobirm\hulp\ Leerling.java Leerling.java  U tikt de java-code die volgt in dit bestand in:

Internetapplicaties - IV Collecties11 Leerling.java (deel 1) package be.scvobirm.hulp; import java.util.*; public class Leerling{ public Leerling(String voornaam, String tel){ this.voornaam = voornaam; this.voornaam = voornaam; this.tel = tel; this.tel = tel;} private String voornaam; public String getVoornaam(){ return voornaam; } private String tel; public String getTel(){return tel;}

Internetapplicaties - IV Collecties12 Leerling.java (deel 2) public static void main(String[] args){ Leerling p1, p2; // excuseer: cryptische namen Leerling p1, p2; // excuseer: cryptische namen List pot; List pot; p1 = new Leerling("Piet"," "); p1 = new Leerling("Piet"," "); p2 = new Leerling("Jef"," "); p2 = new Leerling("Jef"," "); pot = new ArrayList(); pot.add(p1); pot.add(p2); pot = new ArrayList(); pot.add(p1); pot.add(p2); printLeerlingen(pot); printLeerlingen(pot);} public static void printLeerlingen(List list){ Leerling pp; Leerling pp; for(int i=0 ; i < list.size() ; i++ ){ for(int i=0 ; i < list.size() ; i++ ){ pp = (Leerling) list.get(i); pp = (Leerling) list.get(i); System.out.println("Voornaam: "+ pp.getVoornaam()); System.out.println("Voornaam: "+ pp.getVoornaam()); }}}

Internetapplicaties - IV Collecties13 Compilatie naar bytecode  Compilatie in een dosbox: c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>javac be\scvobirm\hulp\Leerling.java c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>javac be\scvobirm\hulp\Leerling.java  Uitvoeren van de bytecode: c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>java be.scvobirm.hulp.Leerling c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>java be.scvobirm.hulp.Leerling

Internetapplicaties - IV Collecties14 Resultaat

Internetapplicaties - IV Collecties15 Opmerkingen  import java.util.*; betekent: alle klassen in dit pakket. We haddden ook ArrayList ipv * kunnen importeren.  List pot; pot = new ArrayList(); pot = new ArrayList(); pot ondersteunt de List interface Maar er wordt een ArrayList object aan toegekend. Nu kan pot alleen de methoden van ArrayList die ook in List te vinden zijn, oproepen !! pot is nu een leeg ArrayList-object

Internetapplicaties - IV Collecties16 Opmerkingen  p1 = new Leerling("Piet"," "); p1 wordt gecreëerd met al zijn attributen als parameter. Er zijn geen public setters voorzien in Leerling.java  pot.add(p1); pot.add(p2);  Een List-object kan als elementen objecten van het type Object bevatten. Leerling is een subklasse van Object.  add behoort tot de List interface. Het voegt het object in de parameter toe aan de lijst.  p1 is een Leerling en dus een Object en mag dus toegevoegd worden.

Internetapplicaties - IV Collecties17 Opmerkingen  for(int i=0 ; i < list.size() ; i++)  size() behoort ook to de List interface. Het geeft het aantal elementen in de lijst.  pp = (Leerling) list.get(i);  get(i) geeft het elemeten op positie i terug. (tellen vanaf 0). get(int) behoort ook tot de List interface.  Collecties bevatten objecten van de klasse Object. Ze moeten geDOWNCAST worden naar specifiekere subklassen.  list.get(i) moet gedowncast worden naar Leerling alvorens ze kan toegekend worden aan pp, die van de klasse Leerling is.

Internetapplicaties - IV Collecties18 ArrayList: extra methoden // Deze code komt NIET uit het voorbeeldje: ArrayList ar = new ArrayList; ar.add(“A”); // pos 0 ar.add(“B”); // pos 1 // -> A, B ar.add(1,“C”); // “B” schuift nu op naar pos 2 // ->A, C, B Ar.remove(0); // -> C, B

Internetapplicaties - IV Collecties19 Iteratoren: doorlopen van lijsten … public static void printMetIterator(List list){ Iterator iterator = list.iterator(); Iterator iterator = list.iterator(); Leerling pp; Leerling pp; while(iterator.hasNext()){ while(iterator.hasNext()){ pp = (Leerling) iterator.next(); pp = (Leerling) iterator.next(); System.out.println("Voornaam: "+ pp.getVoornaam()); System.out.println("Voornaam: "+ pp.getVoornaam()); }}

Internetapplicaties - IV Collecties20 Opmerkingen  Iterator iterator = list.iterator();  Iterator is een interface. De iterator() method geeft een concreet iterator-object terug waarmee de lijst kan doorlopen worden.  Een iterator houdt intern een ‘pointer’ naar het ‘huidige’ object in de lijst bij samen met een referentie naar de lijst in kwestie. De pointer start juist voor het eerste element.  pp = (Leerling) iterator.next();  next(): Verschuift de ‘pointer’ 1 positie verder en geeft het object dat daar staat terug. geeft het object dat daar staat terug.  while( iterator.hasNext() )  hasNext(): geeft true als next() een object kan teruggeven.  Meer info:

Internetapplicaties - IV Collecties21 Sorteren m.b.v. Comparable  Om te kunnen sorteren, moeten we weten waarop we willen sorteren  Als we de Comparable interface ondersteunen, kunnen we gebruik maken van standaard sorteermethoden, zonder de sortering zelf te schrijven.  Comparable interface bevat:  int CompareTo(Object)  Volgende methods behoren tot Object. Je kunt ze best overschrijven als je van plan bent Comparable te implementeren:  boolean equals(Object)  Int hashCode()

Internetapplicaties - IV Collecties22 Comparable interface: te implementeren methoden  int CompareTo(Object o)  Je moet ZELF code schrijven om this met o te vergelijken  Geef 1 terug als this groter is dan o  Geef -1 terug als this kleiner is dan o  Geef 0 terug als ze ‘gelijk’ zijn  boolean equals(Object o)  Spreekt voor zich. Geef true asa this is ‘gelijk’ aan o  Hoort strikt genomen NIET tot Comparable wel tot Object  int hashCode()  Genereer unieke code  Hoort strikt genomen NIET tot Comparable, wel tot Object

Internetapplicaties - IV Collecties23 Comparable: uitbreiding voorbeeldje public class Leerling implements Comparable{ … public int compareTo(Object o){ Leerling leerling = (Leerling) o; Leerling leerling = (Leerling) o; return ( this.getVoornaam().compareTo(leerling.getVoornaam()) ); return ( this.getVoornaam().compareTo(leerling.getVoornaam()) );} public boolean equals(Object o){ if (! (o instanceof Leerling) ) return false; return false; Leerling leerling = (Leerling) o; Leerling leerling = (Leerling) o; return ( this.getVoornaam().equals(leerling.getVoornaam()) ); } public int hashCode(){ return this.getVoornaam().hashCode(); return this.getVoornaam().hashCode();}

Internetapplicaties - IV Collecties24 Comparable: uitbreiding voorbeeldje (vervolg) public static void main(String[] args){ Leerling p1, p2; List pot; Leerling p1, p2; List pot; p1 = new Leerling("Piet"," "); p1 = new Leerling("Piet"," "); p2 = new Leerling("Jef"," "); p2 = new Leerling("Jef"," "); pot = new ArrayList(); pot.add(p1); pot.add(p2); pot = new ArrayList(); pot.add(p1); pot.add(p2);… if ( p1.compareTo(p2) > 0) if ( p1.compareTo(p2) > 0) System.out.println(p1.getVoornaam() + System.out.println(p1.getVoornaam() + " komt na " + p2.getVoornaam() ); " komt na " + p2.getVoornaam() ); if ( p1.compareTo(p2) < 0) if ( p1.compareTo(p2) < 0) System.out.println(p1.getVoornaam() + " komt voor " + p2.getVoornaam() ); " komt voor " + p2.getVoornaam() );}

Internetapplicaties - IV Collecties25 Opmerkingen  (o instanceof Leerling) Test of o kan toegekend worden aan een variabele van type Leerling. Als o Leerling of een subklasse van Leerling heeft, dan resulteert de expressie in true, anders In false.  Bij equals() en hashCode() delegeren we gewoon naar de voornaam datafield.

Internetapplicaties - IV Collecties26 Sorteren via de Collections hulpklasse  Collections is een hulpklasse die interessante static functies bevat, o.a. om lijsten mee te sorteren.  Collections.sort(List list) heeft blijkbaar een parameter die de List interface ondersteunt. ALLE elementen in de lijst moeten de Comparable interface ondersteunen.

Internetapplicaties - IV Collecties27 Collections.sort: uitbreiding voorbeeldje public static void main(String[] args){ … Collections.sort(pot); Collections.sort(pot); System.out.println( System.out.println( "Nu is alles gesorteerd"); "Nu is alles gesorteerd"); printMetIterator(pot); printMetIterator(pot);}

Internetapplicaties - IV Collecties28 HashMap  Is een klasse die de Map interface implementeert  Dit betekent dat bepaalde methode-namen van de Map interface van een implementatie zijn voorzien.  get(Object key) getObject getObject  put(Object key, Object value) putObject putObject  …  We vertrekken weerom van een voorbeeldje dat we achteraf van opmerkingen voorzien. (zie volgende les)