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.

Slides:



Advertisements
Verwante presentaties
Het type int Tekenen met Java operatoren
Advertisements

Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
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.
Algoritmiek Object-georiënteerd Programmeren
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
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.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
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.
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.
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 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
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.
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.
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 :
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.
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
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
Hoofdstuk 9.2 Strings.
string versus char string char klasse primitief type
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
Basis Gameprogrammeren
Gameprogrammeren: Herhalingen
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Tinpro015b-les4 Klassen.
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
Arjan Egges & Paul Bergervoet
Implementatie Zoekboom
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Transcript van de presentatie:

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 pauze

Opgave 1a: Hoe ziet een parameter er uit? nIn de header: nIn de aanroep: nVoid-methode heeft geen resultaatwaarde void meth(string s, int x) this.meth( "hallo", 3+5*a); type en naam expressie declaratie zonder ; Een voorbeeld in geen beschrijving!

nSyntax nSemantiek Opgave 1b: Toekenningsopdracht =expressie;variabele De waarde van de expressie wordt opgeslagen in de variabele

Opgave 1c: zinvol in plaats van int: nlong nshort ndouble Als de waarde >2miljard (31 bits) kan worden Als de waarde <32000 (15 bits) zal blijven, en je er heel veel nodig hebt …decimalen…achter de komma… …nauwkeurig…significante cijfers…

Opgave 1d: waarom mogen methoden variabelen van de klasse gebruiken? nObject is groepje variabelen met een klasse als type. nHet bestaat uit de variabelen die in de klasse zijn gedeclareerd. nMethode heeft object onder handen met als type de klasse waar hij in staat nIn dat object zijn dus de variabelen beschikbaar. nUitzondering: static methoden

Opgave 1e: Operatoren nEffect van nWaarde van x /= 5; ! p x += 1; Waarde van x wordt éénvijfde van wat hij was p is een Boolean variabele Als p true is: waarde !p is false Als p false is: waarde !p is true x = x+1;x = x/5;

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode

byte this var ; void v (bool b) b = true; true != b bool b = ! true Pen p; Pen p( ) (Pen p) (Pen) p 0xEC return void; while (x!=0) x *= 0; object Type / Expr / Opdr / Decl / Head / X Methode T E X O H O E D D H X E E X O T

T E X O H O E D D H X E E X O T ,51011

Opgave 3: Kopieer & Druiven o-o-o-o-o.o-o-o-o...o-o-o.....o-o o....

Opgave 3: Kopieer static string Kopieer (int n, string x) { } return res; static string Druiven (int n) } & Druiven string res = “”; res += x; int t; for (t=0; t<n; t++) { return res; string res = “”; for (int t=0; t<n; t++) { } res += regel + “\n”; regel = pt + os + “o” + pt; pt = Kopieer(t, “.”); os = Kopieer(n-1-t, “o-”); string pt, os, regel; o-o-o-o-o.o-o-o-o...o-o-o.....o-o o.... o-o-o-o-o.o-o-o-o...o-o-o.....o-o o....

Opgave 4: Roos

Roos ( ) { class Roos { } int x, y; void verplaats (obj o, MEA mea) { void meer (obj o, EA ea) { void teken (obj o, PEA pea) { } } } int n=1; } this.Paint += teken; this.MouseClick += verplaats; b. Click += meer; this.x = mea.X; this.y = mea.Y; this.Invalidate(); this.n ++; this.Invalidate(); Graphics g = pea.Graphics; g.FillEllipse( Brushes.Black, this.x-r, this.y-r, 2*r, 2*r); for (int t=0; t<this.n; t++) : Form int r = *t; } { Button b; b = new Button(); b.Text = “Meer”; b.Location=new Point(10,10); b.Size = new Size(60,30); this.Controls.Add(b); this.x = this.Width/2; this.y = this.Height/2;

Opgave 4: Roos (punten) Roos ( ) { class Roos { } int x, y; void verplaats (obj o, MEA mea) { void meer (obj o, EA ea) { void teken (obj o, PEA pea) { } } } int n=1; } this.Paint += teken; this.MouseClick += verplaats; b. Click += meer; this.x = mea.X; this.y = mea.Y; this.Invalidate(); this.n ++; this.Invalidate(); Graphics g = pea.Graphics; g.FillEllipse( Brushes.Black, this.x-r, this.y-r, 2*r, 2*r); for (int t=0; t<this.n; t++) : Form int r = *t; } { Button b; b = new Button(); b.Text = “Meer”; b.Location=new Point(10,10); b.Size = new Size(60,30); this.Controls.Add(b); this.x = this.Width/2; this.y = this.Height/2;

If-opdracht opdracht wordt alleen uitgevoerd als voorwaarde niet geldt if (temperatuur<0) uitvoer.Text = "Het vriest!”; else uitvoer.Text = "Het dooit."; opdracht wordt alleen uitgevoerd als voorwaarde geldt

CirkelGroei class Cirkel : Form { } void teken(object o, PEA pea) { } Button kleiner, groter; int straal = 100; void klik(object obj, EA ea) { } pea.Graphics.FillEllipse(, Brushes.Green, 150–this.straal, 150–this.straal, 2*this.straal, 2*this.straal ); this.straal –= 10; this.Invalidate(); if (obj==kleiner) this.straal += 10; if (obj==groter) && straal>10) && straal<150)

