Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Hoofdstuk 9 Objecten en klassen
2
Programma en Geheugen opdrachten variabelen methoden objecten klasse
veranderen zijn gegroepeerd in zijn gegroepeerd in methoden objecten bewerken zijn gegroepeerd in hebben als type klasse klasse klasse
3
Klasse-definitie Opsomming van methoden ieder bestaand uit opdrachten
class Teller ... { Button b; int t; Opsomming van methoden ieder bestaand uit opdrachten ... init() { } b = new Button(); t = 0; ... bewerken ... paint(...) { } g.drawString(t...); Beschrijving van objecten door declaraties van variabelen ... actionPerformed(...) { } t = t+1; this.repaint(); }
4
Declaratie Declaratie reserveert geheugenruimte
Voor een primitieve waarde zoals be- schreven in klasse Scrollbar int x; x 5 x = 5; Voor een object-verwijzing Scrollbar s; s s = new Scrollbar(...);
5
Creatie van nieuwe objecten
Objecten met als type een library-klasse type van het gewenste object Scrollbar s; s = new Scrollbar(...); Objecten met als type een zelfgemaakte klasse Thermo t; t = new Thermo( ); dit doet de browser t . init ( ); t . paint (...);
6
Creatie van objecten Opbouw van object is gespecificeerd in de klasse
browser’s current applet class Thermo { } extends Applet Thermo Scrollbar meter; int min, max; // methoden... geërfd meter min max zelf gede- clareerd
7
Aanroep van init public void init ( ) { Button reset; } min = 0;
max = 0; meter = new Scrollbar(...); reset = new Button(...); Button reset meter min max Thermo browser’s current applet this Scrollbar
8
Aanroep van init } reset = new Button(...); this . add(meter);
this . add(reset); reset . addActionListener(this); meter . addAdjListener(this); meter min max Thermo browser’s current applet reset this Scrollbar Button actListener added adjListener value
9
Na afloop van Aanroep van init
Button actListener meter min max Thermo browser’s current applet added Scrollbar adjListener value
10
Klassen en objecten Klasse-definitie in programma Object-creatie door browser Thermo Klasse-definitie in library Object-creatie met new Scrollbar Klasse-definitie in programma Object-creatie met new Ruimte
11
Voorbeeld: Simulatie van bewegende deeltjes
Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten
12
De klasse Simulatie public class Simulatie extends Applet {
Button stap, auto; Ruimte r1, r2, r3; public void init ( ) { stap = new Button (“stap”); auto = new Button (“start”); r1 = new Ruimte(...); r2 = new Ruimte(...); r3 = new Ruimte(...); ... } Klasse Ruimte gaan we zelf maken!
13
heeft drie eigen Deeltje - objecten
De klasse Ruimte Ruimte is een uitbreiding van een bestaand interactie-object private class Ruimte { } extends Canvas Deeltje d1, d2, d3; ieder Ruimte -object heeft drie eigen Deeltje - objecten // methoden nog toevoegen
14
De klasse Deeltje Deeltje is helemaal zelfgemaakt
private class Deeltje { } positie van het Deeltje int x, y; int dx, dy; snelheid van het Deeltje Color kleur; // methoden nog toevoegen
15
Samenhang van objecten
Simulatie Samenhang van objecten Button geërfd van Applet zelf gedeclareerd r1 r2 r3 stap auto browser’s current applet Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van Canvas x y dx dy kleur Deeltje x y dx dy kleur Deeltje x y dx dy kleur Deeltje
16
Constructie van nieuw object
new-expressie doet twee dingen: r1 = new Ruimte ( ... ) ; r1 Geheugenruimte klaarzetten d1 d2 d3 Ruimte 100 196 Constructormethode aanroepen waarde is pijl naar het nieuwe object die je kunt opslaan
17
naam is hetzelfde als van de klasse
Constructormethode naam is hetzelfde als van de klasse private class Ruimte { Deeltje d1, d2, d3; } private Ruimte ( ) { } int breed, int hoog this . setSize (breed,hoog); geen resultaat- type! this . setBackground (Color.YELLOW); d1 = new Deeltje (...); d2 = new Deeltje (...); d3 = new Deeltje (...); geërfd van Canvas
18
De klasse Deeltje private class Deeltje {
} int x, y, dx, dy; Color kleur; public Deeltje (...) {...} public void doeStap (...) {...} public void teken (Graphics g ) {...}
19
Methoden van klasse Deeltje
private class Deeltje { } int x, y, dx, dy; Color kleur; public void teken ( Graphics gr) { gr . setColor (kleur); gr . fillOval( x-3, y-3, 7, 7 ); }
20
Methoden van klasse Deeltje
private class Deeltje { } int x, y, dx, dy; Color kleur; public void doeStap ( ... ) { x += dx; y += dy; if (x<0) { } x = -x; dx = -dx; if (y<0) { ... } if (x>maxX) { ... } if (y>maxY) { ... }
21
Overzicht van klassen class Simulatie extends Applet impl ActList
init actionPerformed class Ruimte extends Canvas Ruimte paint class Deeltje Deeltje doeStap, teken
22
Methoden van klasse Simulatie
public class Simulatie extends Applet impl ActionListener { } Button stap, auto; Ruimte r1, r2, r3; public void init ( ) { stap = new Button (“stap”); auto = new Button (“start”); r1 = new Ruimte (100, 196); r2 = new Ruimte (196, 150); r3 = new Ruimte ( 60, 75); } this.add(stap); this.add(auto); this.add(r1); this.add(r2); this.add(r3); stap.addActionListener(this); auto.addActionListener(this);
23
Methoden van klasse Simulatie
public class Simulatie extends Applet impl ActionListener { } Button stap, auto; Ruimte r1, r2, r3; public void actionPerformed (ActionEvent e ) { if (e.getSource() == stap) this.doeStap( ); else ... } private void doeStap ( ) { } r1.doeStap(); r2.doeStap(); r3.doeStap(); r1.repaint (); r2.repaint (); r3.repaint ();
24
Methoden van klasse Ruimte
private class Ruimte extends Canvas { } Deeltje d1, d2, d3; public Ruimte (int breed, int hoog) { this.setSize (breed, hoog); this.setBackground (Color.gray); d1 = new Deeltje(Color.RED, 30, 40, 10, 10); d2 = new Deeltje(Color.GREEN, 100, 80, 5, -10); d3 = new Deeltje(Color.BLUE, 200, 60, 8, 2); }
25
Methoden van klasse Ruimte
private class Ruimte extends Canvas { } Deeltje d1, d2, d3; public void doeStap ( ) { d1 . doeStap (this.getSize()); d2 . doeStap (this.getSize()); d3 . doeStap (this.getSize()); } public void paint (Graphics gr) { d1 . teken (gr); d2 . teken (gr); d3 . teken (gr); }
26
zich zelfstandig ontwikkelende lijn van gebeurtenissen
Animatie Animatie: “tekenfilm” programma toont automatisch veranderende beelden Gemakkelijk te programmeren met gebruik van de klasse “draadje” Thread zich zelfstandig ontwikkelende lijn van gebeurtenissen
27
Maak een animatie Thread animatie; animatie = new Thread ( this );
animatie . start ( ); this . run ( ); roept run aan van object dat bij constructor is meegegeven en keert dan direct terug (terwijl run nog bezig is)
28
De methode run class Simulatie extends Applet { } implements Runnable
oneindige herhaling! public void run ( ) { } while (true) Thread . sleep (50); milliseconden milliseconden { } this . doeStap ( ); try { Thread . sleep (50); } catch (Exception e) { }
29
Starten van de animatie
public void actionPerformed (ActionEvent e) { } if (e.getSource ( )==auto) { } if (beweging) { auto . setLabel (“Start”); beweging = false; } else { animatie = new Thread(this); animatie . start ( ); auto . setLabel (“Stop”); beweging = true; else this . doeStap ( );
30
De methode run nogmaals
class Simulatie extends Applet { } implements Runnable oneindige herhaling! while (true) eindige herhaling. public void run ( ) { } while (beweging) { } this . doeStap ( ); try { Thread . sleep (50); } catch (Exception e) { }
31
Handiger Starten van de animatie
public void actionPerformed (ActionEvent e) { } if (e.getSource ( )==auto) { } if (beweging) { auto . setLabel (“Start”); beweging = false; } else { (animatie != null ) animatie = null; animatie = new Thread(this); animatie . start ( ); auto . setLabel (“Stop”); beweging = true; else this . doeStap ( );
32
De waarde null null : verwijzing naar niks
x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type
33
Samenvatting Button actListener meter min max Thermo
browser’s current applet added Scrollbar adjListener value
34
Samenvatting Maak objecten van een zelfbedachte klasse
variabelen: wat is het object methoden: wat kan het object
35
Simulatie Button geërfd van Applet zelf gedeclareerd r1 r2 r3 stap auto browser’s current applet Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van Canvas x y dx dy kleur Deeltje x y dx dy kleur Deeltje x y dx dy kleur Deeltje
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.