Activity Bij het starten van een app: Operating system maakt een Activity -object aan… …en neemt dat onderhanden met de methode OnCreate( ) Klasse uit library Android.App Methode uit klasse Activity
Maak je eigen View bestaat nog niet… protected override void OnCreate(Bundle b) { base.OnCreate(b); TextView t; t = new TextView(this); this.SetContentView(t); AnalogClock a; a = new AnalogClock(this); this.SetContentView(a); MondiaanView m; m = new MondriaanView(this); this.SetContentView(m); }
Maak je eigen View public class MondriaanView : View { public MondriaanView(Context ct) { } : base(ct) base.View(ct); this.SetBackgroundColor(Color.White); protected override void OnDraw(Canvas cv) { base.OnDraw(cv); cv . DrawLine(…); cv . DrawRect(…); cv . DrawCircle(….); } }
Hallo x (0,0) y DrawText DrawLine DrawBitmap DrawRect DrawOval links boven rechts onder DrawBitmap (x,y) Android-versie DrawOval DrawCircle (x,y) r
compositie met blauw en rood (vrij naar Piet Mondriaan) Tekenen compositie met blauw en rood (vrij naar Piet Mondriaan) Paint verf; verf = new Paint(); verf.Color=Color.Black; cv.DrawRect( 10, 0, 20, 100, verf ); cv.DrawRect( 50, 0, 60, 100, verf ); cv.DrawRect( 90, 0, 100, 100, verf ); cv.DrawRect( 0, 40, 200, 50, verf ); cv.DrawRect( 0, 70, 200, 80, verf ); verf.Color = Color.Blue; cv.DrawRect( 0, 50, 10, 70, verf ); verf.Color = Color.Red; cv.DrawRect(100, 0, 200, 40, verf );
Variabelen x1 x2 x3 y1 y2 int balk, breed, hoog int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; balk = 10; breed = 200; hoog = 100; Paint verf; verf = new Paint(); verf.Color=Color.Black; cv.DrawRect( x1, 0, x1+balk, hoog, verf ); cv.DrawRect( x2, 0, x2+balk, hoog, verf ); cv.DrawRect( x3, 0, x3+balk, hoog, verf ); cv.DrawRect( 0, y1, breed, y1+balk, verf ); cv.DrawRect( 0, y2, breed, y2+balk, verf ); verf.Color = Color.Blue; cv.DrawRect( 0, y1+balk, x1, y2, verf ); verf.Color = Color.Red; cv.DrawRect(x3+balk, 0, breed, y1, verf );
Makkelijk aanpasbaar?
Syntax van declaratie declaratie const = expressie var type naam ; , klasse naam int string
Syntax van expressies expressie getal ” ” symbool variabele expressie operator expressie ( expressie )
Gebruik van expressies in opdrachten klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Gebruik van expressies in opdrachten klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Gebruik van expressies in opdrachten en expressies klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; expressie constante operator ( ) variabele
Maak je eigen methode-definities Hoofdstuk 4.6-7 Maak je eigen methode-definities
Voorbeeld: Huizen
Aanroep van een methode voert opdrachten uit in de body daarvan Nieuwe methoden private void tekenHuis(…) { … . DrawRect (…); … . DrawLine (…); … . DrawLine (…); } Methode: groepje opdrachten met een naam protected override void OnDraw(Canvas c) { … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…); } Aanroep van een methode voert opdrachten uit in de body daarvan
en bij aanroep meegeven Parameters private void tekenHuis (…) { (Canvas c, … ) c … . DrawRect (…); … . DrawLine (…); … . DrawLine (…); parameter declareren } protected override void OnDraw(Canvas c) { en bij aanroep meegeven … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…); (c, …); }
this: het object dat OnDraw ook al onder handen heeft Het object this class HuizenView : View { } private void tekenHuis (Canvas c, …) { c . DrawRect (…); c . DrawLine (…); c . DrawLine (…); } protected override void OnDraw(Canvas c) { this: het object dat OnDraw ook al onder handen heeft this this this … . tekenHuis (c, …); … . tekenHuis (c, …); … . tekenHuis (c, …); }
teken driemaal een net iets ander huis Meer parameters teken driemaal een net iets ander huis nog meer parameters! protected override void OnDraw(Canvas c) { this . tekenHuis (c, …); this . tekenHuis (c, …); this . tekenHuis (c, …); 20, 100, 40); 70, 100, 40); 120, 100, 60); }
Meer parameters private void tekenHuis (Canvas c, … ) { Paint verf = new Paint(); int x, int y, int br) (tx,ty) int tx = x+br/2; int ty = y–br–br/2; c.DrawRect ( … , verf); c.DrawLine ( … , verf); c.DrawLine ( … , verf); x, y-br, x+br, y x, y-br, tx, ty tx, ty, x+br, y-br } (x,y) br protected override void OnDraw(Canvas c) { this . tekenHuis (c, …); this . tekenHuis (c, …); this . tekenHuis (c, …); 20, 100, 40); 70, 100, 40); 120, 100, 60); }
en des te lastiger aan te roepen... Flexibiliteit Hoe meer parameters, des te flexibeler de methode private void tekenHuis (Graphics gr, int x, int y, int br, int h, int dakh, Color kl, Color dakKl, … ) { dakh en des te lastiger aan te roepen... h (x,y) br
Flexibiliteit Veel parameters: Nu lastig om te programmeren In de toekomst gemakkelijk uit te breiden Weinig parameters: Nu gemakkelijk om te programmeren In de toekomst lastig te onderhouden
Communicatie met methoden Parameters : aanroeper geeft waarde door aan de methode Methode-resultaat : methode geeft waarde terug aan de aanroeper net zoals een wiskundige functie
Methoden met een resultaat type van het resultaat private int kwadraat (int x) { return x*x ; } waarde van het resultaat in speciale return-opdracht
Publieksvraag Schrijf een methode driewerf met een String-parameter, die 3 herhalingen ervan oplevert this.driewerf("Hoera!") "Hoera!Hoera!Hoera!" private string driewerf (string x) { } return x+x+x;
Aanroep van methoden Aanroep van void-methode geldt als opdracht zonder resultaat Aanroep van void-methode geldt als opdracht c.DrawLine(10,10, 20,20, verf) ; Aanroep van methode met resultaat geldt als expressie a = this.kwadraat (5) ; c.DrawLine(this.kwadraat (5), 10, 25, 50, verf); … this.kwadraat (5) + 1 …
Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; return expressie ;
Variabelen en objecten Hoofdstuk 5.1-2 Variabelen en objecten
Variabelen Variabele: geheugenplaats met een naam Declaratie: aangifte van het type van de variabele int x, y; x y 20 Toekenningsopdracht: variabele krijgt waarde x = 20;
Toekenningsopdrachten int x, y; x = 20 ; x y 20 50 25 26 Expressie aan de rechterkant mag andere variabelen gebruiken y = x + 5 ; Vorige waarde gaat verloren x = y * 2 ; y = y + 1 ;
Declaratie en toekenningen Eén keer declarareren Mogelijk meerdere toekenningen Declaratie en eerste toekenning int x; int x = 100; x = 100; x = 100; x = 250; x = x + 1; x = 2 * x;
Type van variabelen int geheel getal float getal met drijvende komma int x; float y; x 10 3 y 3.141592 3.333333 10.0 int geheel getal float getal met drijvende komma x = 10 ; y = 3.141592f ; y = 10 ; x = x / 3 ; y = y / 3 ;
Standaardtypes gehele getallen met een decimale punt 1 byte sbyte ± 127 byte 0..255 28-1 2 bytes short ± 32767 ushort 0..65535 216-1 4 bytes int ± 2 miljard uint 0..4 miljard 232-1 8 bytes long ± 1018 ulong 0..1019 264-1 met een decimale punt 4 bytes float 7 cijfers, afgerond, ≤1038 8 bytes double 15 cijfers, afgerond, ≤10300 16 bytes decimal 28 cijfers, exact, ≤1028
Constanten geheel getal (kleinst passende) met een decimale punt string hexadecimaal 137 –25 0x1A 0xFF 26 255 0.5 –273.15 6.02E23 1E3 3E–11 602000000000000000000000 1000 0.00000000003 "Hallo!" "A" "" "een \"citaat\"" "\n" "\\"
Objecten Object: groepje variabelen dat bij elkaar hoort 255 r g b 100 b 100 w 20 h 10 30 Left Right 20 Top 40 Bottom
Programma en Geheugen opdrachten variabelen methoden objecten klasse veranderen zijn gegroepeerd in zijn gegroepeerd in methoden objecten bewerken zijn gegroepeerd in hebben als type klasse klasse klasse
Objecten Object: groepje variabelen dat bij elkaar hoort 255 r g b 100 b 100 w 20 h 10 30 Left Right 20 Top 40 Bottom Size Color Rect 3 aantal 199.95 prijs Artikel
Syntax van declaratie declaratie const = expressie var type naam ; , klasse naam int float string
Publieksvraag a2 + b2 = c2 Schrijf methodes omtrek en diagonaal met een Rect als parameter, die dat uitrekenen Left Top Right Bottom br h public double diagonaal(Rect r) { } public int omtrek (Rect r) { } int br = r.Right-r.Left; int h = r.Bottom-r.Top; int a = r.Right-r.Left; int b = r.Bottom-r.Top; return 2*(br+h); return Math.Sqrt(a*a + b*b);
Hoofdstuk 6.1 Touch
Klikker class MijnAct : Activity { Button knop; protected override void OnCreate(Bundle b) { base.OnCreate(b); knop = new Button(this); knop.Click += klik; this.SetContentView(knop); } public void klik(object o, EventArgs ea) { } knop.Text = "1x geklikt"; }
Klikker Schilderij class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); knop.Click += klik; this.SetContentView(scherm); } public void klik(object o, EventArgs ea) { } knop.Text = "1x geklikt"; }
Schilderij class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); scherm.Click += klik; this.SetContentView(scherm); } } class MijnView : View { public MijnView(Context c) : base(c) { } protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); }
A-Touch class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); scherm.Touch += raakAan; this.SetContentView(scherm); } public void raakAan(object o, EventArgs ea) { } } class MijnView : View { public MijnView(Context c) : base(c) { } protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); }
A-Touch V-Touch class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); scherm.Touch += raakAan; this.SetContentView(scherm); } public void raakAan(object o, EventArgs ea) { } } class MijnView : View { public MijnView(Context c) : base(c) { } this.Touch += raakAan; protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); public void raakAan(object o, EventArgs ea) { } }
V-Touch class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); this.SetContentView(scherm); } } class MijnView : View { public MijnView(Context c) : base(c) { } this.Touch += raakAan; protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); public void raakAan(object o, EventArgs ea) { } }
V-Touch class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); this.SetContentView(new MijnView(this)); } } class MijnView : View { public MijnView(Context c) : base(c) { } this.Touch += raakAan; protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); public void raakAan(object o, EventArgs ea) { } }
Cirkel- klikker class MijnAct : Activity { protected override void OnCreate(Bundle b) { base.OnCreate(b); this.SetContentView(new MijnView(this)); } } class MijnView : View { public MijnView(Context c) : base(c) { } this.Touch += raakAan; protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); public void raakAan(object o, EventArgs ea) { } }
Cirkel- klikker } class MijnView : View { PointF p; float x, y; public MijnView(Context c) : base(c) { this.Touch += raakAan; } protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawCircle(x, y, 50, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } x = tea.Event.GetX(); y = tea.Event.GetY(); this.Invalidate(); }
Cirkel- klikker } class MijnView : View { PointF p; public MijnView(Context c) : base(c) { this.Touch += raakAan; } protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawCircle(x, y, 50, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); this.Invalidate(); }
Cirkel- klikker } class MijnView : View { PointF p; public MijnView(Context c) : base(c) { this.Touch += raakAan; } protected override void OnDraw(Canvas c) { base.OnDraw(c); } if (p ≠ null) c.DrawCircle(p.X, p.Y, 50, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); this.Invalidate(); }
Cirkel- klikker } class MijnView : View { PointF p; public MijnView(Context c) : base(c) { this.Touch += raakAan; } protected override void OnDraw(Canvas c) { base.OnDraw(c); } if (p != null) c.DrawCircle(p.X, p.Y, 50, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); this.Invalidate(); }
Opdrachten voorwaardelijk uitvoeren opdracht wordt steeds opnieuw uitgevoerd zolang voorwaarde geldt if while (temperatuur<0) temperatuur += 5; if (temperatuur<0) uitvoer.Text = "Het vriest!"; opdracht wordt alleen uitgevoerd als voorwaarde geldt
opdracht wordt alleen uitgevoerd als voorwaarde niet geldt Twee alternatieven if (temperatuur<0) uitvoer.Text = "Het vriest!”; else uitvoer.Text = "Het dooit."; opdracht wordt alleen uitgevoerd als voorwaarde niet geldt
Meer opdrachten als body if (temperatuur<0) uitvoer1.Text = "Het vriest"; { } uitvoer2.Text = "Koud he!"; accolades maken twee opdrachten tot één body
Vergelijk-operatoren < kleiner dan <= kleiner dan of gelijk aan > groter dan >= groter dan of gelijk aan == gelijk aan != ongelijk aan x=5 x wordt 5 ! x==5 is x gelijk aan 5 ?
Practicum en werkcollege groep wo vr begeleiders 15-17 9-11 13-15 1 214 161 023 Alejandro Robert 2 061 Lex Bas 3 083 Niels Bastiaan