Thermometer class Thermo : Form { } Thermo() { } TrackBar min, temp, max; Button reset; void temp_Scroll(object o, EA ea) { this.InitializeComponent(); temp.Scroll += temp_Scroll; reset.Click += reset_Click; } int x = this.temp.Value; if (x < this.min.Value) this.min.Value = x; void reset_Click(object o, EA ea) { } this.min.Value = this.temp.Value; partial

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

Voorbeeld van Exception s = invoer. Text; n = int. Parse (s); uitvoer. Text = ( "kwadraat is " + n*n ); try { } catch ( Exception e ) { uitvoer. Text = ( s + " is geen getal" ); } kan een Exception opwerpen opvangen van het probleem

Hoofdstuk 8 Objecten en klassen

Klasse-definitie nOpsomming van methoden ieder bestaand uit opdrachten nBeschrijving van objecten door declaraties van variabelen bewerken class Teller : Form {... klik(...) { } } Teller() { }... teken(...) { } int t; Paint += teken; MouseClick+=klik; g.DrawString(t...); t = t+1; this.Invalidate(); t = 0;...

x Declaratie Declaratie reserveert geheugenruimte nVoor een object-verwijzing int x; x = 5; 5 b zoals be- schreven in klasse Button nVoor een object-waarde Button b; b = new Button(); Size s; s = new Size(10,20); h0 w zoals be- schreven in struct Size nVoor een primitieve waarde s

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

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

0 null 0 clientsize text paint null controls 0 null kleiner null groterstraal this CirkelGroei( ) { } Constructor // roept automatisch // constructor van // Form aan

500 clientsize text paint controls 0 null kleiner null groterstraal this CirkelGroei( ) { } Constructor // roept automatisch // constructor van // Form aan this.straal = 100; 100 this.ClientSize = new Size(300,300); 300

500 clientsize text paint controls 0 null kleiner null groterstraal this CirkelGroei( ) { } Constructor … this.Text = "CirkelGroei";

500 clientsize text paint controls 0 null kleiner null groterstraal this CirkelGroei( ) { } Constructor … this.Text = "CirkelGroei"; CirkelGroei this.Paint += this.teken; teken() {…}...new Button() location text click

500 clientsize text paint controls 0 kleiner null groterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.kleiner = new Button(); 0 0 location text click this.groter = new Button();

500 clientsize text paint controls 0 kleinergroterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.kleiner = new Button(); 0 0 location text click this.groter = new Button(); 0 0 location text click

500 clientsize text paint controls 0 kleinergroterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.kleiner.Text = "Kleiner"; 0 0 location text click 0 0 location text click Kleiner this.groter.Text = "Groter"; Groter

500 clientsize text paint controls 0 kleinergroterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.kleiner.Location = new Point(30,20); 0 0 location text click 0 0 location text click KleinerGroter this.groter.Location = new Point(200,20);

500 clientsize text paint controls 0 kleinergroterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.kleiner.Click = this.klik; 0 0 location text click 0 0 location text click KleinerGroter this.groter.Click = this.klik; klik() {…}

