De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het.

Verwante presentaties


Presentatie over: "2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het."— Transcript van de presentatie:

1 2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies over de antwoorden: in de pauze nJe mag het werk behouden

2 1. Static methode nNiet buiten eigen klasse aanroepen nMag klasse-variabelen niet gebruiken nKan geen nieuwe objecten maken nLevert geen resultaat op ACBBAB BADDCA CBACBD DDCADC

3 2. Class A : B { C D; } nA is een B nB heeft een C nD heeft een C nC is een A ACBBAB BADDCA CBACBD DDCADC

4 3. Virtual methode nZonder return-opdracht nZonder body nLege body nHerdefinieerbaar in subklase ACBBAB BADDCA CBACBD DDCADC

5 4. Wat is expressie base in de body van method M in klasse K nSuperklasse van K nMethode M in superklasse van K nthis, met superklasse van K als type nConstructor van superklasse van K ACBBAB BADDCA CBACBD DDCADC

6 5. Array-elementen opsommen tussen accolades mag… nWel in member, niet lokaal nWel in declaratie, niet in toekenning nWel 1D, niet 2D nWel getallen, niet objecten ACBBAB BADDCA CBACBD DDCADC

7 6. A b = new C() mag… nAls constructor A virtual is nAls constructor C gecast naar A nAls constructor C gedefinieerd in A nAls C subklasse van A ACBBAB BADDCA CBACBD DDCADC

8 7. Uitkomst van '2' + 3 n53 n5 n'5' n"23" ACBBAB BADDCA CBACBD DDCADC

9 8. Aantal variabelen array nVastgelegd bij declaratie nVastgelegd als array gecreëerd nGroeit door toekenning a[t]=… nGroeit door opdracht a++ ACBBAB BADDCA CBACBD DDCADC

