De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Declaratie Declaratie reserveert geheugenruimte

Verwante presentaties


Presentatie over: "Declaratie Declaratie reserveert geheugenruimte"— Transcript van de presentatie:

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

2 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

3 Twee-dimensionale array
tabel 5 3 length int [ , ] tabel; 1 2 tabel = new int [5,3]; 3 4 tabel.GetLength(0) tabel.GetLength(1) 1 2

4 Creatie van nieuwe objecten
Objecten met als type een library-klasse type van het gewenste object Button b; b = new Button( ); Objecten met als type een zelfgemaakte klasse CirkelGroei cg; cg = new CirkelGroei( );

5 Creatie van objecten Opbouw van object is gespecificeerd in de klasse
class CirkelGroei { Opbouw van object is gespecificeerd in de klasse : Form int straal; Button kleiner , groter; // methoden... cg clientsize geërfd paint text controls } zelf gedeclareerd straal kleiner groter

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

7 Toepassing: Deeltjes-simulator
Hoofdstuk 8.2 Toepassing: Deeltjes-simulator

8 De klasse Simulatie class Simulatie : Form { Button stap, auto;
Ruimte r1, r2, r3; Simulatie( ) { stap = new Button(); stap.Text = "stap"; auto = new Button(); auto.Text ="start"; r1 = new Ruimte(); r2 = new Ruimte(); r3 = new Ruimte(); ... } Klasse Ruimte gaan we zelf maken!

9 heeft drie eigen Deeltje - objecten
De klasse Ruimte Ruimte is een uitbreiding van een bestaande Control class Ruimte { } : UserControl Deeltje d1, d2, d3; ieder Ruimte -object heeft drie eigen Deeltje - objecten // methoden nog toevoegen

10 om het deeltje te tekenen
De klasse Deeltje Deeltje is helemaal zelfgemaakt class Deeltje { } positie van het Deeltje int x, y; int dx, dy; snelheid van het Deeltje Brush brush; // methoden nog toevoegen om het deeltje te tekenen

11 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

12 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

13 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

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

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

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

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

18 Toepassing: Bitmap-editor
Hoofdstuk 10.1 Toepassing: Bitmap-editor

19 Toepassing: Bitmap-editor
Klik punten op scherm Plaatje verschuiven left, right, up, down Plaatje bewerken clear, invert, bold, outline “Game of life”

20 Opdeling in klassen Hoofdscherm gebruikersinterface, menu’s, akties, files BitmapControl tekenen van het plaatje op het scherm BitMap plaatje in geheugen, operaties

21 Member-variabelen class Hoofdscherm class BitmapControl class BitMap
BitmapControl viewer; MenuStrip menuStrip; class BitmapControl BitMap model; class BitMap bool [ , ] vakjes; : Form : UserControl zelfgemaakt

22 Methoden Hoofdscherm class Hoofdscherm : Form Hoofdscherm
vergroten // eventhandler voor Resize afsluiten // eventhandler voor "Close"-menu

23 Methoden BitmapControl
class BitmapControl : UserControl BitmapControl teken // eventhandler voor Paint klik // eventhandler voor MouseClick starten, stoppen // voor animatie-menu uitvoeren // voor andere menu-keuzes

24 Methoden BitMap class BitMap constructor BitMap, BitMap
properties Breedte, Hoogte schuiven Left, Right, Up, Down bewerken Clear, Invert, Bold, Outline game of life Life, buren

25 class Hoofdscherm public Hoofdscherm( ) {
} this . Text = "Bitmap Editor"; this . viewer = new BitmapControl(); this . menuStrip = new MenuStrip( ); this . maakMenu(); this . Controls . Add(menuStrip); this . Controls . Add(viewer); this . Resize += this.vergroten; this . vergroten(null, null); // meteen al even

26 class Hoofdscherm MenuStrip menuStrip; BitmapControl viewer;
private void maakMenu( ) { ToolStripDropDownItem menu; menu = new ToolStripDropDownItem("File"); menu.DropDownItems.Add("Close", null, this.afsluiten); menuStrip . Items . Add(menu); menu = new ToolStripMenuItem("Move"); menu.DropDownItems.Add("Left", null, viewer.uitvoeren); menu.DropDownItems.Add("Right",null, viewer.uitvoeren); menu.DropDownItems.Add("Up", null, viewer.uitvoeren); menu.DropDownItems.Add("Down",null, viewer.uitvoeren); menuStrip . Items . Add(menu); }

27 Methoden BitMap class BitMap constructor BitMap, BitMap
properties Breedte, Hoogte schuiven Left, Right, Up, Down bewerken Clear, Invert, Bold, Outline game of life Life, buren

28 class BitMap public BitMap ( int w, int h ) { }
vakjes = new bool [w , h]; public BitMap ( BitMap ander) { } vakjes = new bool [ander.Breedte , ander.Hoogte]; this.Kopieer(ander); property public int Breedte { } get { return vakjes.GetLength(0); } public int Hoogte { } get { return vakjes.GetLength(1); }

29 class BitMap public void Clear ( ) {
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = false; } public void Kopieer (Bitmap ander) { for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; }

30 class BitMap public void Kopieer (Bitmap ander) {
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; } public void Kopieer (Bitmap ander) { Invert for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; ! }

31 class BitMap public void Kopieer (Bitmap ander) {
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; } public void Kopieer (Bitmap ander) { Overlay for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; |= }

32 class BitMap public void Kopieer (Bitmap ander) {
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; } public void Kopieer (Bitmap ander) { Masker for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; &= }

33 class BitMap public void Kopieer (Bitmap ander) {
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = ander.vakjes[x, y]; } public void Masker (Bitmap ander) { Verschil for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) vakjes[x, y] = vakjes[x,y] && ander.vakjes[x, y]; != }

34 class BitMap public void Left ( ) { }
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) { vakjes[this.Breedte-1, y] = false; } 1 vakjes[x-1, y] = vakjes[x,y];

