Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdCasper Jansen Laatst gewijzigd meer dan 6 jaar geleden
1
Voorbeeld: Simulatie van bewegende deeltjes
Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten
2
Samenhang van objecten
Simulatie Samenhang van objecten Button geërfd van Form zelf gedeclareerd r1 r2 r3 stap auto sim Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van UserControl x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje
3
Overzicht van methoden
class Simulatie : Form { class Ruimte: UserControl { class Deeltje { Button stap, auto; Ruimte r1, r2, r3; Deeltje d1, d2, d3; int x, y, dx, dy; Brush brush; Ruimte() { d1 = new Deeltje(); Paint += TekenRuimte; } Simulatie() { stap = new Button(); r1 = new Ruimte(); stap.Click = stap_click; } void TekenDeeltje ( Graphics gr) { gr . FillEllipse ( this.brush , this.x – 4, this.y – 4 , 9 , 9 ); } void TekenRuimte (object o, PaintEventArgs pea ) { Graphics gr = pea.Graphics; d1.TekenDeeltje(gr); d2.TekenDeeltje(gr); d3.TekenDeeltje(gr); } void DoeStap ( ... ) { this.x += this.dx; this.y += this.dy; if (this.x<0) { this.x = - this.x; this.dx = - this.dx; } void stap_click (object o, EventArgs ea) { r1.DoeStap( ); r2.DoeStap( ); r3.DoeStap( ); } void DoeStap( ) { d1.DoeStap(this.Size); d2.DoeStap(this.Size); d3.DoeStap(this.Size); this.Invalidate(); } } } }
4
Methoden van klasse Deeltje
class 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) { ... }
5
zich zelfstandig ontwikkelende lijn van gebeurtenissen
Animatie Animatie: “tekenfilm” programma toont automatisch veranderende beelden Gemakkelijk te programmeren met gebruik van de klasse “draadje” Thread zich zelfstandig ontwikkelende lijn van gebeurtenissen
6
en keert dan direct terug
Maak een animatie Thread animatie; animatie = new Thread ( this.run ); animatie . Start ( ); this . run ( ); roept de methode aan die bij constructor is meegegeven en keert dan direct terug (terwijl de methode nog bezig is)
7
De methode run class Simulatie : Form { oneindige herhaling!
} oneindige herhaling! void run ( ) { while (true) { } this . stap_Click (this, null ); Thread . Sleep (50); milliseconden }
8
Starten van de animatie
class Simulatie : Form { } Thread animatie; bool beweegt; 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; }
9
De methode run nogmaals
class Simulatie : Form { } oneindige herhaling! eindige herhaling. void run ( ) { while (true) ( this.beweegt ) { } this . stap_Click (this, null ); Thread . Sleep (50); milliseconden }
10
Handiger Starten van de animatie
class Simulatie : Form { } Thread animatie; bool beweegt; void auto_Click(object o, EventArgs ea ) { if (beweegt) { auto.Text = "Start"; beweegt = false; } else { (animatie != null ) animatie = null; animatie = new Thread( this.run ); animatie . Start ( ); auto.Text = "Stop"; beweegt = true; }
11
De waarde null null : verwijzing naar niks
x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type
12
Hoofdstuk 9.3-4 Strings en arrays
13
Primitieve types int gehele getallen -17, -5, 0, 3, 178
double reëele getallen 3.141, 2.0, -1.5E8 bool waarheidswaarden false, true char losse symbolen ’A’, ’B’, ’Z’, ’a’, ’4’, ’#’, ’:’
14
string versus char string char klasse primitief type
object-verwijzing directe waarde nul, een of meer… precies één symbool "" "A" "hello" ’A’ operatoren, methoden properties, indexer operatoren == , == , + , <= Substring, ToUpper Length s[i]
15
String-methodes int Length bool Equals (string s)
string Concat (string s) string Substring (int start) string Substring (int start, int aantal) string ToUpper ( ) string ToLower ( )
16
concat en substring String s, t, u, v, w; s = "ham"; t = "burger";
hamburger burger burg s = "ham"; t = "burger"; u = s.Concat(t); s + t ; v = u.Substring(3); w = u.Substring(3, 4); vanaf aantal hamburger
17
Publieksvraag Schrijf een methode Beginstuk met twee string-parameters x en y die bepaalt of x het beginstuk van y is Schrijf een methode Onderdeel met twee string-parameters x en y die bepaalt of x ergens als substring van y voorkomt
18
Methode Beginstuk kort lang public static bool Beginstuk
(string x, string y) { } return x == y . Substring ( 0, x.Length ) ;
19
Methode Onderdeel public static bool Onderdeel (string x, string y) {
} int t; for (t=0; t<y.Length; t++) if ( ) return true; Beginstuk(x, ) y . Substring(t) return false;
20
Meer string-methodes bool StartsWith (string s)
bool EndsWith (string s) int IndexOf (string s) public static bool Onderdeel(string x, string y) { return y.IndexOf(x) >= 0 ; }
21
string versus array Klasse Type met speciale syntax Indexer -notatie
string s = new string(); char[] a = new char[10]; Indexer -notatie Speciale index-notatie c = s[2]; s[3] = c; c = a[2]; a[3] = c; Speciale quote-notatie s = "hallo"; Property s.Length Property a.Length Methoden s.IndexOf(t); s.Substring(3,2);
22
Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’, "some text" ); // hint: gebruik een for opdracht
23
Tel symbool-frequentie
public static int Freq(char x, string s) { int aantal; aantal = 0; for (int t=0; t<s.Length; t++) if ( ) aantal++; s[t]==x return aantal; }
24
Geschiedenis van char 1970s: 6 bits = 64 symbols 26 letters, 10 digits, 28 leestekens 1980s: 7 bits = 128 symbols +26 lowercase, +5 leestekens, 33 control 1990s: 8 bits = 256 symbols +letters met accenten 2000s: 16 bits = symbols +Grieks, Cyrillisch, Japans, Devangari, ... ASCII IBM/DOS ANSI/ISO Unicode
25
Character coding code 0 code 32 code 48 code 65 code 97 code 127
26
char bijzonderheden alfabetisch geordend char c; if ( ’A’<=c && c<=’Z’ ) … converteerbaar naar int int n; n = c + 32; en terug c = (char) n;
27
Conversies Conversie naar “kleinere” waarde is gevaarlijk
Conversie naar “grotere” waarde kan altijd double d; int n; d = n; int n; char c; n = c; Control x; Button b; x = b; Conversie naar “kleinere” waarde is gevaarlijk n = (int) d; c = (char) n; b = (Button) x;
28
Speciale char-waarden
Letterlijk symbool ’A’ ’&’ Speciaal symbool ’\n’ ’\t’ Het quote-symbool ’\’’ ’\”’ Het backslash-symbool ’\\’ twee tekens in de broncode, toch één character!
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.