Upload
neva
View
52
Download
0
Embed Size (px)
DESCRIPTION
Hoofdstuk 8.5. Subklassen. Voortborduren op eerder gedaan werk. Eerste poging: “knip&plak”. class Twee { int x, y; int oud ( ) { return x+y; }. Drie. class Twee { int x, y; int oud ( ) { return x+y; }. int z;. +1;. }. int nieuw ( ) - PowerPoint PPT Presentation
Citation preview
Hoofdstuk 8.5
Subklassen
versie-managementproblematiek
Voortborduren opeerder gedaan werk
Eerste poging: “knip&plak”class Twee{ int x, y;
int oud ( ) { return x+y; }}
class Twee{ int x, y;
int oud ( ) { return x+y; }
}
int z;
int nieuw ( ) { return x+y+z; }
Drie
+1;
raar asymmetrisch
veel gedoe
Voortborduren opeerder gedaan werk
Tweede poging: “doorverwijzen”class Twee{ int x, y;
int oud ( ) { return x+y; }}
class Twee{ Twee t;
int oud ( ) { return t.oud(); }
}
int z;
int nieuw ( ) { return t.x+t.y+z; }
Drie
Voortborduren opeerder gedaan werk
Derde poging: “subklassen”class Twee{ int x, y;
int oud ( ) { return x+y; }}
class Twee : Twee{
}
int z;
int nieuw ( ) { return x+y+z; }
Drie
Subklassen
class Ruimte : UserControl
Ruimte is een subklasse van UserControl UserControl is de superklasse van Ruimte
Elk Ruimte-object is tevens UserControl-object
Een Ruimte-object is een bijzonder geval van een UserControl-object
Over-erving
Objecten van een subklasseerven variabelen en methoden&propertiesvan de superklasse
kleinerstraal
CirkelGroei
geërfd
zelf gede-clareerd groter
Klasse en subklasseclass Bolletje{
}
int x, y, diam;void plaats(int x0, int y0){ this.x = x0; this.y = y0;}void groei( ){ this.diam++;}void teken(Graphics g){ g.DrawEllipse( Pens.Black , x, y, diam, diam );}
class KleurBol : Bolletje{
}
Color kleur;void verf(Color k){ this.kleur = k;}
void teken(Graphics g){ g.FillEllipse( new Brush(kleur) , x, y, diam, diam );
}
g.DrawEllipse( Pens.Black , x, y, diam, diam );
Bolletje b = new Bolletje();b.plaats(10,20);
b.teken(gr);
KleurBol k = new KleurBol();k.plaats(10,20 );
k.teken(gr);b.verf( Color.Red );
b.groei ( );
k.verf( Color.Green );
b.teken(gr);
b = k;
k = b;
base.teken(g);
virtual
override
Virtual - Override
A a = new B ();
dit mag, alsclass B : A
a . m( );
deze methodekomt uit klasse:
B als m virtual in A en override in B
A anders
Superklassen in libraries
Button : ButtonBase ButtonBase : Control
superklasse
super-superklasse
property vanContainerControl
Klasse-hiërarchie in Forms
ButtonBase Button
CheckBox
RadioButton
TextBox
RichTextBox
TextBoxBase
ContainerControl
Form
UserControl
Panel
Label
TrackBar
ScrollableControl
ListView
TreeView
FileDialog
ColorDialog
Component
Control
CommonDialog
b = new Button();
f = new Form();
f . Controls
. Add(b);
t = new TextBox();
f . Controls
. Add(t);
heeft eenControl
parameter
Klasse-hiërarchie in Forms
PaintEventArgs
MouseEventArgs
KeyPressEventArgs
EventArgs
Component CommonDialog
Control Label
TrackBar
ButtonBase
Object String
Bitmap
Graphics
moeder vanalle klassen
Hiërarchie-ontwerp
ontwerpkeuze:ondergrond gaatvoor motorisatie
ontwerpkeuze:motorfiets is
meer motor dan fiets
Vervoermiddel
Auto
MotorFiets
Voertuig
Boot
Vliegtuig
VrachtWagen
StoomBoot
MotorVoertuig
Fiets
MotorBoot
ZeilBoot
Hiërarchie-ontwerp
class Voertuig : Vervoermiddelclass Boot : Vervoermiddel
“is een”
Vervoermiddel
Voertuig
Boot