35 class BitMap public void Right ( ) { }
for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<Breedte; x++) { vakjes[0, y] = false; } Breedte-1; x>0; x-- ) vakjes[x, y] = vakjes[x-1 ,y];

36 class BitMap public void Bold ( ) { BitMap ander;
ander = new BitMap(this); ander . Left ( ); this . Overlay(ander); ander = new BitMap(this); ander . Down ( ); this . Overlay(Ander); }

37 class BitMap public void Outline ( ) { BitMap ander;
ander = new BitMap(this); ander . Left ( ); ander . Down ( ); this . Verschil(ander); }

38 class BitMap public void Life ( ) { BitMap oud;
oud = new BitMap(this); for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { int n = oud . buren(x,y); vakjes[x, y] = n==3 || n==2 && oud.vakjes[x,y] ; } }

39 class BitMap public int buren (int x, int y ) { xl xr yb yo return n;
int xl = x-1; int xr = x+1; int yb = y-1; int yo = y+1; if (xl<0) xl += Breedte; if (xr>=breed) xr -= Breedte; if (yb<0) yb += Hoogte; if (yo>=hoog) yo -= Hoogte; int n = 0; if ( this.vakjes[xl,yb] ) n++; if ( this.vakjes[x ,yb] ) n++; if ( this.vakjes[xr,yb] ) n++; if ( this.vakjes[xl,y ] ) n++; if ( this.vakjes[xr,y ] ) n++; if ( this.vakjes[xl,yo] ) n++; if ( this.vakjes[x ,yo] ) n++; if ( this.vakjes[xr,yo] ) n++; xl xr yb yo return n;

40 meer-cellig “wezen” loopt!
Game of Life meer-cellig “wezen” loopt! stabiel patroon stabiel patroon

41 Methoden BitmapControl
class BitmapControl : UserControl BitmapControl teken // eventhandler voor Paint klik // eventhandler voor MouseClick starten, stoppen // voor animatie-menu uitvoeren // voor andere menu-keuzes membervariabele: Bitmap model;

42 class BitmapControl class BitmapControl { Bitmap model;
public BitmapControl ( ) { } model = new Bitmap(20, 20); this . Paint = teken; this . MouseClick += klik;

43 class BitmapControl void teken ( object o, PEA pea ) {
Graphics gr = pea.Graphics; int d = this . Diameter; this . lijnen (gr, d); for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { } Brush br; if (model.vakjes[x,y]) br = Brushes.Red; else br = Brushes.White; gr . FillRectangle (br, x, y, 1, 1); x*d+1, y*d+1, d-1, d-1 ); x*d, y*d, d, d ); }

44 class BitmapControl public int Diameter { get {
Size s = this . ClientSize; return Math . Min ( , ); s.Width / model.Breedte s.Height / model.Hoogte } }

45 class BitmapControl private void lijnen ( Graphics gr, int d) {
Pen p = Color.Blue; // horizontale lijnen for (int y=0; y <= Hoogte; y++) gr . drawLine ( p, 0, y*d, model.Breedte*d, y*d ); // verticale lijnen for (int x=0; x <= Breedte; x++) gr . drawLine ( p, x*d, 0, x*d, model.Hoogte*d ); }

46 class BitmapControl void klik ( object o, MouseEventArgs mea ) {
int diam = this . Diameter; model.vakjes[ , ] = mea . X / diam mea . Y / diam mea.Button==MouseButtons.Left ; this . Invalidate ( ); }

47 class BitmapControl void uivoeren ( object sender, EventArgs ea ) {
String keus = sender.ToString(); if (keus=="Clear") this.model.Clear(); if (keus=="Left") this.model.Left(); if (keus=="Right") this.model.Right(); if (keus=="Up") this.model.Up(); if (keus=="Down") this.model.Down(); if (keus=="Step") this.model.Step(); this . Invalidate ( ); }


Download ppt "Declaratie Declaratie reserveert geheugenruimte"

Verwante presentaties


Ads door Google