Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Exceptions Exception:
Uitzonderlijke toestand die door een methode wordt opgeworpen De situatie moet door de aanroeper van de methode worden opgevangen throw catch
2
Voorbeeld van Exception
kan een Exception opwerpen try { } s = invoer . Text; n = int . Parse (s); uitvoer . Text = ( "kwadraat is " + n*n ); catch ( Exception e ) { uitvoer . Text = ( s + " is geen getal" ); } opvangen van het probleem
3
Declaratie Declaratie reserveert geheugenruimte
Voor een primitieve waarde zoals be- schreven in struct Size int x; x 5 x = 5; zoals be- schreven in klasse Button Voor een object-waarde s Size s; w 10 s = new Size(10,20); h 20 Voor een object-verwijzing Button b; b b = new Button();
4
De waarde null null : verwijzing naar niks
x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type
5
Exception types NumberFormatException als je iets niet-numerieks probeert te Parsen NullPointerExcpetion als je een member opvraagt van een null object-verwijzing ArithmeticException als je deelt door 0 ...
7
Voorbeeld: Simulatie van bewegende deeltjes
Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten
8
Samenhang van objecten
Simulatie Samenhang van objecten Button geërfd van Form zelf gedeclareerd r1 r2 r3 stap auto sim Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van UserControl x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje
9
Constructie van nieuw object
new-expressie doet twee dingen: r1 = new Ruimte ( ) ; r1 Geheugenruimte klaarzetten d1 d2 d3 Ruimte 100 200 Constructormethode aanroepen waarde is pijl naar het nieuwe object die je kunt opslaan
10
naam is hetzelfde als van de klasse
Constructormethode naam is hetzelfde als van de klasse class Ruimte : UserControl { Deeltje d1, d2, d3; Ruimte ( ) { } geen resultaat- type! this . BackColor = Color.LightYellow; this . Paint += this.tekenRuimte; d1 = new Deeltje (...); d2 = new Deeltje (...); d3 = new Deeltje (...); geërfd van UserControl
11
De klasse Deeltje class Deeltje { int x, y, dx, dy; Brush brush;
} int x, y, dx, dy; Brush brush; public Deeltje (...) {...} public void DoeStap (...) {...} public void TekenDeeltje(Graphics g ) {...}
12
Methoden van klasse Deeltje
class Deeltje { } int x, y, dx, dy; Brush brush; public void TekenDeeltje ( Graphics gr) { gr . FillEllipse( this.brush , this.x – 4, this.y – 4 , 9 , 9 ); }
13
Methoden van klasse Deeltje
class Deeltje { } int x, y, dx, dy; Brush brush; public void DoeStap ( ... ) { this.x += this.dx; this.y += this.dy; if (this.x<0) { } this.x = – this.x; this.dx = – this.dx; if (this.y<0) { ... } if (this.x>maxX) { ... } if (this.y>maxY) { ... }
14
Overzicht van methoden
class Simulatie : Form { class Ruimte: UserControl { class Deeltje { Button stap, auto; Ruimte r1, r2, r3; Deeltje d1, d2, d3; int x, y, dx, dy; Brush brush; Ruimte() { d1 = new Deeltje(); Paint += TekenRuimte; } Simulatie() { stap = new Button(); r1 = new Ruimte(); stap.Click = stap_click; } void TekenDeeltje ( Graphics gr) { gr . FillEllipse ( this.brush , this.x – 4, this.y – 4 , 9 , 9 ); } void TekenRuimte (object o, PaintEventArgs pea ) { Graphics gr = pea.Graphics; d1.TekenDeeltje(gr); d2.TekenDeeltje(gr); d3.TekenDeeltje(gr); } void DoeStap ( ... ) { this.x += this.dx; this.y += this.dy; if (this.x<0) { this.x = - this.x; this.dx = - this.dx; } void stap_click (object o, EventArgs ea) { r1.DoeStap( ); r2.DoeStap( ); r3.DoeStap( ); } void DoeStap( ) { d1.DoeStap(this.Size); d2.DoeStap(this.Size); d3.DoeStap(this.Size); this.Invalidate(); } } } }
15
Hoofdstuk 8.5 Subklassen
16
Voortborduren op eerder 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; } Drie int z; +1; } int nieuw ( ) { return x+y+z; } versie-management problematiek }
17
Voortborduren op eerder gedaan werk
veel gedoe Tweede poging: “doorverwijzen” class Twee { int x, y; int oud ( ) { return x+y; } class Twee { Twee t; int oud ( ) { return t.oud(); } Drie int z; } int nieuw ( ) { return t.x+t.y+z; } raar asymmetrisch }
18
Voortborduren op eerder gedaan werk
Derde poging: “subklassen” class Twee { int x, y; int oud ( ) { return x+y; } class Twee : Twee { Drie int z; } int nieuw ( ) { return x+y+z; } }
19
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
20
Over-erving Objecten van een subklasse erven variabelen en methoden&properties van de superklasse CirkelGroei geërfd straal kleiner zelf gede- clareerd groter
21
Klasse en subklasse class Bolletje { class KleurBol : Bolletje {
int x, y, diam; Color kleur; void plaats(int x0, int y0) { this.x = x0; this.y = y0; } void verf(Color k) { this.kleur = k; } override void groei( ) { this.diam++; } void teken(Graphics g) { g.FillEllipse( new Brush(kleur) , x, y, diam, diam ); } virtual void teken(Graphics g) { g.DrawEllipse( Pens.Black , x, y, diam, diam ); } g.DrawEllipse( Pens.Black , x, y, diam, diam ); base.teken(g); } } Bolletje b = new Bolletje(); KleurBol k = new KleurBol(); b = k; b.plaats(10,20); k.plaats(10,20 ); b.teken(gr); b.groei ( ); k.verf( Color.Green ); b.teken(gr); k.teken(gr); k = b; b.verf( Color.Red );
22
deze methode komt uit klasse:
Virtual - Override A a = new B (); a . m( ); dit mag, als class B : A deze methode komt uit klasse: B als m virtual in A en override in B A als m new in B
23
Superklassen in libraries
Button : ButtonBase ButtonBase : Control super- superklasse superklasse
24
Klasse-hiërarchie in Forms
Common Dialog Component FileDialog ColorDialog Control Label TrackBar property van ContainerControl ButtonBase Button CheckBox f = new Form(); RadioButton b = new Button(); TextBoxBase TextBox t = new TextBox(); RichTextBox Scrollable Control Container Control f . Controls . Add(b); Form f . Controls . Add(t); UserControl Panel heeft een Control parameter ListView TreeView
25
Klasse-hiërarchie in Forms
Object String Bitmap Graphics moeder van alle klassen EventArgs PaintEventArgs MouseEventArgs KeyPressEventArgs Component CommonDialog Control Label TrackBar ButtonBase
26
ondergrond gaat voor motorisatie
Hiërarchie-ontwerp Vervoer middel Voertuig Boot Motor Voertuig Fiets Boot Zeil Vracht Wagen Stoom Boot Auto Motor Fiets ontwerpkeuze: motorfiets is meer motor dan fiets Vliegtuig ontwerpkeuze: ondergrond gaat voor motorisatie
27
Hiërarchie-ontwerp “is een”
Voertuig Vervoer middel Boot class Voertuig : Vervoermiddel class Boot : Vervoermiddel “is een”
28
Arrays Array: rij genummerde variabelen declaratie van een array
tabel 1 2 3 4 length 5 int [ ] tabel; tabel = new int [5]; creëren van het eigenlijke array-object
29
(final version) CirkelKlikker ARRAY int x, y; [ ] int n=0;
void klik(object o, MouseEA mea) { } this.x = mea.X; this.y = mea.Y; this.Invalidate(); [n] [n] n++; void teken(object o, PaintEA pea) { } Graphics gr = pea.Graphics; ARRAY for (int t=0; t<n; t++) gr.FillEllipse(Brushes.Black, this.x , this.y , 15, 15 ); [t] [t]
30
Array als parameter int Kleinste ( int [ ] tabel ) { int resultaat;
} tabel 1 2 3 4 length 5 12 95 11 23 15 int resultaat; resultaat =tabel [0]; for (int t=0; t<tabel.Length; t++) if (tabel [t] < resultaat) resultaat = tabel [t]; return resultaat;
31
Twee-dimensionale array
blad 5 3 length int [ , ] blad; 1 2 blad = new int [5,3]; 3 88 4 blad[3,1] = 88; 1 2
32
Hoofdstuk 9.3-4 Strings en arrays
33
Primitieve types int gehele getallen -17, -5, 0, 3, 178
double reëele getallen 3.141, 2.0, -1.5E8 bool waarheidswaarden false, true char losse symbolen ’A’, ’B’, ’Z’, ’a’, ’4’, ’#’, ’:’
34
string versus char string char klasse primitief type
object-verwijzing directe waarde nul, een of meer… precies één symbool "" "A" "hello" ’A’ operatoren, methoden properties, indexer operatoren == , == , + , <= Substring, ToUpper Length s[i]
35
String-methodes int Length bool Equals (string s)
string Concat (string s) string Substring (int start) string Substring (int start, int aantal) string ToUpper ( ) string ToLower ( )
36
concat en substring String s, t, u, v, w; s = "ham"; t = "burger";
hamburger burger burg s = "ham"; t = "burger"; u = s.Concat(t); s + t ; v = u.Substring(3); w = u.Substring(3, 4); vanaf aantal hamburger
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.