De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.

Verwante presentaties


Presentatie over: "Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd."— Transcript van de presentatie:

1 Hoofdstuk 2 Hallo, C# !

2 Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd in klassen

3 en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de “waar was ik gebleven” administratie is best ingewikkeld! Soorten opdrachten nToekennings -opdracht: verander het geheugen nAanroep van een andere methode: voer eerst de opdrachten in die methode uit, en ga daarna verder waar je gebleven was

4 Voorbeeld C#-programma één klasse...met één methode...met twee opdrachten accolades begrenzen klasse, resp. methode using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); }

5 Syntax en semantiek nSyntax: de vorm van het programma compilatie eenheid using; klasse declaratie library naam nSemantiek: wat het programma betekent

6 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

7 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

8 Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.Length + " letters."); } Property van een object

9 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += toekenning

10 Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text = "Hallo"; scherm.BackColor = Color.Yellow; scherm.Size = new Size(200,100); using System.Drawing; declaratie en toekenning van een variabele met type Form gebruik van de variabele bij aanroep van Run aanpassen van properties

11 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

12 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie; += property naam variabele

13 Windows-applicatie class HalloWin2 { static void Main ( ) { } class HalloForm { } Form scherm; scherm = new Form( ); Application.Run(scherm); HalloForm scherm; scherm = new HalloForm( ); Application.Run(scherm); : Form subklasse is een gespecialiseerde versie aanroep van de constructor methode public HalloForm( ) { } definitie van de constructor methode this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100);

14 Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); Label groet; groet = new Label( ); this.Controls.Add(groet); groet.Text = "Hallo allemaal"; groet.Location = new Point(30,20);

15 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

16 Syntax van opdracht opdracht klasse naam object expressie. methode naam property naam scherm. Size groet. Text naam. Length property naam object expressie methode naam this.Controls. Add ( = klasse naam Color. Yellow Console. WriteLine Application. Run static

17 Static gewone methodenstatic methoden static Bewerken een objectBewerken geen object Aanroep: object. methode (…) Aanroep: klasse. methode (…) In de body van de definitie: this is dat object In de body van de definitie: this bestaat niet Voorbeeld: Controls.Add(groet);Application.Run(scherm); Mainis altijd static Constructormethoden zijn nooit static

18 Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); Label groet; groet = new Label( ); this.Controls.Add(groet); groet.Text = "Hallo allemaal"; groet.Location = new Point(30,20);

19 Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); this.Paint += this.teken; “Event”-property Methode-naam, maar geen aanroep!

20 Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); this.Paint += this.teken; } void teken( { Object o, PaintEventArgs pea ) pea.Graphics. DrawString( ); "Hallo!", 10, 10, Brushes.Blue, new Font("Tahoma", 30)

21 Hoofdstuk 3 Methoden om te tekenen

22 Methode-aanroep methode uit de klasse Graphics andere methoden uit Graphics void TekenScherm(object o, PaintEventArgs pea) { Graphics gr; gr = pea.Graphics; gr. DrawString ("Hallo!", new Font("Tahoma", 30), Brushes.Blue, 10, 20 ); gr. FillRectangle (Brushes.Red, 10,20, 50,60 ); gr. DrawLine (Pens.Black, 70,30, 20,20 ); }

23 Methoden uit Graphics nDrawString nFillRectangle nFillEllipse nDrawImage hallo x y nDrawLine nDrawRectangle nDrawEllipse

24 Methoden uit Graphics nDrawString nFillRectangle nFillEllipse nDrawImage hallo x y nDrawLine nDrawRectangle nDrawEllipse Pen parameter voor de kleur Brush parameter voor de kleur

25 Klassen en objecten nKlasse beschrijft mogelijkheden van object umethoden uproperties methode uit de klasse Graphics van object gr Graphics gr; gr = pea.Graphics; gr. DrawLine ( Pens.Red, 10,10, 20,20); string s; s = Console.ReadLine();... s. Length... property uit de klasse string van object s nObjecten ukunnen dingen doen uhebben geheugen

26 Tekenen gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); gr.DrawRectangle( Pens.Black, 0, 0, 200, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 ); compositie met blauw en rood (vrij naar Piet Mondriaan)

27 Tekening aanpassen nAanpassen van de dikte van de balken nAanpassen van de hoogte van het plaatje nAanpassen van de breedte van het plaatje gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); gr.DrawRectangle( Pens.Black, 0, 0, 200, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); erg veel werk...

28 Variabelen gr.FillRectangle( Brushes.Black, 10, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 50, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 90, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 0, 40, breedte, balk ); gr.FillRectangle( Brushes.Black, 0, 70, breedte, balk ); balk = 10; breedte = 200; hoogte = 100; int balk, breedte, hoogte; gebruik van variabelen toekennings- opdrachten: variabelen krijgen een waarde declaratie: aankondigen van variabelen en hun type type int: geheel getal

