automatische garbage collection klein object georiënteerd betrouwbaar

Slides:



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

JAVA1 H 16. MULTITHREADING. 1. INLEIDING. Threads: delen van het programma die in concurrentie met elkaar gelijktijdig in executie gaan. Thread is een.
Van domeinklasse tot implementatie
OOP met Java Sessie 1.
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.
Het type int Tekenen met Java operatoren
JAVA -- H101 Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu MENU’S 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2.
Voor VBA programmeurs Maurice de Beijer.  Maurice de Beijer.  The Problem Solver.  Visual Basic MVP.  Blog: theproblemsolver/default.aspxhttp://msmvps.com/blogs/
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Klassen en objecten.
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.
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
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
Server side scripting 1 Webtechnologie Lennart Herlaar.
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
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.
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.
Hoofdstuk 8 Objecten en klassen.
JAVA -- H81 Exception: ongewone of foutieve situatie->prog. mislukt kan onderschept en afgehandeld worden. = een object van de klasse Throwable, gegenereerd.
Checked exceptions: FileNotFoundException, IOException, …
Hoofdstuk 2 : Inleiding tot Java Applicaties
JAVA --- H71 thread= draad in het programma (pad) gewone applets = één thread, volgt één pad multithreading = er worden twee of meer paden gestart, die.
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.
Oefeningen Hoofdstuk 3.
Hibernate Object relational mapping
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
6.1 Inleiding HOOFDSTUK 6 METHODEN
JAVA1 Hoofdstuk 12: Grafische mogelijkheden en Java2D.
Hoofdstuk 2: Inleiding tot Java Applicaties
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
HOOFDSTUK 7 ARRAYS 7.1.     INLEIDING Array
Hoofdstuk 3: Inleiding tot Java Applets
JAVA1 H 9. OBJECTGEORIENTEERD PROGRAMMEREN: OVERERVING 1. INLEIDING Wat is overerving (inheritance)? Overerving is een mechanisme waarbij software opnieuw.
JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
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.
Java GUI nJava is platform-onafhankelijk nLook&feel past zich aan aan het platform new FileDialog(……).show();
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
1 Syntax JavaLogo. 2 Hoofdstuk 1 Tekenen in Java.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
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,
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,
Inleiding tot programmeren
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
JAVA: een platformonafhankelijke taal
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 12 Ontwerp van programma’s. Ontwerp van de GUI nStandaard in Applets: alle met add toegevoegde componenten komen naast elkaar (totdat de regel.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Voorbeeld: Simulatie van bewegende deeltjes
Transcript van de presentatie:

automatische garbage collection klein object georiënteerd betrouwbaar ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar JAVA

architectuurneutraal portable goede performance multithreaded ONTWERPDOELEN (2) JAVA IS: veilig architectuurneutraal portable goede performance multithreaded JAVA

Virtuele machine in browser Java-bytecode Virtuele machine in browser JAVA

VIRTUELE MACHINE Schematisch: Java byte-code Java-programma Compilatie Computer die bezocht wordt Java byte-code Java-programma Compilatie Internet Uw computer verificatie Java virtuele machine interpreter Browser omgeving Java byte-code verwerking JAVA

<TITLE> Invoer </TITLE> </HEAD> <BODY> HTML-CODE <HTML> <HEAD> <TITLE> Invoer </TITLE> </HEAD> <BODY> <APPLET CODE= “InvoerApplet.class” WIDTH=426 HEIGHT=266> </APPLET> </BODY> </HTML> JAVA

APPLETS VS. APPLICATIES cfr. programma’s in C++ uitvoeren mits JVM vb. : Hot Java Browser Applets: cliënt interactiviteit op webpagina’s JAVA

APPLICATIE import java.lang.*; public class Som { public static void main( String[] args) { int x = 2, y = 3, som; som = x * x + y * y; System.out.println("Som = "+ som); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) {}; JAVA

UITVOERING APPLICATIE JAVA

APPLET import java.applet.*; import java.awt.*; public class Applet1 extends Applet { private Font f = new Font(“TimesRoman”,Font.BOLD,36); public void paint(Graphics g) { g.setFont(f); g.setColor(Color.red); g.drawString(“Een bijzonder eenvoudige applet”,20,150); } JAVA

UITVOERING APPLET JAVA

componentenpalet (Component Tool Palette) VISUAL CAFE componentenpalet (Component Tool Palette) ontwerpscherm (Form Designer) projectvenster (Project Window) broncode-editor (Source Editor) eigenschappenlijst (Property List) Applet-viewer JAVA

VOORBEELD 1 import java.awt.*; import java.applet.*; public class WelkomApplet extends Applet { public void init() { setLayout(null); setSize(426,266); bt_Welkom = new java.awt.Button(); bt_Welkom.setLabel("Spreek!"); bt_Welkom.setBounds(72,60,191,61); bt_Welkom.setBackground(new Color(12632256)); add(bt_Welkom); JAVA

VOORBEELD 1(vervolg) lbl_Welkom = new java.awt.Label(" "); lbl_Welkom.setBounds(72,132,190,48); add(lbl_Welkom); SymMouse aSymMouse = new SymMouse(); bt_Welkom.addMouseListener(aSymMouse); } Java.awt.Button bt_Welkom; java.awt.Label lbl_Welkom; JAVA

VOORBEELD 1 (vervolg) class SymMouse extends java.awt.event.MouseAdapter { public void mouseClicked(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == bt_Welkom) btWelkom_MouseClick(event); } void btWelkom_MouseClick(java.awt.event.MouseEvent event) { lbl_Welkom.setText("Welkom bij Visual Café!"); JAVA

RESULTAATSCHERM JAVA

INGREDIENTEN VAN EEN APPLET subklasse van de standaardklasse Applet moet zich houden aan een aantal veiligheidsristricties geen main()-methode of ander beginpunt wordt uitgevoerd door een browser of applet-viewer moet public gedeclareerd zijn JAVA

LEVENSVERLOOP VAN EEN APPLET creatie van een instantie d.m.v. de constructor Applet() de applet wordt geïnitialiseerd door de functie init() de applet wordt gestart door de functie start() de methode paint() wordt automatisch uitgevoerd de applet wordt indien nodig hertekend door repaint() bij het stopzetten, wordt de functie stop() aangeroepen het applet-object wordt vernietigd door de functie destroy() JAVA

REGELS VOOR NAMEN IN JAVA (1) kleine letters, hoofdletters, cijfers, de underscore en het dollarteken willekeurige lengte betekenisvolle namen nooit beginnen met een cijfer! namen van klassen beginnen ALTIJD met een hoofdletter JAVA

REGELS VOOR NAMEN IN JAVA (2) namen van objecten en functies beginnen ALTIJD met een kleine letter bestaat een naam van een object of een functie uit meer dan 1 woord , dan begint het eerste woord met een kleine letter en het volgende woord met een hoofdletter vbn. nieuwSaldo, percentageEersteSchijf JAVA

public class Applet2 extends Applet { public void init() { TEKENEN MET JAVA (1) public class Applet2 extends Applet { public void init() { setBackground( Color.yellow ); } public void paint( Graphics g ) { // een driehoek in het blauw g.setColor( Color.blue ); g.drawLine(0,0,100,200); g.drawLine(100,200,0,200); g.drawLine(0,200,0,0); JAVA

//een rechthoek van 100 breed bij 50 hoog op positie (260,10) TEKENEN MET JAVA (2) //een rechthoek van 100 breed bij 50 hoog op positie (260,10) g.setColor(Color.green); g.drawRect(260,10,100,50); // een ellips van 100 bij 50 op positie (260,80) in het wit g.setColor(Color.white); g.drawOval(260,80,100,50); // een gevulde rechthoek en ellips in het paars g.setColor(Color.magenta); g.fillRect(130,10,100,50); g.fillOval(130,80,100,50); JAVA

// een rechthoek met afgeronde hoeken in het rood TEKENEN MET JAVA (3) // een rechthoek met afgeronde hoeken in het rood g.setColor(Color.red); g.drawRoundRect(130,150,100,70,40,40); //ook fillRoundRect(); // een boog en een taartpunt (= gevulde boog) in het grijs g.setColor(Color.gray); g.drawArc(230,200,188,100,15,75); g.fillArc(260,200,60,40,15,75); } JAVA

actionPerformed(ActionEvent e) EVENTS Schematisch: Event Event-object Action ActionEvent De methode Event-afhandeling actionPerformed(ActionEvent e) JAVA

import java.applet.Applet; import java.awt.event.*; EVENTS - VOORBEELD 1 (1) import java.awt.*; import java.applet.Applet; import java.awt.event.*; public class Schuifbalk extends Applet implements AdjustmentListener { private Scrollbar slider; private int sliderValue = 0; public void init() { slider = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100); add(slider); slider.addAdjustmentListener(this); } JAVA

public void paint(Graphics g) { EVENTS - VOORBEELD 1 (2) public void paint(Graphics g) { g.drawString(“Current value is “ + sliderValue,100,100); } public void adjustmentValueChanged (AdjustmentEvent e) sliderValue = slider.getValue(); // haalt de momentele waarde van de schuifbalk op repaint(); // paint() wordt terug aangeroepen JAVA

public class Safe extends Applet implements ActionListener EVENTS - VOORBEELD 2 (1) public class Safe extends Applet implements ActionListener { private int guess = 0, combination = 321; private Button btnOne, btnTwo, btnThree, btnAgain; public void init() { btnOne = new Button(“1”); add(btnOne); btnOne.addActionListener(this); btnTwo = new Button(“2”); add(btnTwo); btnTwo.addActionListener(this); btnThree = new Button(“3”); add(btnThree); btnThree.addActionListener(this); btnAgain = new Button(“Try again”); add(btnAgain); btnAgain.addActionListener(this); } JAVA

public void paint(Graphics g) EVENTS - VOORBEELD 2 (2) public void paint(Graphics g) { if (guess == combination) g.drawString(“Unlocked”,50,50); else g.drawString(“Locked”,50,50); } public void actionPerformed (ActionEvent event) { if (event.getSource() == btnOne) guess = guess*10 + 1; else if (event.getSource() == btnTwo) guess = guess*10 + 2; else if (event.getSource() == btnThree) guess = guess*10 + 3; else if (event.getSource() == btnAgain) guess = 0; repaint(); JAVA

VOORBEELD 3 - UITVOER JAVA

samenvoegen van verschillende files tot 1 JAR-file (1.1) JAR- files samenvoegen van verschillende files tot 1 JAR-file (1.1) snelle transportatie over het net (gecompresseerde file) ARCHIVE-attribuut van de <APPLET>-tag gebruiken: <APPLET code = "voorbeelden.applet.ColorScribble.class” ARCHIVE = "Scribbleapplet.jar" width = 400 height = 400> <PARAM name = "foreground" value = "FF0000"> <PARAM name = "background" value = "CCFFCC"> </APPLET> het ARCHIVE-attribuut vervangt het CODE-attribuut niet! JAVA

3 soorten : instantievar., klassevar., lokale variabelen VARIABELEN (H. 4) 3 soorten : instantievar., klassevar., lokale variabelen variabelen, die naar een object verwijzen = REFERENTIES Voorbeeld: Font f; // = null, als f een member is f = new Font(“TimesRoman”,Font.BOLD,20); variabelen van een primitief type (GEEN objecten) byte boolean 1b char short 2b int float 4b double long 8b JAVA

een toekenningsopdracht = een wijzertoekenning (b2 = b1;) REFERENTIETYPEN een toekenningsopdracht = een wijzertoekenning (b2 = b1;) OPL = een methode toevoegen aan de klasse, die een diepe kopie maakt (b2 = b1.kopie();) een vergelijking = een wijzervergelijking ( if (b2 == b1) ...) OPL1 = de methode equals uit de moederklasse Object overridden ( if (b1.equals(b2))... ) OPL2 = een methode uitwerken voor waardevergelijking in de betreffende klasse ( if (b1.isGelijk(b2)) ... ) JAVA

PRIMITIEVE TYPE : int en Integer (1) geen controle op de grenzen (cirkel) dezelfde rekenkundige operatoren als in C++ Integer = verpakkingsklasse (java.lang) 1 member, een int, die niet wijzigbaar is (private) 2 constanten : MAX_VALUE en MIN_VALUE nuttige functies: Integer obj = new Integer(3); // of new Integer(“3”); int i = obj.intValue(); // terug uitpakken // invoer van een getal: String s = txtInvoer.getText(); int j = Integer.parseInt(s); // static functie! JAVA

PRIMITIEVE TYPE : int en Integer (2) // uitvoer van een getal in een tekstvak: txtUitvoer.setText(Integer.toString(j)); // of txtUitvoer.setText(String.valueOf(j)); // uitvoer naar het grafische scherm van j: g.drawString (“Het resultaat is “ + j,10,10); // uitvoer naar het scherm van een object van de klasse Datum: g.drawString(“Vandaag is het “ + vandaag); // mits in de klasse Datum de volgende functie staat: public String toString() { return dag + “/” + maand + “/” + jaar; } JAVA

PRIMITIEVE TYPE : double en Double een constante van de vorm 3.5 is een double delen door 0 is toegelaten -> Infinity geen automatische conversie van een hoger naar een lager type : float f = 10.3; geeft een compilatiefout OPL = suffix f gebruiken: 10.3f alle operatoren voor integers kunnen hier ook gebruikt worden // invoer van een getal: String s = txtInvoer.getText(); Double hulp = Double.valueOf(s); // static functie! double getal = hulp.doubleValue(); // of double getal = Double.parseDouble(s); // JDK 1.2!!! JAVA

tussen apostrofs: char ch = ‘A’; CONSTANTEN Karakterconstanten tussen apostrofs: char ch = ‘A’; UNICODE - 16 bits: \udddd = Unicode-teken, bevat bijna alle bestaande alfabetten van moderne talen (cultuuronafh.) escape codes, bv. \u000A = ‘\n’ Boole-constanten : true en false String-constanten = OBJECT van de klasse String (geen array) Numerieke constanten final int AANTAL = 5; constanten in een klasse static declareren (vb. Math.PI) JAVA

relationele operatoren: <, <=, >, >=, ==, != HERHALINGEN relationele operatoren: <, <=, >, >=, ==, != logische operatoren: &&, ||, ! Alle logische expressies MOETEN true of false opleveren!!! NIET : if (i) .... ; while (logische expressie) statement do statement while (logische expressie); for (init-expr.;log. expr.;incr. expr.) statement een break- of een continue-statement in een lus komma-operator JAVA

if (logische expressie) statement BESLISSINGEN if (logische expressie) statement if (logische expressie) statement1 else statement2 switch-statement (VERGEET de break niet na elke case!) switch (discrete var.) { case waarde1: statement1 break; case waarde2: statement2 default: statement } conditionele expressie : x = 3 * (a > b? a : b ) + 100; JAVA

CONVERSIE Promotie en casting: impliciete conversie int a= 10; double b = 10.2; b += a; expliciete conversie int i = (int) 3.14; JAVA

class <naam van de klasse> SPECIFICATIE VAN EEN KLASSE (eventueel) public (eventueel) final (eventueel) abstract class <naam van de klasse> (eventueel) extends <naam van de moederklasse> (eventueel) implements <lijst van interfaces> { <opsomming van eigenschappen en methoden> } JAVA

VOORBEELD - HAPPER - UITVOER JAVA

ARRAYS - declaratie en initialisatie Arrays in Java zijn objecten! Bevat waarden van een elementair type of een object int[] a; a= new int[10]; OF int a[]; int[] a = new int [10]; JAVA

ARRAYS - declaratie en initialisatie Een rij van objecten van de klasse Punt: Punt [] r; r = new Punt[10]; // r is een referentie naar een rij van 10 referenties, die = null for (int i = 0;i < 10;i++) r[i] = new Punt(i+1,i+2); JAVA

ARRAYS - declaratie en initialisatie a en r zijn referenties naar een array met 10 elementen Default-initialisatie op 0 en op null De lengte hoeft geen constante te zijn, doch de waarde moet op voorhand gekend zijn: double[] b; int n; //toekennen van een waarde aan n b = new double[n]; JAVA

ARRAYS - declaratie en initialisatie length: public attribuut dat de lengte weergeeft b.length (kan niet meer gewijzigd worden) Declaratie en initialisatie kan gelijktijdig: String[] s= {’’ Jan ’’, ’’Stijn ’’, ’’Steven ’’} Automatische controle op de lengte (vs. C++) JAVA

ARRAYS - voorbeeld - veelhoekapplet  public class VeelhoekApplet extends Applet { private Polygon pijl, pijl2; private int[] xRij = { 50, 100, 100, 150, 100, 100, 50, 50 }; private int[] yRij = { 100, 100, 60, 125, 190, 150, 150, 100 }; private final int AANTALPUNTEN = xRij.length; public void init() { pijl = new Polygon( xRij, yRij, AANTALPUNTEN ); for( int i = 0; i < AANTALPUNTEN; i++ ) xRij[ i ] += 150; pijl2 = new Polygon( xRij, yRij, AANTALPUNTEN ); } public void paint( Graphics g ) { g.drawPolygon( pijl ); g.setColor( Color.blue ); g.fillPolygon( pijl2 ); } JAVA

ARRAYS - referentiekarakter Referentiekarakter bij toekenning Stel: int[] a = new int[10], b; a[1] = 1; b = a;// a en b wijzen naar dezelfdearray! b[1] = 10; a[2] = 20; Om in b enkel dezelfde waarden te hebben: kopiëren!! For-lus Arraycopy-methode van de klasse System JAVA

ARRAYS - referentiekarakter Opgelet : eerst een creatie met new voor b Referentiekarakter bij vergelijking functie equals() uit de moederklasse overridden zelf een functie ontwerpen JAVA

ARRAY als argument van een methode Uitvoer StaafdiagramApplet: JAVA

ARGUMENTEN VAN EEN METHODE Algemeen: Objecten: steeds BY REFERENCE Primitieve types: steeds BY VALUE Gevolg: int i = 5, j = 7; verwissel (i, j) ; // dit gaat niet! Oplossing: Eigen wrapperklasse maken JAVA

EIGEN WRAPPERKLASSE (1) public class IntObj { public static void main (String[] args) { MijnInt i = new MijnInt(5), j = new MijnInt(7) ; verwissel(i, j) ; System.out.println("Na verwisseling is : ") ; System.out.println("i = " + i.x) ; System.out.println("j = "+ j.x) ; } static void verwissel( MijnInt a, MijnInt b) { int h = a.getX() ; a.setX(b.getX()) ; b.setX(h); } JAVA

EIGEN WRAPPERKLASSE (2) class MijnInt { private int x ; MijnInt( int i) x = i ; } int getX() { return x;} void setX(int n) { x = n;} JAVA

Array als terugkeerwaarde van een methode int [] f() { int [] a = new int [10]; ..... return a; } JAVA

TWEEDIMENSIONALE ARRAYS int [ ] [ ] sales = new int [4] [7] ; String [ ] [ ] schaakbord = new String [8] [8 ] ; sales [3] [2] = 99; schaakbord [2] [7] = "paard"; // geen new nodig! int [ ] [ ] tabel = {{1, 0}, {0, 1, 0}} ; int aantalRijen = tabel.length ; int aantalKolRij0 = tabel[0].length ; // de lengte van rij 0 // tabel[0] refereert naar de eerste rij JAVA

STRINGS - declaratie en initialisatie Strings zijn objecten! Doch new is overbodig! Voorbeeld: String tekst; tekst = “Jan”; Concatenatie: + of zelfs += (impliciete aanroep van concat()) concat-methode: public String concat(String str) JAVA

Conversie van een getal naar een String Via lege string: s= “” + 123; STRINGS - conversie Conversie van een getal naar een String Via lege string: s= “” + 123; Via static-methode valueOf() uit de String klasse int i = 321; String is = String.valueOf(i); double x = 3.14; String sx = String.valueOf(x); Opm: lengte van een string te bepalen via methode length(): int i = sx.length(); // GEEN static-methode! JAVA

STRINGS EN REFERENTIES String-objecten gecreëerd via new en constructor zijn ECHTE referenties naar objecten: String s1= new String(“Klaar!”), s2= new String (“Klaar!”); s1 s2 De test s1.equals(s2) levert true op! De test s1 == s2 levert false op! Klaar ! Klaar! JAVA

STRINGS EN REFERENTIES String ‘variabelen’ gecreëerd zonder new, komen terecht in een pool van strings: String s1=“Klaar!”, s2=“Klaar!”; JAVA springt zuinig om met String-objecten! Nu blijken s1 en s2 ook gelijk te zijn! s1,s2 °”Klaar !” °”Daag” °”Jan” JAVA

STRINGS EN REFERENTIES Het statement s2 = “Niet klaar!”; zorgt ervoor dat in beide gevallen s2 gaat wijzen naar een andere string! Besluit: een string is niet-modificeerbaar (=constante)  bij elke aanroep van een string-methode of string- operatie wordt een nieuwe string aangemaakt (de oude is afval) of wordt gebruik gemaakt van de klasse StringBuffer (bevat methoden om strings te wijzigen)!! Voorbeelden: s = s.replace(‘f’,’p’); // NIET : s.replace(‘f’,’p’); s = s.toUpperCase(); JAVA

STRINGS EN REFERENTIES String uit = “TIN” + 3 + ‘A ‘; met uitsluitend stringmethoden: String uit = “TIN”.concat(String.valueOf(3)).concat(String.valueOf(‘A’)); Wanneer voor elk tussenresultaat een nieuwe string wordt aangemaakt, zou de compiler erg zorgeloos met geheugen omspringen -> de klasse StringBuffer: String uit = new StringBuffer().append(“TIN”). append(3).append(‘A’).toString(); JAVA

Klasse String : nuttige functies char charAt (int index); // om een karakter uit de string // te halen; de notatie str[i] bestaat niet in Java! int length(); // lengte = logische lengte String replace (char c1, char c2); String substring (int beginIndex); String substring (int beginIndex,int eindIndex); String toLowerCase(); String toUpperCase(); Enz... JAVA

Klasse StringBuffer : nuttige functies 3 constructoren: StringBuffer() : cap.=16 karakters ( = fysische lengte) , length = 0 StringBuffer(l): cap. = l karakters, length = 0 StringBuffer(String) : cap. = length = lengte van de string append(...) : toevoegen van een double, float, boolean, char, int, long, Object, char[] of een String aan een StringBuffer insert(...,...) : toevoegen op een bepaalde index = eerste argument, tweede argument = toevoegsel setCharAt(int i, char c) : vervangen van het karakter op positie i door char c met i >= 0 en i < length setLength(int) : de logische lengte wijzigen JAVA

VOORBEELD - ReverseString public class ReverseString { // st2 = reverse(st1); public static String reverse (String source) { int len = source.length(); StringBuffer dest = new StringBuffer(len); for (int i = len - 1;i >= 0;i--) dest.append(source.charAt(i)); return dest.toString(); } public static void main(String[] args) { System.out.println(reverse(“JAVA”)); } JAVA

OEFENING op strings Maak een applicatie, die werkt met invoer via de programmaparameters: een string en een cijfer (tussen 1 en 4). Voer de volgende testen uit op de parameters in de static functie test(): het aantal parameters moet twee zijn de tweede parameter moet een cijfer zijn de tweede parameter moet gelegen zijn tussen 1 en 4 Afhankelijk van de tweede parameter moet de volgende bewerking uitgevoerd worden op de string: Zet alle kleine letters in de string om in hoofdletters (1). Zet de beginletter van de string om in een hoofdletter (2). Tel het aantal klinkers in het woord (3). Ga na of de string een palindroom is (4). Schrijf voor elk van de volgende functionaliteiten een aparte functie en druk het resultaat telkens in main() af. JAVA

OEFENING 4 : BOODSCHAPPENLIJST (1) TOEVOEGEN Appels VERWIJDEREN Peren Rijst Brood ACHTERAAN VOORAAN List-component LEEGMAKEN JAVA

OEFENING 4 : BOODSCHAPPENLIJST (2) Belangrijkste functies op een List-component l: l.clear(); int tel = l.countItems(); int n = l.getSelectedIndex(); // n = 0, ... String s = l.getSelectedItem(); l.delItem(n); l.addItem(s); // achteraan toevoegen l.addItem(s,0); // vooraan toevoegen JAVA