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
Methodes in de eigen klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; 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 void MaakDonkerder( ) { } public Kleur DonkerdereVersie( ) { } Kleur res; return res; res = new Kleur(this); res.MaakDonkerder ( ); methode die een nieuw object oplevert
Static variabelen { class Kleur } public byte Rood, Groen, Blauw; static variabelen zitten niet in het object public static byte Max = 255; maar hebben er iets mee te maken public Kleur( ) { } Rood=Max; Groen=Max; Blauw=Max; constructor-methode
Static methoden { class Kleur } public byte Rood, Groen, Blauw; static variabelen zitten niet in het object public static byte Max = 255; maar hebben er iets mee te maken public Kleur( ) { } Rood=Max; Groen=Max; Blauw=Max; constructor-methode public static Kleur Parse( string s ) { } static methoden hebben geen object onderhanden return new Kleur(s); public static Kleur Geel = new Kleur(Max,Max,0); static variabele met de eigen klasse als type
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);
Hoofdstuk 9.2 Strings
Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden false, true nchar losse symbolen'A', 'B', 'Z', 'a', '4', '#', ':'
string versus char nstringchar nklasseprimitief type nobject-verwijzingdirecte waarde nnul, een of meer…precies één symbool n"" "A" "hello" 'A' noperatoren, methoden properties, indexeroperatoren u==, +==, +, <= uSubstring, ToUpper, Split uLength us[t]
String-methodes nint Length nboolEquals(string s) nstringConcat(string s) nstringSubstring(int start) nstringSubstring(int start, int aantal) nstringToUpper( ) nstringToLower( ) nstring[] Split( )
Concat en Substring nString s, t, u, v, w; ns = "ham"; nt = "burger"; nu = s.Concat(t); nv = u.Substring(3); nw = u.Substring(3, 4); s t u v w hamburger hamburger burger burg hamburger s + t ; vanaf aantal
Publieksvraag nSchrijf een methode Beginstuk met twee string-parameters x en y die bepaalt of x het beginstuk van y is nSchrijf een methode Onderdeel met twee string-parameters x en y die bepaalt of x ergens als substring van y voorkomt
Methode Beginstuk (string x, string y)boolpublic static kortlang {}{} y. Substring( 0, x.Length ) x == return ; Beginstuk
Methode Onderdeel (string x, string y)boolpublic static {}{} Onderdeel y. Substring(t) Beginstuk(x, ) if ( ) return true; for (t=0; t<y.Length; t++) return false; int t;
Meer string-methodes nboolStartsWith(string s) nboolEndsWith(string s) nintIndexOf(string s) public static bool Onderdeel(string x, string y) { return y.IndexOf(x)>=0 ; }
Publieksvraag n//schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string n//voorbeeld-aanroep: int n; n = Demo. Freq('e', "some text" ); n// hint: gebruik een for opdracht
Tel symbool-frequentie public static int Freq(char x, string s) { s[t]==x for (int t=0; t<s.Length; t++) if ( ) aantal++; int aantal; aantal = 0; return aantal; }
Tel symbool-frequentie public static int Freq(char x, string s) { s[t]==x for (int t=0; t<s.Length; t++) if ( ) aantal++; int aantal; aantal = 0; return aantal; } foreach ( char c in s ) c == x
IBM/DOS Geschiedenis van char n1970s:6 bits = 64 symbols 26 letters, 10 digits, 28 leestekens n1980s: 7 bits = 128 symbols +26 lowercase, +5 leestekens, 33 control n1990s: 8 bits = 256 symbols +letters met accenten n2000s: 16 bits = symbols +Grieks, Cyrillisch, Japans, Devangari,... ASCII ANSI/ISO Unicode
Character coding code 0 code 127 code 48 code 32 code 65 code 97
char bijzonderheden nalfabetisch geordend char c; if ( ’A’<=c && c<=’Z’ ) … nconverteerbaar naar int int n; n = c + 32; nen terug c = (char) n;
twee tekens in de broncode, toch één character! Speciale char-waarden nLetterlijk symbool nSpeciaal symbool nHet quote-symbool nHet backslash-symbool 'A''A' '\n' '\'' '\\' '&''&' '\t' '\"' nElk Unicode-karakter '\x597D' '好''好'
Hoofdstuk Arrays
nArray: rij genummerde variabelen tabel length5 int [ ] tabel; new int [5];tabel = declaratie van een array creëren van het eigenlijke array-object
Gebruik van een array n’t zijn echte variabelen: tabel Length 5 tabel [2] = 37; tabel[4] = tabel [2] + 5; if (tabel.Length<10)... tabel.Length = 10; Length is een read-only property
Gebruik van een array nvariabele als index in de array tabel Length5 tabel [0] = 42; tabel [1] = 42; tabel [2] = 42; tabel [3] = 42; tabel [4] = 42; 42 tabel [t] = 42; for (t=0; t<5; t++)
Array als parameter tabel Length int Grootste ( int [ ] tabel ) { } int resultaat; return resultaat; if (tabel [t] > resultaat) resultaat = tabel [t]; for (t=0; t<tabel.Length; t++) int t; resultaat =tabel [0]; static
Syntax van array-type type int short sbyte long decimal double float char bool uint ushort byte ulong struct naam class naam object string waarde verwijzing [], array
Array van getallen tabel int [ ] tabel; new int [5];tabel = Length 5
Array van struct-objecten tabel Color [ ] palet; new Color[5]; palet = Length 5
Array van class-objecten tabel PointF [ ] plaatsen; new PointF[5]; tabel = Length 5 for (int t=0; t<5; t++) plaatsen[t] = new PointF( );
string versus array nKlassen Type met speciale syntax nSpeciale index-notatie string s = new string();char[] a = new char[10]; c = a[2];a[3] = c; nSpeciale quote-notatie s = "hallo"; nProperty a.Length nProperty s.Length nMethoden s.Substring(3,2); s.IndexOf(t); nIndexer -notatie c = s[2];s[3] = c;
Declaratie declaratie naamtype, =initialisatieconst ; var met intitialisatie initialisatie expressie initialisatie}{, string [ ] woorden = { "aap", "noot", "mies" }; int [ ] maand = { 31,28,31,30,31,30,31,31,30,31,30,31 }; Color [ ] palet = { new Color(64,0,0), Color.Yellow };
Tekst Analyse EditText TekstAnalyse DiagramView class TekstAnalyse : Activity class DiagramView : View LinearLayout
Tekst Analyse public class TekstAnalyse : Activity { protected override void OnCreate(Bundle b) { base.OnCreate(b); } tekst = new EditText(this); diagram = new DiagramView(this); } EditText tekst; DiagramView diagram; LinearLayout s = new LinearLayout(this); s.AddView(tekst); s.AddView(diagram); SetContentView(s); public void veranderd(object o, EventArgs e) } { tekst.AfterTextChanged += veranderd; diagram.Invoer = tekst.Text; diagram.Invalidate( );
Tekst Analyse public class DiagramView: View { protected override void OnDraw(Canvas cv) { base.OnDraw(cv); } } public string Invoer; tellers Length int [ ] tellers; tellers = new int [26];
Tekst Analyse public class DiagramView: View { protected override void OnDraw(Canvas cv) { base.OnDraw(cv); } } public string Invoer; tellers Length int [ ] tellers; tellers = new int [26]; tellers[ ]++; foreach(char c in Invoer) c-'a' if (c>='a' && c<='z') foreach(int a in tellers) { } cv.DrawRect( x, y, x+a*w, y+h, verf ); cv.DrawText( a.ToString()... ); int h = Height/ 26; y = y+h;, y=0; int w = Width / max;