1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.

Slides:



Advertisements
Verwante presentaties
Hoofdstuk 2 Hallo, C# !.
Advertisements

Inleidend probleem Data structuur (hiërarchie van classes)
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.
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.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
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.
Polymorphisme en Interfaces: inleiding
Hoofdstuk 3 Methoden om te tekenen.
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
Hoofdstuk 3 Tekenen en rekenen.
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
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
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.
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 :
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie; if)(expressieopdrachtblok.
Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Game Object Structuren
Activity Bij het starten van een app:
…is eigenlijk overbodig!
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
Gameprogrammeren: Lists en interfaces
Schilderij class MijnAct : Activity { MijnView scherm;
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie
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
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Aanroep van een methode voert opdrachten uit in de body daarvan
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Interface In de library In je eigen programma wat is er nodig om een
Arjan Egges & Paul Bergervoet
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Transcript van de presentatie:

1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies over de antwoorden: in de pauze nJe mag het werk behouden

1. Een klasse is… nEen groepje opdrachten nEen groepje variabelen nEen groepje methoden nEen groepje parameters ACBBAB BADDCA CBACBD DDCADC methode object 3% 0.5% 96% 0.5%

2. Een klasse is ook… nHet type van een object nHet type van een methode nHet type van een opdracht nHet type van een aanroep ACBBAB BADDCA CBACBD DDCADC opdrachten methoden klasse variabelen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken 81% 9% 3% 7%

3. Void wordt gebruikt in de header van een… nConstructormethode nMethode zonder parameters nMethode zonder body nMethode zonder resultaat ACBBAB BADDCA CBACBD DDCADC % 5% 3% 84%

4. Gebruik float i.p.v. double nNiet veel decimalen achter de punt nExtra veel decimalen achter de punt nGeen decimale punt nPrecieze financiële berekeningen ACBBAB BADDCA CBACBD DDCADC double int decimal 56% 32% 8% 3%

5. Matrix gebruik je voor… nRangschikken views in een raster nBeschrijven geometrische transformatie nBitmap decoderen nBitmap tekenen ACBBAB BADDCA CBACBD DDCADC Matrix mat = new Matrix(); mat.PostScale(schaalx, schaaly); mat.Rotate(hoek); Bitmap b = BitmapFactory.DecodeResource(x); canvas.DrawBitmap(b, 10, 20, verf); canvas.DrawBitmap(b, mat, verf); LinearLayout 11% 66% 7% 17%

6. Null pointer exception treedt op… nIn try-deel van try/catch(NullPtrExc) nIn catch-deel van try/catch(NullPtrExc) nBij gebruik van een variabele uit object zonder waarde nBij gebruik van niet-gedeclareerd object ACBBAB BADDCA CBACBD DDCADC % 32% 42% 9%

7. Radio-buttons heten zo omdat… nVorm lijkt op volume/afstem-knoppen nGedrag lijkt op bandselectie-knoppen nGroepering lijkt op afstem-veld nVorm lijkt op kattenoog …van vroegere radio’s ACBBAB BADDCA CBACBD DDCADC % 60% 13% 5%

8. new Color(255, 128, 0) nLichtblauw nRoze nDonkergroen nOranje ACBBAB BADDCA CBACBD DDCADC rood groenblauw (255,0,0) (0,255,0) (255,255,0) (0,0,255) (0,255,255) (255,0,255) (255,255,255) (0,0,0) new Color(255, 0, 0) new Color(255, 64, 0) new Color(255, 128, 0) new Color(255, 192, 0) new Color(255, 255, 0) 3% 19% 15% 63%

9. Aan het eind van … roep je Invalidate aan: neen eventhandler omdat variabelen buiten de methode zijn veranderd nOnDraw omdat plaatje opnieuw getekend moet worden neen overriden methode omdat oorspronkelijke methode is veranderd nconstructor van subklasse van View omdat oorspronkelijke object is veranderd ACBBAB BADDCA CBACBD DDCADC % 28% 8% 11%

10. Wat is 45 % 10 n4 n5 n0.5 n40.5 ACBBAB BADDCA CBACBD DDCADC % 81% 2% 6%

11. Waar staan declaraties? namespace N { class K : S { void M( ) { } int x; int x in de body van een klasse in de header van een methode in de body van een methode in de header van een klasse buiten de klasse te gebruiken in alle methoden om parameters te ontvangen voor tijdelijke tussenresultaten

12. Interface In libraries worden naast klassen ook interfaces gedefinieerd nWat is er anders dan in een klasse? nWaar gebruik je de interface-naam? nWelke verplichting brengt dat met zich mee?

Interface nIn de library nIn je eigen programma interface ISensorEventListener { } public void OnSensorChanged(SensorEvent s); class KompasView : View { } public KompasView(Context c) : base(c) { } public OnDraw(Canvas c) { } public void OnSensorChanged(SensorEvent s) { }, ISensorEventListener wat is er nodig om een ISensorEventListener te zijn? deze methode! ik beloof een ISensorEventListener te zijn en implementeer dus de methode! public void OnAccuracyChanged(SensorEvent s);

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource (...UU...); } class KompasView : View public void OnSensorChanged(SensorEvent s) { } Bitmap b;float Schaal;float Hoek;, ISensorEventListener canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(- Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(-b.Width/2, -b.Height/2); Hoek = s.Values[0]; this.Invalidate( ); SensorManager sm = c. GetSystemService(...); sm.RegisterListener(this,...Orientation... ); is een geldige ISensorEventListener want zijn klasse heeft deze methode belooft methodes

12. Interface In libraries worden naast klassen ook interfaces gedefinieerd nWat is er anders dan in een klasse? alleen methode-headers, zonder bodies nWaar gebruik je de interface-naam? aan het eind van de header van je klasse nWelke verplichting brengt dat met zich mee? om de gespecificeerde methodes inderdaad te definiëren

"/\" x++2 override DateTime string this.new false&&true DateTime nu; return null; bool b=true; DateTime. Now Hallo(Color c) new Button (this) override void a() foreach (A b in c) ; wit.Color = Color.White; Type / Expr / Opdr / Decl / Head / X Methode T E O E D T E OD H X X X X X TO D H O E H

"/\" x++2 override DateTime string this.new false&&true DateTime nu; return null; bool b=true; DateTime. Now Hallo(Color c) new Button (this) override void a() foreach (A b in c) ; wit.Color = Color.White; T E O E D X X X X TO D H O E H goed aantal cijfer

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

Opgave 14: Kopieer public string Kopieer } return res; public string Druiven (int n) } & Druiven string res = ""; 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.... { (int n, string x)

14c: AndroidApp override void OnCreate(Bundle b) { class DruivenApp { SeekBar b; TextView t; void schuif (obj o, EA ea) { } } } int r = b.Progress; base.OnCreate(b); b = new SeekBar(this); t = new TextView(this); LinearLayout stapel = new LinearLayout(this); stapel.AddView(b); stapel.AddView(t); SetContentView(stapel); b.ProgressChanged += schuif; string s = this.Druiven(r); t.Text = s; b.Max = 10; : Activity t.Text = this.Druiven(b.Progress);

Practicum opgave 2: Running App v.2 3 extra knoppen toevoegen: nSharen van data nScherm voor analyse van track nOpslaan van tracks in een database

Cirkel- klikker } { protected override void OnDraw(Canvas c) { base.OnDraw(c); } public MijnView(Context c) : base(c) { this.Touch += raakAan; } class MijnView : View public void raakAan(object o, TouchEventArgs tea) { } } c.DrawCircle(p.X, p.Y, 50, new Paint()); x = tea.Event.GetX(); y = tea.Event.GetY(); this.Invalidate(); float x, y; PointF p; p = new PointF(x, y); if (p != null)

Cirkel- klikker } { protected override void OnDraw(Canvas c) { base.OnDraw(c); } public MijnView(Context c) : base(c) { this.Touch += raakAan; } class MijnView : View public void raakAan(object o, TouchEventArgs tea) { } } c.DrawBitmap(b, p.X, p.Y, new Paint()); x = tea.Event.GetX(); y = tea.Event.GetY(); this.Invalidate(); float x, y; PointF p; p = new PointF(x, y); if (p != null) met bitmap b = BitmapFactory.DecodeResource (...Icon...); Bitmap b;

Punten- klikker } { protected override void OnDraw(Canvas c) { base.OnDraw(c); } public MijnView(Context c) : base(c) { this.Touch += raakAan; } class MijnView : View public void raakAan(object o, TouchEventArgs tea) { } } c.DrawBitmap(b, p.X, p.Y, new Paint()); x = tea.Event.GetX(); y = tea.Event.GetY(); this.Invalidate(); float x, y; PointF p; p = new PointF(x, y); foreach( PointF p in alles) met bitmap b = BitmapFactory.DecodeResource (...Icon...); Bitmap b; List alles = new List ( ) ; alles.Add(p);

Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken

Een eigen klasse om variabelen te groeperen nVoorbeeld: een Kleur bestaat uit Rood, Groen, Blauw { class Kleur } byte Rood; byte Groen; byte Blauw; public Kleur paars; paars = new Kleur(); paars.Rood = 128; paars.Blauw = 128; paars.Groen = 0; int x = paars.Grijswaarde();

Eigen klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( ) { } Rood=255; Groen=255; Blauw=255; constructor-methode public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b; constructor-methode met parameters public Kleur( byte x) { } Rood=x; Groen=x; Blauw=x; nog een constructor-methode public byte Grijswaarde( ) { } return (3*Rood + 6*Groen + Blauw) / 10; methode die iets uitrekent

Gebruik van klasse Kleur Kleur wit, paars, oranje, lichtgrijs, donkergrijs; wit = new Kleur( ); paars = new Kleur( 128, 0, 128 ); oranje = new Kleur( 255, 128, 0 ); lichtgrijs = new Kleur( 180 ); donkergrijs = new Kleur( 60 ); byte x = oranje.Grijswaarde( ); Kleur oranjeInZwartwit; oranjeInZwartwit = new Kleur(x); oranje.MaakDonkerder( ); aanroep van een constructor-methode aanroep van een methode met een resultaat aanroep van een void-methode