10 9. Wat fout in nQuotes ontbreken in a[t]=='x' nArray a niet new aangemaakt nelse moet weg nVervang if/else door return a[t]==x; ACBBAB BADDCA CBACBD DDCADC bool Bevat( char[] a, char x) { for (int t=0; y

11 10. Twee buttons met één event-handler Onderscheiden door… nKan niet nProperty van EventArgs-parameter nObject-parameter nProperty van de button ACBBAB BADDCA CBACBD DDCADC

12 11. Syntax/semantiek van try-catch nSyntax: nSemantiek: Voer opdrachten in blok1 uit Als er daarbij een exception optreedt van type zoals gedeclareerd, voer bijbehorend blok2 uit tryblok1catch(blok2)declaratie

13 12. Aanroepen van get/set minimethoden van property nGet: gebruik de property in een expressie nSet: gebruik property links van een toekenning nValue: heft de waarde van de rechterkant van die toekenning

14 13. String is immutable nInhoud van het object verandert niet meer nadat het is gecreëerd met new (niet: nadat het is gedeclareerd) nIndexer-property van string heeft wel een get, maar geen set (niet: is private)

15 14. Exceptions nNull pointer exception: als je van een objectverwijzing die niet naar een object wijst, toch een membervariabele gebruikt nArray bound exception: Als je een array gebruikt met een index die >=Length of <0

16 15. Aangeklikte punten tekenen vauit muisklik nGeen goed idee, want punten verdwijnen als window hertekend wordt (bijvoorbeeld na geminimaliseerd te zijn) nZet alle punten in een array, teken ze allemaal in Paint-eventhandler, doe Invalidate in MouseClick-eventhandler

17 16. Animatie nThread t = new Thread(run); nt.Start(); nvoid Run() { while(true) { pos.X ++; this.Invalidate(); Thread.Sleep(50); } }

18 17. String. Substring/Contains class String { } string Substring(int start, int lengte) { } return res; string res; res += this[start+t]; for (int t=0; t

19 18. Turven int [ ] turf = new int [11]; for (int t=0; t

20 Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a; a = new List(); …a.Get(5)… a.Set(5,…); …a.Count… array: oject dat een rij waarden bevat, met speciale notaties List: array “ingepakt” in een klasse, met standaard notaties nInvoegen nAchtervoegen a.Insert(5,…); List a; a = new List (); a.Add(…); uitgebreide ……a[5]…… a[5] = ……;

21 Voorbeeld: array class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); String [] alles; int n; alles = new String[100]; n = 0; for (int t=0; t

22 Voorbeeld: array class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); String [] alles; int n; alles = new String[100]; n = 0; for (int t=0; t

23 Hoe is List gemaakt? class List { } Elem [] elems; int n; © List () { elems = new Elem[10]; n = 0; } Elem Get (int p) { return elems[p]; } int Count { get { return n; } } void Add(Elem e) { } elems[n]=e; n++; if (n>=elems.Length) vergroot(); private void vergroot() { } Elem [] kopie; kopie= new Elem[2*n]; for (int t=0; t

24 Kan het ook anders? class List { } Elem [] elems; int n; © List () { elems = new Elem[10]; n = 0; } Elem Get (int p) { return elems[p]; } int Count { get { return n; } } void Add(Elem e) { } elems[n]=e; n++; if (n>=elems.Length) vergroot(); private void vergroot() { } Elem [] kopie; kopie= new Elem[2*n]; for (int t=0; t

25 Ja: je kunt een List maken zonder dat een array nodig is class AndereList { } …… © AndereList () { …… } Elem this[int p] { …… } int Count { …… } void Add(Elem e) { …… } null 3

26 Ja: je kunt een List maken zonder dat een array nodig is class AndereList { } …… © AndereList () { …… } Elem this[int p] { …… } int Count { …… } void Add(Elem e) { …… } null 3

27 Ja: je kunt een List maken zonder dat een array nodig is class AndereList { } …… interface IList { } int Count { get; } ; void Clear(); void Add(Elem e) ; Elem this [int p] { get; set; }; void Insert (int p, Elem e); © AndereList () { …… } Elem this[int p] { …… } int Count { …… } void Add(Elem e) { …… }

28 Namespace System.Collections.Generic List Andere List IList interfacediverse implementaties

29 Voorbeeld: List class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); alles = new String[100]; n = 0; for (int t=0; t

30 Varianten van List ICollectionIList ISet interface ICollection { void Add(Elem x); bool Remove(Elem x); bool Contains(Elem x); int Count { get; }; void Clear(); } interface IList : ICollection { Elem this[int n] { get; set; } ; int IndexOf(Elem x); void Insert(int n, Elem x); void RemoveAt(int n); } genummerd zonder dubbele

31 Implementaties van Collections LinkedList Queue Stack List HashSet SortedSet SortedList Sorted Dictionary IList ISet IDictionary ICollection

32 Voorbeeld: Collection class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); alles = new String[100]; n = 0; for (int t=0; t

33 Hoe doorloop je een Collection? nList nCollection for (int t=0; t

34 Implementaties van Collections IEnumerable IEnumerator IComparator LinkedList Queue Stack List HashSet SortedSet SortedList Sorted Dictionary IList ISet IDictionary ICollection

35 Toepassing: schets-editor SchetsWin Tools Akties Menu MDI- Container SchetsControl

36 Schets: Klasse-ontwerp Control Form UserControl Hoofdscherm SchetsWin SchetsControl Schets ImageBitmap Button Base Button RadioButton SchetsEditor System.Windows.Forms System.Drawing Program Container Control

37 Schets: Klasse-ontwerp Control Form UserControl Hoofdscherm SchetsWin SchetsControl Schets ImageBitmap Button Base Button RadioButton SchetsEditor System.Windows.Forms System.Drawing Program Container Control ISchetsTool TekstTool LijnTool PenTool GumTool RechthTool VolRechthTool TweepuntTool Startpunt Tool

38 Member-variabelen class SchetsWinclass SchetsControlclass Schets : Form: UserControl { } { } { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; Schets schets; Color kleur; Bitmap bm;

39 Schoonmaakwerk doen class SchetsWinclass SchetsControlclass Schets : Form: UserControl { } { } { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; Schets schets; Color kleur; Bitmap bm; void teken(...PEA p) { } schets.Teken (p.Graphics); void Teken (Graphics g) { } gr.DrawImage (bm, 0, 0); void Schoon(...AE a) { } schets.Schoon(); void Schoon( ) { } this.Invalidate(); Graphics. FromImage(bm); Graphics g = g.FillRectangle (White,0,0,w,h); SchetsWin() { } sc = new SchetsControl(); this.maakAkties(); void maakAkties() { } Button b b.Text = "Clear"; b.Click += sc.Schoon; = new Button();

40 Tool kiezen class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) void maakTools( { } ICollection tools) foreach (ISchetsTool tool in tools) { } RadioButton r = new RadioButton(); r.Text = tool.ToString(); r.Click += this.klikTool; r.Tag = tool;

41 Tool gebruiken class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; SchetsWin ( ) { } sc.MousePress += void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) sc = new SchetsControl ( ); this.muis; void muis ( object o, MEA mea) { } huidig.MuisVast( interface ISchetsTool { } void MuisVast( mea.Location) Point p); sc, SchetsControl s,

42 Tool gebruiken class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; SchetsWin ( ) { sc.MousePress += void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) sc = new SchetsControl ( ); ( object o, MEA mea) { } huidig.MuisVast( sc, mea.Location); interface ISchetsTool { } void MuisVast( Point p); SchetsControl s, } => anonieme methode

43 Schets-tools (1) ISchetsTool interface ISchetsTool { } void muisVast ( SchetsControl s, Point p) ; void muisLos ( SchetsControl s, Point p) ; void muisDrag ( Schetscontrol s, Point p ) ; void Letter ( SchetsControl s, char k) ;

44 Schets-tools (2) ISchetsTool Startpunt Tool abstract class StartpuntTool : ISchetsTool { } virtual void MuisVast ( SchetsControl s, Point p) {startpunt = p; } Point startpunt ; abstract void MuisDrag ( SchetsControl s, Point p) ; abstract void Letter ( SchetsControl s, Point p) ; virtual void MuisLos ( SchetsControl s, Point p) {kwast = new SolidBrush( s.Penkleur ); } Brush kwast ;

45 Schets-tools (3) ISchetsTool TekstTool Startpunt Tool class TekstTool : StartpuntTool { } override void Letter ( SchetsControl s, char c) { } Graphics g = s. MaakBitmapGraphics(); g. DrawString( c, kwast,..., startpunt ); startpunt.x += ……c….Width; override void MuisDrag ( SchetsControl s, Point p) { } override void MuisLos ( SchetsControl s, Point p) { }

46 Schets-tools (4) ISchetsTool TekstTool Tweepunt Tool Startpunt Tool abstract class TweepuntTool : StartpuntTool { } override void MuisDrag ( SchetsControl s, Point p) { } Graphics g = s. CreateGraphics(); this. Bezig (g, startpunt, p); abstract void Bezig (Graphics g, Point p1, Point p2) ; override void MuisLos ( SchetsControl s, Point p) { Graphics g = s. MaakBitmapGraphics(); this. Compleet (g, startpunt, p); } virtual void Compleet (Graphics g, Point p1, Point p2) { this. Bezig (g, p1, p2); }

47 Schets-tools (5) Tool Rechthoek Tool TekstTool Tweepunt Tool Startpunt Tool class RechthoekTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) g. DrawRectangle(kwast, Punten2Rechthoek(p1,p2) ); { } static Rectangle Punten2Rechthoek(Point p1, Point p2) { } return new Rectangle( new Point( Math.Min(p1.X,p2.X), Math.Min(p1.Y,p2.Y)) new Size ( Math.Abs(p1.X-p2.X), Math.Abs(p1.Y-p2.Y)) );

48 Schets-tools (6) Tool TekstTool Tweepunt Tool Startpunt Tool class VolRechthoekTool : RechthoekTool { } override void Compleet ( Graphics g, Point p1, Point p2 ) { } Rechthoek Tool VolRechth Tool g. FillRectangle(kwast, Punten2Rechthoek(p1,p2) );

49 Schets-tools (7) Tool LijnToolTekstTool Tweepunt Tool Startpunt Tool class LijnTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g. DrawLine( MaakPen(kwast,3), p1, p2 ); Rechthoek Tool VolRechth Tool

50 Schets-tools (8) Tool LijnToolPenToolTekstTool Tweepunt Tool Startpunt Tool class PenTool : LijnTool { } override void MuisDrag ( SchetsControl s, Point p ) { } this. MuisLos (s, p); this. MuisVast (s, p); Rechthoek Tool VolRechth Tool

51 Schets-tools (9) Tool LijnTool PenToolGumTool TekstTool Tweepunt Tool Startpunt Tool class GumTool : PenTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } Rechthoek Tool VolRechth Tool g. DrawLine( MaakPen(Brushes.White,7), p1, p2 );


Download ppt "2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het."

Verwante presentaties


Ads door Google