Exceptions Exception:

Slides:



Advertisements
Verwante presentaties
Hoofdstuk 2 Hallo, C# !.
Advertisements

Hoofdstuk 10 Overerving.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoofdstuk Strings en arrays. Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 8 Objecten en klassen.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Hoofdstuk 9 Objecten en klassen.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 11 Strings en arrays. TextArea en String class LetterTeller extends Applet { void init ( ) { invoer = new TextArea (5, 40); uitvoer = new TextField(40);
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt.
Resources. Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { } class KompasView :
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Aanroep van een methode voert opdrachten uit in de body daarvan
Voortborduren op eerder gedaan werk
ISensorEventListener
1e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies.
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
string versus char string char klasse primitief type
Letterfrequentie turven
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’,
Gameprogrammeren: Overerving in Painter
Basis Gameprogrammeren
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Arjan Egges & Paul Bergervoet
Voorbeeld: Simulatie van bewegende deeltjes
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Gameprogrammeren: Abstracte klassen
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Arrays
Transcript van de presentatie:

Exceptions Exception: Uitzonderlijke toestand die door een methode wordt opgeworpen De situatie moet door de aanroeper van de methode worden opgevangen throw catch

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

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();

De waarde null null : verwijzing naar niks x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type

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 ...

Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten

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

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

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

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 ) {...}

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 ); }

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) { ... }

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(); } } } }

Hoofdstuk 8.5 Subklassen

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 }

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 }

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; } }

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 subklasse erven variabelen en methoden&properties van de superklasse CirkelGroei geërfd straal kleiner zelf gede- clareerd groter

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 );

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

Superklassen in libraries Button : ButtonBase ButtonBase : Control super- superklasse superklasse

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

Klasse-hiërarchie in Forms Object String Bitmap Graphics moeder van alle klassen EventArgs PaintEventArgs MouseEventArgs KeyPressEventArgs Component CommonDialog Control Label TrackBar ButtonBase

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

Hiërarchie-ontwerp “is een” Voertuig Vervoer middel Boot class Voertuig : Vervoermiddel class Boot : Vervoermiddel “is een”

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

(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]

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;

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

Hoofdstuk 9.3-4 Strings en arrays

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’, ’#’, ’:’

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]

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 ( )

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); 012345678 vanaf aantal hamburger