Methodes in de eigen klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; return (3*Rood + 6*Groen + Blauw) / 10; methode die iets uitrekent void-methode die het object verandert Rood = Rood * 0.9; Groen = Groen * 0.9; Blauw = Blauw * 0.9; Rood = (byte) (Rood * 0.9) ; Groen = (byte) (Groen * 0.9) ; Blauw = (byte) (Blauw * 0.9) ; de variabelen van public string ToString( ) { } return $"{Rood} {Groen} {Blauw}"; override : object methode die een leesbare versie van de Kleur maakt elke klasse is automatisch subklasse van object (byte) (0.3*Rood + 0.6*Groen + 0.1*Blauw); public byte Grijswaarde( ) { } public void MaakDonkerder( ) { }

Gebruik van klasse Kleur Kleur oranje = new Kleur( 255, 128, 0); oranje.MaakDonkerder( ); aanroep van een void-methode string s = oranje.ToString( ); class MijnApp : Application { TextField tf; void OnCreate(Bundle b) { base.OnCreate(b); tf = new TextField(this); tf.Text = s; aanroep van een methode met een resultaat

Gebruik van klasse Kleur Kleur oranje = new Kleur( 255, 128, 0); oranje.MaakDonkerder( ); aanroep van een void-methode string s = oranje.ToString( ); class MijnView : View { void OnDraw(Canvas c) { Paint verf = new Paint( ); c.DrawText( s, 10, 10, verf); aanroep van een methode met een resultaat

Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b; constructor-methode met parameters public Kleur( Kleur orig ) { } Rood=orig.Rood; Groen=orig.Groen; Blauw=orig.Blauw; constructor-methode die een kopie maakt public Kleur( string s ) { } constructor-methode die een string ontleedt string[ ] woorden = s.Split( ); Rood = woorden[0]; Groen = woorden[1]; Blauw = woorden[2]; Rood = byte.Parse( woorden[0] ); Groen = byte.Parse( woorden[1] ); Blauw = byte.Parse( woorden[2] ); array van strings handige methode van string

Zelf arrays maken string[ ] woorden = s.Split( ); string[ ] dagen = { "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag" }; int[ ] maandlengtes = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; Kleur[ ] palet = { new Kleur(255,0,0), new Kleur(), new Kleur(0,0,255), oranje }; foreach ( string dag in dagen ) { } canvas.DrawText ( dag, 10, y, verf ); y = y+50;

Intent nIntent: bedoeling om een nieuwe activiteit te starten ueigen activiteit §Hallo §Teller ustandard §web-browser §text-sender

Multi public class Multi : Activity { protected override void OnCreate(Bundle b) { base.OnCreate(b); } b1 = new Button(this); b2 = new Button(this); } Button b1, b2, b3, b4, b5, b6; b1.Text = "Hallo"; b2.Text = "Teller"; b1.Click += klik1; b2.Click += klik2; LinearLayout lay = new LinearLayout(this); lay.AddView(b1); lay.AddView(b2); SetContentView(lay); public void klik1(object o, EventArgs e) { }

Intent: Hallo opstarten public class Multi : Activity { } Button b1, b2, b3, b4, b5, b6; public void klik1 (object o, EventArgs e) { } Intent i; i = new Intent (this, StartActivity(i); typeof(Hallo) ); i.PutExtra("wat", "Hallo!!!"); public class Hallo : Activity { } override void OnCreate(Bundle b) { base.OnCreate(b); } TextView t = new TextView(this); SetContentView(t); string s = Intent.GetStringExtra("wat"); t.Text = s; hier zijn 24 verschillende varianten van......maar net niet die je nodig hebt, bijv. Kleur i.PutExtra("kleur", oranje.ToString()); string s = Intent.GetStringExtra("kleur"); Kleur k = new Kleur(s);

Practicum opgave 2: Running App v.2 3 extra knoppen toevoegen: nSharen van data nScherm voor analyse van track nOpslaan van tracks in een database