1 / 65

ONTWERPDOELEN (1)

ONTWERPDOELEN (1). JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar. ONTWERPDOELEN (2). JAVA IS: veilig architectuurneutraal portable goede performance multithreaded. VIRTUELE MACHINE. Java-bytecode Virtuele machine in browser.

eloise
Download Presentation

ONTWERPDOELEN (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. VIRTUELE MACHINE • Java-bytecode • Virtuele machine in browser JAVA

  4. VIRTUELE MACHINE Schematisch: 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

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

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

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

  8. UITVOERING APPLICATIE JAVA

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

  10. UITVOERING APPLET JAVA

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

  12. 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

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

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

  15. RESULTAATSCHERM JAVA

  16. 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

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

  18. 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

  19. 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

  20. 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

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

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

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

  24. 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

  25. 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

  26. 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

  27. 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; elseif (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

  28. VOORBEELD 3 - UITVOER JAVA

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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 • break; • default: statement • break; • } • conditionele expressie : x = 3 * (a > b? a : b ) + 100; JAVA

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

  39. 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

  40. VOORBEELD - HAPPER - UITVOER JAVA

  41. 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[]; • a= new int[10]; • OF • int[] a = new int [10]; JAVA

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

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

  48. ARRAY als argument van een methode Uitvoer StaafdiagramApplet: JAVA

  49. 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

  50. 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

More Related