29 Variabelen groet = "Hallo " + naam + "!"; Console.WriteLine(groet); naam = Console.ReadLine(); string naam, groet; gebruik van variabelen toekennings- opdrachten: variabelen krijgen een waarde declaratie: aankondigen van variabelen en hun type type string: tekst

30 Variabelen groet. Text = "Hallo"; this.Controls. Add (groet); groet = new Label (); Label groet; gebruik van variabelen toekennings- opdrachten: variabelen krijgen een waarde declaratie: aankondigen van variabelen en hun type type Label: opschrift

31 Syntax van opdracht opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

32 Syntax van declaratie type klasse naam int string declaratie naamtype, =expressieconst ; var

33 Plaats van een declaratie blok declaratie opdracht {}

34 Variabelen gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); int balk, breed, hoog; balk=10; breed=200; hoog=100; gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

35 Variabelen gr.FillRectangle( Brushes.Black, 10, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 50, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 90, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 0, 40, breed, balk ); gr.FillRectangle( Brushes.Black, 0, 70, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70;

36 Variabelen gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; gr.FillRectangle( Brushes.Black, 0, y1, breed, balk ); gr.FillRectangle( Brushes.Black, 0, y2, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

37 Variabelen gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; gr.FillRectangle( Brushes.Black, 0, y1, breed, balk ); gr.FillRectangle( Brushes.Black, 0, y2, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, y1+balk, x1, y2-y1-balk ); gr.FillRectangle( Brushes.Red, x3+balk, 0, br-(x3+balk), y1 );

38 nExpressie: stukje programma met een waarde nGebruik van expressies: uRechterkant van een toekennings-opdracht uParameter van een methode Expressies x3 = x2+40 ; gr.FillRectangle(Brushes.Blue, 0, y1+balk, x1, y2-(y1+balk) ) ;

39 expressie Opbouw van expressies nconstante nvariabele n... operator... n(... ) 5 hoogte x + y (y + 1) + 1 x - expressie

40 Operatoren n+optellen n-aftrekken n*vermenigvuldigen n/delen n%rest bij deling bij deling van int-waarden: cijfers achter de komma worden afgekapt! 14 / 3 geeft 4 want 14 is 4*3 + 2 14 % 3 geeft 2

41 Prioriteit van operatoren nVermenigvuldigen gaat voor optellen nBij gelijke prioriteit: van links naar rechts nWil je ’t anders: zet haakjes 1 + 2 * 3 geeft 7 en delen en aftrekken 10 - 5 - 2 geeft 3 (1+2) * 3 geeft 9

42 Syntax van expressies expressie getal expressie operator expressie() variabele ”” symbool

43 Gebruik van expressies in opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

44 Gebruik van expressies in opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=

45 Gebruik van expressies in opdrachten en expressies opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += expressie constante expressie operator expressie() variabele

46 Het type van een expressie n98765 n"Hallo" nbreedte n67890+1 n"Hallo " + naam nnaam.Length n"Hallo " + naam.Length nBrushes.Black int string Brush int string int string type klasse naam int string

47 Het type van een expressie nBrushes.Black Brush Pen Form Font nPens.Blue nnew Form() nnew Font("Arial",10) Pen nnew Pen(Brushes.Red, 5) Brush nnew HatchBrush(HatchStyle.ZigZag, Color.Blue, Color.Red) Color nnew Color(255, 128, 0) Color.FromArgb

48 Kleuren (255,0,0) (0,255,0) (255,255,0) (0,0,255) (0,255,255) (255,0,255) (255,255,255) (0,0,0) Color. FromArgb(...)

49 Mengkleuren nColor.FromArgb(255, 0, 0) nColor.FromArgb(255, 255, 0) nColor.FromArgb(255, 64, 0) nColor.FromArgb(255, 128, 0) nColor.FromArgb(255, 192, 0)

50 -syntax expressie getal expressie operator expressie() variabele ”” symbool object expressie (), new klasse naam property naam this klasse naam methode naam.

51 Programma nasd using System.Windows.Forms; using System.Drawing; class Mondriaan : Form { Mondriaan() { this.Text = "Mondriaan"; this.BackColor = Color.White; this.ClientSize = new Size(200, 100); this.Paint += this.tekenScherm; } void tekenScherm(object obj, PaintEventArgs pea) { int breedte, hoogte, balk, x1, x2, x3, y1, y2; breedte = pea.ClipRectangle.Width; hoogte = pea.ClipRectangle.Height; x1 = 10; x2 = 50; x3 = 90; y1 = 40; y2 = 70; balk = 10; Graphics gr = pea.Graphics; gr.FillRectangle(Brushes.Black, x1, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x2, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x3, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, 0, y1, breedte,balk); gr.FillRectangle(Brushes.Black, 0, y2, breedte,balk); gr.FillRectangle(Brushes.Blue, 0, y1 + balk, x1, y2 - (y1 + balk)); gr.FillRectangle(Brushes.Red, x3+balk, 0, breedte-(x3+balk), y1); } static void Main() { Application.Run( new Mondriaan()); }

52 Programma nasd using System.Windows.Forms; using System.Drawing; class Mondriaan : Form { Mondriaan() { this.Text = "Mondriaan"; this.BackColor = Color.White; this.ClientSize = new Size(200, 100); this.Paint += this.tekenScherm; } void tekenScherm(object obj, PaintEventArgs pea) { int breedte, hoogte, balk, x1, x2, x3, y1, y2; breedte = pea.ClipRectangle.Width; hoogte = pea.ClipRectangle.Height; x1 = 10; x2 = 50; x3 = 90; y1 = 40; y2 = 70; balk = 10; Graphics gr = pea.Graphics; gr.FillRectangle(Brushes.Black, x1, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x2, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x3, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, 0, y1, breedte,balk); gr.FillRectangle(Brushes.Black, 0, y2, breedte,balk); gr.FillRectangle(Brushes.Blue, 0, y1 + balk, x1, y2 - (y1 + balk)); gr.FillRectangle(Brushes.Red, x3+balk, 0, breedte-(x3+balk), y1); } static void Main() { Application.Run( new Mondriaan()); } /* Dit programma tekent een Mondriaan-like "compositie met rood en blauw” */ // posities van de lijnen // zwarte balken // gekleurde vakken met commentaar

53 Commentaar nTekst voor de menselijke lezer, genegeerd door de compiler nTwee vormen: uvan /* tot */ uvan // tot einde regel

54 Hoofdstuk 3.6 Methode- declaraties

55 Nieuwe methoden nMethode: groepje opdrachten met een naam Aanroep van een methode voert opdrachten uit in de body daarvan private void tekenHuis(…) { …. DrawRectangle (…); …. DrawLine (…); …. DrawLine (…); } public void TekenScherm (object o, PaintEventArgs pea) { …. tekenHuis (…); …. tekenHuis (…); …. tekenHuis (…); }

56 Parameters …. DrawRectangle (…); …. DrawLine (…); …. DrawLine (…); } public void TekenScherm (object o, PaintEventArgs pea) { …. tekenHuis (…); …. tekenHuis (…); …. tekenHuis (…); } private void tekenHuis (…) { gr (Graphics gr, … ) parameter declareren (pea.Graphics, …); en bij aanroep meegeven

57 Het object this gr. DrawRectangle (…);gr. DrawLine (…); } …. tekenHuis (pea.Graphics, …); …. tekenHuis (pea.Graphics, …); …. tekenHuis (pea.Graphics, …); } private void tekenHuis (Graphics gr, …) { this this this this: het object dat TekenScherm ook al onder handen heeft class Huizen : Form { } public void TekenScherm (object o, PaintEventArgs pea) {

58 Meer parameters this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); } public void TekenScherm (object o, PaintEventArgs pea) { teken driemaal een net iets ander huis 20, 100, 40); 70, 100, 40); 120, 100, 60); nog meer parameters!

