Download presentation
Presentation is loading. Please wait.
1
Hoofdstuk 13 Object-georiënteerd ontwerp
2
Methode-aanroep: Type van parameters void paint(Graphics g) { g.drawRect( ); class Graphics { void drawRect(int x, int y, int w, int h) {…} void drawString(String s, int x, int y) {…} void setColor(Color c) {…} 10,10,40,50 g.drawRect( t,0,9,9); int t; t=5;for( t<20; t++) 10* g.drawString(“hoi”,5,50); g.setColor(Color.RED); g.setColor(k); Color k; k = new Color( 255,128,0 );
3
Methode-aanroep: Type van object class Scanner { © Scanner String next () { } boolean hasNext() { } Scanner t; t = new Scanner ( “dit is tekst”, “ ” ); t. hasNext ( ) t. next ( ) while ( ) { } s = ; String s; doeIetsNuttigsMet ( s ); String rest, sep; (String x, String y) { } rest=x; sep=y; ……rest.substring(…)… return ! rest.equals(“”);
4
Subtypen ook acceptabel class Container { } class Panel extends Container class Applet extends Panel class Button extends Component class Component { } void add(Component c) {…} class Hoi extends Applet { void init( ) { this. add( ); Panel p = new Panel(); p. add( ); Button b = new Button(); Label t = new Label(); b p. add( t ); p void paint(Graphics g) { … } extends Component
5
Ook acceptabel: class Thread { class Hoi extends Applet { void eenMethode( ) { } © Thread( ) { } void start( ) { } Thread t; t = new Thread( ); t. start( ); a. run( ); Runnable r a = r ; Runnable a; } void run ( ) { while (true) …… } this implements Runnable interface Runnable { void run( ); // geen body! } Implementatie van interface
6
Ook acceptabel: andere class Thread { class Hoi extends Applet { void eenMethode( ) { } © Thread( ) { } void start( ) { } Thread t; t = new Thread( ); t. start( ); a. run( ); Runnable r a = r ; Runnable a; } void run ( ) { while (true) …… } x interface Runnable { void run( ); // geen body! } Implementatie van interface } class R implements Runnable { x = new R(); Runnable x;
7
Interface ActionListener: zelf luisteren class Component { class Hoi extends Applet { void init( ) { } void addActionListener (ActionListener a) { …… } } interface ActionListener { void actionPerformed (ActionEvent e ); } Button b; b = new Button(); this.add(b); b. addActionListener(this); void actionPerformed (ActionEvent e ) { …… } implements ActionListener
8
Interface ActionListener: 2 andere klassen class Hoi extends Applet { } void init( ) { } Button b = new Button(); b. addActionListener( ); TextArea t = new TextArea(); t. addActionListener( ); class AL1 implements ActionListener { } class AL2 implements ActionListener { } void actionPerformed (ActionEvent e) { reageer op de button } void actionPerformed (ActionEvent e) { reageer op het tekstveld } new AL1() new AL2()
9
Interface ActionListener: 1 andere klasse class Hoi extends Applet { } void init( ) { } Button b = new Button(); b. addActionListener( ); TextArea t = new TextArea(); t. addActionListener( ); class AL implements ActionListener { } © AL (int x) { } new AL (1) new AL (2) void actionPerformed (ActionEvent e) { } int a; a = x; if (a==1) reageer op de button else reageer op het tekstveld
10
Klasse hierarchieën Component TextArea TextField Panel Window Applet Frame DialogFileDialog Button Canvas Label Scrollbar Text Component Container Event Listener Action Listener Adjustment Listener Component Listener Mouse Listener MouseMotion Listener en interface-hierarchieën
11
Interface MouseListener: niet 1, maar 5 methoden… interface MouseListener { class ML { void mousePressed(MouseEvent e); void mouseReleased(MouseEvent e); void mouseClicked(MouseEvent e); void mouseEntered(MouseEvent e); void mouseExited(MouseEvent e); } implements MouseListener void mousePressed(MouseEvent e) { doe iets in reactie op indrukken } void mouseReleased(MouseEvent e) {} void mouseClicked(MouseEvent e) {} void mouseEntered(MouseEvent e) {} void mouseExited(MouseEvent e) {} }
12
Interface MouseListener: niet 1, maar 5 methoden… interface MouseListener { class ML { void mousePressed(MouseEvent e); void mouseReleased(MouseEvent e); void mouseClicked(MouseEvent e); void mouseEntered(MouseEvent e); void mouseExited(MouseEvent e); } extends MouseAdapter void mousePressed(MouseEvent e) { doe iets in reactie op indrukken } } class MouseAdapter implements MouseListener { void mousePressed(MouseEvent e) {} void mouseReleased(MouseEvent e) {} void mouseClicked(MouseEvent e) {} void mouseEntered(MouseEvent e) {} void mouseExited(MouseEvent e) {} } abstract Her definitie de rest hoeft niet gewijzigd!
13
Zelf maken van abstracte klassen interface MouseMotionListener { class ML { void mouseMoved(MouseEvent e); void mouseDragged(MouseEvent e); } extends MuisBeweger void mouseMoved(MouseEvent e) { doe iets in reactie op bewegen } } class MuisBeweger implements MouseMotionListener { void mouseDragged(MouseEvent e) { this.mouseMoved(e); } } abstract niet compleet, maar deze hebben we alvast! de andere…
14
Abstracte klasse nOnmogelijk om new objecten van te maken nBedoeld om subklassen van te maken nVaak: onvolledige implementatie van een interface… n…met lege methoden, of elkaar aanroepende methoden
15
Mouse Adapter MouseMotion Adapter Klasse hierarchieën Component TextArea TextField Panel Window Applet Frame DialogFileDialog Button Canvas Label Scrollbar Text Component Container Event Listener Action Listener Adjustment Listener Component Listener Mouse Listener MouseMotion Listener en interface-hierarchieën Component Text Component Container abstracte klasse in java.awt gemiste kansen in java.awt
16
Diagram-symbolen Klasse Abstracte Klasse Interface extendsimplements methodeheaders (wensenlijstje) complete methoden en declaraties objectvariabelen gedeeltelijke implementatie
17
Samenvatting 13.1 nKlasse uGroep methoden uType van een object nInterface u“Wensenlijstje” voor een klasse nAbstracte klasse uGedeeltelijke implementatie uNiet bedoeld voor new, maar voor extends Mouse Listener Runnable Mouse Adapter Container
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.