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 methode OnCreate( ) Methode uit klasse Activity
Maak je eigen View 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); } bestaat nog niet…
Maak je eigen View public class MondriaanView : View { protected override void OnDraw(Canvas cv) { public MondriaanView(Context ct) { } } } cv. DrawLine(…); cv. DrawRect(…); cv. DrawCircle(….); this.SetBackgroundColor(Color.White); base.View(ct); : base(ct) base.OnDraw(cv);
Hallo (x,y) DrawText (x1,y1) (x2,y2) DrawLine x y (0,0) DrawOval DrawRect links boven rechts onder DrawBitmap (x,y) DrawCircle (x,y) r
Tekenen cv.DrawRect( 10, 0, 20, 100, verf ); cv.DrawRect( 50, 0, 60, 100, verf ); cv.DrawRect( 90, 0, 100, 100, verf ); Paint verf; verf = new Paint(); verf.Color=Color.Black; 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 ); compositie met blauw en rood (vrij naar Piet Mondriaan)
Variabelen Paint verf; verf = new Paint(); verf.Color=Color.Black; verf.Color = Color.Blue; cv.DrawRect( 0, y1+balk, x1, y2, verf ); 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.Red; cv.DrawRect(x3+balk, 0, breed, y1, verf ); int balk, breed, hoog balk = 10; breed = 200; hoog = 100; int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; x1x2x3 y1 y2
Makkelijk aanpasbaar?
Syntax van declaratie type klasse naam int string declaratie naamtype, =expressieconst ; var
Syntax van expressies expressie getal expressie operator expressie() variabele ”” symbool
Gebruik van expressies in opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=
Gebruik van expressies in opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam +=
Gebruik van expressies in opdrachten en expressies opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += expressie constante expressie operator expressie() variabele
Hoofdstuk 4.6 Maak je eigen methode- definities
Voorbeeld: Huizen
Nieuwe methoden nMethode: groepje opdrachten met een naam Aanroep van een methode voert opdrachten uit in de body daarvan private void tekenHuis(…) { …. DrawRect (…); …. DrawLine (…); …. DrawLine (…); } protected override void OnDraw(Canvas c) { …. tekenHuis (…); …. tekenHuis (…); …. tekenHuis (…); }
Parameters …. DrawRect (…); …. DrawLine (…); …. DrawLine (…); } protected override void OnDraw(Canvas c) { …. tekenHuis (…); …. tekenHuis (…); …. tekenHuis (…); } private void tekenHuis (…) { cccccc (Canvas c, … ) parameter declareren (c, …); en bij aanroep meegeven
Het object this c. DrawRect (…);c. DrawLine (…); } …. tekenHuis (c, …); …. tekenHuis (c, …); …. tekenHuis (c, …); } private void tekenHuis (Canvas c, …) { this this this this: het object dat OnDraw ook al onder handen heeft class HuizenView : View { } protected override void OnDraw(Canvas c) {
Meer parameters this. tekenHuis (c, …); this. tekenHuis (c, …); this. tekenHuis (c, …); } protected override void OnDraw(Canvas c) { teken driemaal een net iets ander huis 20, 100, 40); 70, 100, 40); 120, 100, 60); nog meer parameters!
Meer parameters c.DrawRect ( …, verf); c.DrawLine ( …, verf); c.DrawLine ( …, verf); } x, y-br, x+br, y int tx = x+br/2; int ty = y–br–br/2; x, y-br, tx, ty tx, ty, x+br, y-br private void tekenHuis (Canvas c, … ) { Paint verf = new Paint(); int x, int y, int br) this. tekenHuis (c, …); this. tekenHuis (c, …); this. tekenHuis (c, …); } protected override void OnDraw(Canvas c) { (x,y)br (tx,ty) 20, 100, 40); 70, 100, 40); 120, 100, 60);
Flexibiliteit nHoe meer parameters, des te flexibeler de methode (x,y) br h dakh private void tekenHuis (Graphics gr, int x, int y, int br, int h, int dakh, Color kl, Color dakKl, … ) { en des te lastiger aan te roepen...
Flexibiliteit Veel parameters: nNu lastig om te programmeren nIn de toekomst gemakkelijk uit te breiden Weinig parameters: n Nu gemakkelijk om te programmeren n In de toekomst lastig te onderhouden
Communicatie met methoden nParameters : aanroeper geeft waarde door aan de methode nMethode-resultaat : methode geeft waarde terug aan de aanroeper net zoals een wiskundige functie
Methoden met een resultaat private double kwadraat (double x) { return x*x ; } type van het resultaat waarde van het resultaat in speciale return-opdracht
Publieksvraag nSchrijf 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;
nAanroep van void-methode geldt als opdracht Aanroep van methoden c.DrawLine(10,10, 20,20, verf) ; a = this.kwadraat (5) ; c.DrawLine(this.kwadraat (5), 10, 25, 50, verf); zonder resultaat nAanroep van methode met resultaat geldt als expressie … this.kwadraat (5) + 1 …
Return is laatste opdracht Parameters krijgen hun waarde bij de aanroep private double gemiddelde (double a, double b, double c) { } double totaal; totaal = a + b + c ; return totaal / 3; Lokale variabele krijgen hun waarde in een toekenning
Methodes die elkaar aanroepen private double kwadraat (double x) { return x*x ; } private double oppervlak (double r) { return Math.PI * this.kwadraat(r); } public void bereken (...) { scherm.Text = this.oppervlak(25).ToString(); } class CirkelCalc : Activity { }
Hoofdstuk 5 Objecten en methoden
Variabelen nVariabele: geheugenplaats met een naam int x, y; nDeclaratie: aangifte van het type van de variabele nToekenningsopdracht: variabele krijgt waarde x = 20; x y 20
Toekenningsopdrachten y = x + 5 ; nExpressie aan de rechterkant mag andere variabelen gebruiken nVorige waarde gaat verloren x = y * 2 ; x y 20 int x, y; x = 20 ; y = y + 1 ;
Declaratie en toekenningen nEén keer declarareren nMogelijk meerdere toekenningen int x; x = 100; x = 250; x = x + 1; x = 2 * x; int x = 100; x = 100; Declaratie en eerste toekenning
x Type van variabelen x = 10 ; d = ; nint geheel getal ndouble benadering van reëel getal d = 10 ; d int x; double d; x = x / 3 ; d = d / 3 ;
Const declaratie double pi= ; void PrintOppervlak ( double r ) { scherm.Text = Pi * r * r ; } const double Pi= ; Pi = 4.0; Latere toekenningen verboden
Standaardtypes sbyte short int long float double decimal byte ushort uint ulong ± 2 miljard ± ± ± miljard 7 cijfers, afgerond, ≤ cijfers, afgerond, ≤ cijfers, exact, ≤10 28 ngehele getallen nmet een decimale punt 1 byte 2 bytes 4 bytes 8 bytes 4 bytes 8 bytes 16 bytes
Constanten ngeheel getal (kleinst passende) nmet een decimale punt nstring 0137–25 0.5– E231E3 "Hallo!""A""A""""een \"citaat\"""\n""\\" 0x1A0xFF 3E– hexadecimaal
Syntax van getal cijferhex-cijfer 0x cijfer. E + – F D L getal M
Syntax van constant constante getal symbool’’ ”” false true null $””symbool expressie{}, :symbool
Syntax van symbol symbool n t ” \ u r b ’ hex-cijfer \ cijfer letter leesteken
Typering van operatoren nBeide argumenten geheel resultaatwaarde geheel * 4 5 / * 7 10 / * 2.5 nMinstens één floating resultaatwaarde floating “in” + “fo” “€” + bedrag nbij + operator ook: Minstens één string resultaatwaarde string
Objecten nObject: groepje variabelen dat bij elkaar hoort 255 r g 0 b 100 w 20 h 3 aantal prijs h allo!
Objecten nOm een object te gebruiken, hoef je niet te weten uit welke variabelen het object bestaat nJe hoeft alleen te weten uwelke methoden er zijn uwelke properties er zijn "vraag niet hoe het kan... " "maar profiteer ervan! "
Methoden bewerken een object canvas. DrawLine ( 10, 10, 30, 30, verf) ; stapel. Add ( new Button(this) ); methode gebruikt het object methode verandert het object blijvend scherm. SetBackgroundColor ( Color.White ); methode verandert het object blijvend object
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken
Color-object Color k1, k2, k3; k1 = new Color(255,0,0); verf.Color = k1; c.DrawCircle(100,200,50,verf); k2 = k1; k3 = k1; k2.G = 255; verf.Color = k2; c.DrawCircle(300,200,50,verf); k3.B = 255; verf.Color = k3; c.DrawCircle(500,200,50,verf); k1 k2k3 0 0 R G 0 B 0 0 R G 0 B 0 0 R G 0 B 255
Rect-object Rect r1, r2, r3; r1 = new Rect(50,300,150,350); c.DrawRect(r1, verf); r2 = r1; r3 = r1; r2.Left=280; r2.Right=320; r2.Top = 50; c.DrawRect(r2, verf); r3.Left = 490; r3.Right = 510; c.DrawRect(r3,verf); r1 r2r3 0 0 Left Right 0 Top 50 verf.Color = Color.Green; 0 Bottom 0 0 Left 0 0 Bottom 0 0 Left 0 0 Bottom Right Top Right Top
Rect-object Rect r1, r2, r3; r1 = new Rect(50,300,150,350); c.DrawRect(r1, verf); r2 = r1; r3 = r1; r2.Left=280; r2.Right=320; r2.Top = 50; c.DrawRect(r2, verf); r3.Left = 490; r3.Right = 510; c.DrawRect(r3,verf); r1 r2r Left Right 150 Top verf.Color = Color.Green; 350 Bottom null
Grote objecten kopiëren? Bitmap b; b = new Bitmap("t.jpg"); Bitmap c; c = b; 104 h wb 4 h wc zonde van de ruimte!
Object-verwijzingen Bitmap b; Bitmap c; c = b; 104 h w b new Bitmap("t.jpg");b = c
Values versus Pointers Color c; Rect r; class Rect struct Color c 0 0 R G 0 B Left Right 20 Top 40 Bottom c = new Color(255,0,0); new Rect(10,20,30,40); null r r =