59 Meer parameters gr.DrawRect (pen,… ); gr.DrawLine (pen,… ); gr.DrawLine (pen,… ); } x, y-br,br, br int tx, ty; tx = x + br/2; ty = y – br – br/2; x, y-br, tx, ty tx, ty, x+br, y-br private void tekenHuis (Graphics gr, … ) { int x, int y, int br) this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); } public void TekenScherm (object o, PaintEventArgs pea) { (x,y)br (tx,ty) 20, 100, 40); 70, 100, 40); 120, 100, 60);

60 Huizen... int afdak = breedte / 6; Pen pen = new Pen(Color.DarkRed, 3); Brush br = new HatchBrush(HatchStyle.HorizontalBrick, Color.Silver, Color.Red );

61 Flexibiliteit nHoe meer parameters, des te flexibeler de methode (x,y) br h dakh private void tekenHuis (Graphics gr, int x, int y, int br, int h, int dakh, Brush kl, Brush dakKl, … ) { en des te lastiger aan te roepen...

62 Flexibiliteit Veel parameters: nNu lastig om te programmeren nIn de toekomst gemakkelijk uit te breiden Weinig parameters: n Nu gemakkelijk om te programmeren n In de toekomst lastig te onderhouden

63 Wat gaan we doen? college Tent. 1 Tent. 2 Tent. 3 college prakt. 1 prakt. 2 prakt. 3 prakt. 1 prakt. prakt. 1 prakt. prakt. 2 prakt. 3 17-19 15-17wo 15-17vr 13-15<24 11-1313-15 werkcoll nNu: Prakticum BBG 115 – 001 – 201 – 175 – 112 – 103 nWoensdag: werkcoll, hoorcoll, prakt 123456 S/T/UV/W


Download ppt "Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd."

Verwante presentaties


Ads door Google