13
Hoofdstuk 8.5 Subklassen

Hoofdstuk 8.5

  • 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

Page 1: Hoofdstuk 8.5

Hoofdstuk 8.5

Subklassen

Page 2: Hoofdstuk 8.5

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;

Page 3: Hoofdstuk 8.5

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

Page 4: Hoofdstuk 8.5

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

Page 5: Hoofdstuk 8.5

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

Page 6: Hoofdstuk 8.5

Over-erving

Objecten van een subklasseerven variabelen en methoden&propertiesvan de superklasse

kleinerstraal

CirkelGroei

geërfd

zelf gede-clareerd groter

Page 7: Hoofdstuk 8.5

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

Page 8: Hoofdstuk 8.5

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

Page 9: Hoofdstuk 8.5

Superklassen in libraries

Button : ButtonBase ButtonBase : Control

superklasse

super-superklasse

Page 10: Hoofdstuk 8.5

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

Page 11: Hoofdstuk 8.5

Klasse-hiërarchie in Forms

PaintEventArgs

MouseEventArgs

KeyPressEventArgs

EventArgs

Component CommonDialog

Control Label

TrackBar

ButtonBase

Object String

Bitmap

Graphics

moeder vanalle klassen

Page 12: Hoofdstuk 8.5

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

Page 13: Hoofdstuk 8.5

Hiërarchie-ontwerp

class Voertuig : Vervoermiddelclass Boot : Vervoermiddel

“is een”

Vervoermiddel

Voertuig

Boot