300 likes | 452 Views
Hoofdstuk 8. verplicht…. Keuze. if. while (temperatuur<0) temperatuur += 5;. opdracht wordt steeds opnieuw uitgevoerd zolang voorwaarde geldt. Opdrachten voorwaardelijk uitvoeren. if (temperatuur<0) gr.drawString(“Het vriest!â€, 10, 10);.
E N D
Hoofdstuk 8 verplicht… Keuze
if while (temperatuur<0) temperatuur += 5; opdracht wordt steeds opnieuwuitgevoerd zolang voorwaarde geldt Opdrachten voorwaardelijk uitvoeren if (temperatuur<0) gr.drawString(“Het vriest!”, 10, 10); opdracht wordt alleenuitgevoerd als voorwaarde geldt
Twee alternatieven if (temperatuur<0) gr.drawString(“Het vriest!”, 10, 10); else gr.drawString(“Het dooit.”, 10, 10); opdracht wordt alleenuitgevoerd als voorwaarde niet geldt
Keuze is ook een opdracht for (n=1; n<20; n++) if (n%3==0) gr.drawString(n + “drievoud”, 10, 10 ); *n else gr.drawString(n + “niet”, 10, 10 ); *n één opdracht dus geen accolades nodig! if-opdracht dient in z’n geheel als body van for-opdracht
Meer opdrachten als body if (temperatuur<0) gr.drawString(“Het vriest!”, 10, 10); { } gr.drawString(“Koud he!”, 10, 20); accolades maken twee opdrachten tot één body
Meerdere alternatieven if (leeftijd<4) tf.setText(“Gratis”); else if (leeftijd<12) tf.setText(“Railrunner”); else if (leeftijd<65) tf.setText(“Vol tarief”); else tf.setText(“Seniorenkaart”); if-opdracht dient in z’n geheel als body van else-deel if-opdracht dient in z’n geheel als body van else-deel
Meerdere alternatieven if (leeftijd<4) tf.setText(“Gratis”); elseif (leeftijd<12) tf.setText(“Railrunner”); elseif (leeftijd<65) tf.setText(“Railrunner”); elseif (leeftijd<65) tf.setText(“vol tarief”); else tf.setText(“Seniorenkaart”); tf.setText(“Vol tarief”); else tf.setText(“Seniorenkaart”); uitzondering op gewoonte om body in te springen
Meerdere alternatieven bij return-opdracht is methode beëindigd private String tarief(int leeftijd) { } if (leeftijd<4)return “Gratis”; elseif (leeftijd<12) return “Railrunner”; elseif (leeftijd<65) return “Vol tarief”; elsereturn “Seniorenkaart”; if (leeftijd<4)return “Gratis”; if (leeftijd<12) return “Railrunner”; if (leeftijd<65) return “Vol tarief”; return “Seniorenkaart”;
Cirkel tekenen class Cirkel extends Applet { } implements ActionListener Button b; public void init ( ) { straal = 100; b = new Button(“groter”); this.add(b); b.addActionListener(this); int straal; public void init ( ) { straal = 100; } public void actionPerformed(ActionEvent e) { straal += 10; this.repaint(); } public void paint(Graphics gr) { gr.fillOval(150-straal,150-straal,2*straal,2*straal); }
Cirkel tekenen class Cirkel extends Applet { implements ActionListener int straal; Button klein, groot; public void init ( ) { straal = 10; klein = new Button(“kleiner”); this.add(klein); groot = new Button(“groter”); this.add(groot); klein.addActionListener(this); groot.addActionListener(this); }
public void actionPerformed(ActionEvent e) { if ( e.getSource() == klein ) straal -= 10; if ( e.getSource() == groot ) straal += 10; this . repaint(); } e.getSource() Cirkel tekenen public void actionPerformed(ActionEvent e) { if ( e.getSource() == klein && straal>10 ) straal -= 10; if ( e.getSource() == groot && straal<150 ) straal += 10; this . repaint(); } gelijkheid van Button-object-verwijzingen)
Geheime tekening class Geheim extends Applet { boolean open; public void init () { open = false; } TextField pass; pass = new TextField(20); this.add(pass); pass.addActionListener(this); } public void paint (Graphics gr) { gr.setColor(Color.GREEN); gr.fillOval(50,50,100,100); gr.setColor(Color.BLUE); gr.fillOval(81,85,8,8); gr.fillOval(111,85,8,8); gr.drawArc(75,75,50,50,225,90); } if (open) { }
Geheime tekening class Geheim extends Applet implements ActionListener { boolean open; TextField pass; public void actionPerformed (ActionEvent e) { open = true; this . repaint(); } if ( pass.getText() . equals (“geheim”) ) { } pass . setVisible(false);
hoi hoi s s s s x 5 hoi hoi t t t t hoi hoi y 5 operator == of methode equals ? • == test gelijkheid van variabelen true true false • equals test gelijkheid van String-inhoud true true methode voor String- objecten
Min./max. thermometer class Thermo extends Applet { impelements AdjustmentListener, ActionListener Scrollbar meter; int minimum, maximum; public void init () { Button reset; meter = new Scrollbar(Scrollbar.HORIZONTAL,0,1,-50,50); reset = new Button(“reset”); } this.add(meter); this.add(reset); meter.addAdjustmentListener(this); reset.addActionListener(this); minimum = 0; maximum = 0;
Min./max. thermometer public void paint (Graphics gr) { gr.drawString( “hoogste ” + maximum, 50,50); gr.drawString( “laagste ” + minimum, 50,70); } public void adjustmentValueChanged(AdjustmentEvent e) { this.repaint(); } int waarde; waarde = meter.getValue(); if (waarde>maximum) waarde; maximum = minimum = if (waarde<minimum) waarde;
Grafiek-tekenprogramma ingevoerde waarden abc nulpuntenvolgens abc-formule grafiek van een parabool
Opzet van klasse Parabool • declaratie Objectvariabelen • methode init • methode actionPerformed • methode paint bouwt interface converteert a,b,c “regisseert” het tekenen • methode nulpunten • methode assen • methode grafiek doen heteigenlijke tekenwerk • methode parabool berekent ax2+bx+c
Parabool: init class Parabool extends Applet implements ActionListener { TextField abox, bbox, cbox; double a, b, c; public void init () { a = 0.5; b = 2.0; c = -4.0; } abox = new TextField( “”+a, 8 ); bbox = new TextField( “”+b, 8 ); cbox = new TextField( “”+c, 8 ); this.add(abox); this.add(bbox); this.add(cbox); abox.addActionListener(this); bbox.addActionListener(this); cbox.addActionListener(this);
Parabool: actionPerformed public void actionPerformed(ActionEvent e) { } a = b = c = this.repaint (); Double.parseDouble( ); Double.parseDouble( ); Double.parseDouble( ); abox.getText() bbox.getText() cbox.getText()
Parabool: paint public void paint (Graphics gr) { } gr . setColor( Color.BLACK ); gr . setColor( Color.RED ); gr . setColor( Color.BLUE ); nulpunten assen grafiek (gr); (gr); (gr); this . this . this . private void assen (Graphics gr) { gr.drawLine(0, 250, 500, 250); gr.drawLine(250, 0, 250, 500); }
-b ± b2-4ac 2a Parabool: nulpunten public void nulpunten (Graphics gr) { } discriminant = b*b - 4*a*c; noemer = 2*a; if (discriminant<0) gr.drawString(“geen nulpunten”); else { } wortel = Math.sqrt(discriminant); gr.drawString( (-b -wortel)/noemer + “ en ” +(-b+wortel)/noemer , 50, 50 );
Parabool: grafiek public void grafiek (Graphics gr) { } int x, y,oldy; double xw, yw, schaal; schaal = 0.03; oldy = 0; for ( x=0 ; x<500 ; x++ ) { } xw = schaal * x ; w w y = yw / schaal ; ( -250) y = this.parabool( x ); (int) (250-( )) if (x>0) gr.drawLine( , , x, y ); x-1 oldy oldy = y;
Testen van een reeks mogelijke waarden switch (x) { } if (x==1) else if (x==2) else if (x==3) else if (x==4) else if (x==5) else if (x==6) else if (x==7) else case 1: case 2: case 3: case 4: case 5: case 6: case 7: default: this.een(); this.twee(); this.drie(); this.vier(); this.vijf(); this.zes(); this.zeven(); this.meer(); break; break; break; break; break; break; break;
Exceptions Exception: • Uitzonderlijke toestand diedoor een methode wordt opgeworpen • De situatie moet door de aanroepervan de methode worden opgevangen throw catch
Voorbeeld van Exception kan een Exception opwerpen try { } s = invoer . getText ( ); n = Integer . parseInt (s); uitvoer . setText ( “kwadraat is ” + n*n ); catch ( Exception e ) { uitvoer . setText ( s + “ is geen getal” ); } opvangen vanhet probleem
Soorten Exceptions Subklassen van Exception • NumberFormatException • NullPointerException • InterruptedException • IOException • FileNotFoundException • ... vrijwillig op te vangen verplicht op te vangen
Meerdere catch-delen als er een Exception optreedt, wordt de eerste catch gekozen met een passend type try { } // open een file // en lees de inhoud catch ( FileNotFoundException f ) { uitvoer . setText ( s + “ bestaat niet” ); } catch ( IOException i ) { uitvoer . setText ( s + “ is onleesbaar” ); }
Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for-opdracht { ... } - bundeling if-opdracht try/catch-opdracht Expressies Constante Variabele Aanroep methode Expressie met operatoren Expressie met haakjes new-expressie this Overzicht programma-constructies kun je doen kun je uitrekenen • switch-opdracht • break-opdracht
Declaratie Lokale variabelevoor tijdelijk gebruik Object-variabelepermanent deel vanhet object Parameterom waarden doorte spelen aan methode Type Primitief type int double boolean Object-type Color, String enz. TextField, Button enz. Applet, Hallo, enz. Overzicht programma-constructies waarde-verzamelingvan een expressie geeft het typevan variabelen