Declaratie Declaratie reserveert geheugenruimte

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Het type int Tekenen met Java operatoren
Hoofdstuk 2 Hallo, C# !.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
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.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Hoofdstuk 9 Objecten en klassen.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
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.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 3 Methoden om te tekenen.
Over-erving nObjecten van een subklasse erven variabelen en methoden&properties van de superklasse kleiner straal CirkelGroei geërfd zelf gede- clareerd.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter.
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.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
Herhaling: He who does not learn from history, is doomed to repeat it.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
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
Reader en Writer leest en schrijft bytes leest string en char
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
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;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
Gameprogrammeren: Overerving in Painter
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
Practicum: schets-editor
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Arrays
Transcript van de presentatie:

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

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

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

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

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

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

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

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!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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]; &= }

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]; != }

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

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

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

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

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

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;

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

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;

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

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

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

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

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

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