500 clientsize text paint controls 0 kleinergroterstraal this CirkelGroei( ) { } Constructor … CirkelGroei teken() {…} this.Controls.Add (this.groter); 0 0 location text click 0 0 location text click KleinerGroter klik() {…} this.Controls.Add (this.kleiner);

Klassen en objecten nKlasse-definitie in programma Object-creatie in Main nKlasse-definitie in library Object-creatie in constructor nKlasse-definitie in programma Object-creatie in constructor Button CirkelGroei Ruimte

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

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!

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

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

sim Samenhang van objecten Simulatie r1r2r3 stap auto d1d2d3 Ruimte d1d2d3 Ruimte x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje d1d2d3 Ruimte Button x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje geërfd van Form zelf gedeclareerd geërfd van UserControl

Constructie van nieuw object nGeheugenruimte klaarzetten nConstructormethode aanroepen new-expressie doet twee dingen: waarde is pijl naar het nieuwe object r1 d1d2d3 Ruimte die je kunt opslaan r1 = new Ruimte ( ) ;

Ruimte ( ) { } Constructormethode class Ruimte : UserControl { Deeltje d1, d2, d3; naam is hetzelfde als van de klasse geen resultaat- type! geërfd van Canvas this. BackColor = Color.LightYellow; this. Paint += this.tekenRuimte; d1 = new Deeltje (...); d2 = new Deeltje (...); d3 = new Deeltje (...);

class Deeltje { } De klasse Deeltje int x, y, dx, dy; Brush brush; public Deeltje (...) {...} public void DoeStap (...) {...} public void TekenDeeltje(Graphics g ) {...}

class Deeltje { } Methoden van klasse 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 ); }

class Deeltje { } Methoden van klasse 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 klassen nclass Simulatie : Form uSimulatie( ) ustap_Click, auto_Click(object o, EventArgs ea) nclass Ruimte : UserControl uRuimte( ) uTekenRuimte( object o, PaintEventArgs pea ) uDoeStap( ) nclass Deeltje uDeeltje(... ) uTekenDeeltje( Graphics g ) uDoeStap( Size s )

class Simulatie : Applet { } Methoden van klasse Simulatie Button stap, auto; Ruimte r1, r2, r3; void stap_Click(object o, EventArgs ea ) { r1. DoeStap( ); r2. DoeStap( ); r3. DoeStap( ); }

class Ruimte : UserControl { } Methoden van klasse Ruimte Deeltje d1, d2, d3; void TekenRuimte(object o, PaintEventArgs pea ) { Graphics gr = pea.Graphics; d1.TekenDeeltje(gr); d2.TekenDeeltje(gr); d3.TekenDeeltje(gr); } void DoeStap( ) { d1.DoeStap(this.Size); d2.DoeStap(this.Size); d3.DoeStap(this.Size); this.Invalidate(); }

Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje” zich zelfstandig ontwikkelende lijn van gebeurtenissen

Maak een animatie animatie. Start ( );this. run ( ); roept de methode aan die bij constructor is meegegeven Thread animatie; animatie = new Thread ( this.run ); en keert dan direct terug (terwijl de methode nog bezig is)

De methode run class Simulatie : Form { } void run ( ) { while (true) this. stap_Click (this, null ); {}{} oneindige herhaling! Thread. Sleep (50); milliseconden }

Starten van de animatie class Simulatie : Form { } void auto_Click(object o, EventArgs ea ) { } if (beweegt) { auto.Text = "Start"; beweegt = false; } else { } animatie = new Thread( this.run ); animatie. Start ( ); auto.Text = "Stop"; beweegt = true; Thread animatie; bool beweegt;

De methode run nogmaals class Simulatie : Form { } void run ( ) { while (true) this. stap_Click (this, null ); {}{} oneindige herhaling! Thread. Sleep (50); milliseconden } ( this.beweegt ) eindige herhaling.

Handiger Starten van de animatie class Simulatie : Form { } void auto_Click(object o, EventArgs ea ) { } if (beweegt) { auto.Text = "Start"; beweegt = false; } else { } animatie = new Thread( this.run ); animatie. Start ( ); auto.Text = "Stop"; beweegt = true; Thread animatie; bool beweegt; (animatie != null ) animatie = null;

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