Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.

Slides:



Advertisements
Verwante presentaties
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Advertisements

Het type int Tekenen met Java operatoren
Hoofdstuk 2 Hallo, C# !.
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.
Consoletoepassing Variabelen Klassen
6.1 Inleiding HOOFDSTUK 6 METHODEN
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.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
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 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);
Imperatief programmeren nJeroen Fokker. Wat heb je nodig? nCollegediktaat ukopen bij A-Eskwadraat (BBG-238) uof zelf downloaden en uitprinten nSolis-id.
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;
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
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.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
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.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
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.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Imperatief programmeren
Aanroep van een methode voert opdrachten uit in de body daarvan
ISensorEventListener
Gameprogrammeren: Objecten en geheugen
Reader en Writer leest en schrijft bytes leest string en char
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Variabelen, declaraties en toekenningen
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
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
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Practicum: schets-editor
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Software Development fundamentals
Transcript van de presentatie:

Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text = "Hallo"; scherm.BackColor = Color.Yellow; scherm.Size = new Size(200,100); using System.Drawing; declaratie en toekenning van een variabele met type Form gebruik van de variabele bij aanroep van Run aanpassen van properties

Windows-applicatie class HalloWin2 { static void Main ( ) { } class HalloForm { } Form scherm; scherm = new Form( ); Application.Run(scherm); HalloForm scherm; scherm = new HalloForm( ); Application.Run(scherm); : Form subklasse is een gespecialiseerde versie aanroep van de constructor methode public HalloForm( ) { } definitie van de constructor methode this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100);

Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); Label groet; groet = new Label( ); this.Controls.Add(groet); groet.Text = "Hallo allemaal"; groet.Location = new Point(30,20);

Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); this.Paint += this.teken; “Event”-property Methode-naam, maar geen aanroep!

Windows-applicatie class HalloForm { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); this.Paint += this.teken; } void teken( { Object o, PaintEventArgs pea ) pea.Graphics. DrawString( ); "Hallo!", 10, 10, Brushes.Blue, new Font("Tahoma", 30)

Methode-aanroep methoden uit de klasse Graphics void TekenScherm(object o, PaintEventArgs pea) { Graphics gr; gr = pea.Graphics; gr. DrawString ("Hallo!", new Font("Tahoma", 30), Brushes.Blue, 10, 20 ); gr. FillRectangle (Brushes.Red, 10,20, 50,60 ); gr. DrawLine (Pens.Black, 70,30, 20,20 ); }

Klassen en objecten nKlasse beschrijft mogelijkheden van object umethoden uproperties methode uit de klasse Graphics van object gr Graphics gr; gr = pea.Graphics; gr. DrawLine ( Pens.Red, 10,10, 20,20); string s; s = Console.ReadLine();... s. Length... property uit de klasse string van object s nObjecten ukunnen dingen doen uhebben geheugen

-syntax expressie getal expressie operator expressie() variabele ”” symbool object expressie (), new klasse naam property naam this klasse naam methode naam.

Nieuwe methoden nMethode: groepje opdrachten met een naam Aanroep van een methode voert opdrachten uit in de body daarvan private void tekenHuis(…) { …. DrawRectangle (…); …. DrawLine (…); …. DrawLine (…); } public void TekenScherm (object o, PaintEventArgs pea) { …. tekenHuis (…); …. tekenHuis (…); …. tekenHuis (…); }

Methode met parameters gr.DrawRect (pen,… ); gr.DrawLine (pen,… ); gr.DrawLine (pen,… ); } x, y-br,br, br int tx, ty; tx = x + br/2; ty = y – br – br/2; x, y-br, tx, ty tx, ty, x+br, y-br private void tekenHuis (Graphics gr, … ) { int x, int y, int br) this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); } public void TekenScherm (object o, PaintEventArgs pea) { (x,y)br (tx,ty) 20, 100, 40); 70, 100, 40); 120, 100, 60);

Publieksvraag nSchrijf een methode tekenCirkel die je zo kunt aanroepen: public void TekenScherm (object o, PEA pea) { } this.tekenCirkel(pea.Graphics, Brushes.Black, 150, 100, 50); midden straal private void tekenCirkel { } gr. FillEllipse(br, cx–r, cy–r, 2*r, 2*r ); (Graphics g, Brush br, int cx, int cy, int r)

Hoofdstuk 4 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 ) { Console.WriteLine( 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

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 gr. DrawLine ( pen, 10, 10, 30, 30) ; scherm.Controls. Add ( new Label() ); methode gebruikt het object methode verandert het object blijvend Console. WriteLine( "Hallo",... ); static methode heeft geen object onderhanden

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

Objecten kunnen veranderen Rectangle r; r = new Rectangle(10,5,10,20); gr.FillRectangle(Brushes.Blue, r); r.Offset(0,30); r.Inflate(5,0); gr.FillRectangle(Brushes.Red, r);

Immutable objecten nIn sommige klassen is er geen enkele methode die objecten kan veranderen stringColor nEenmaal gemaakt, blijft de inhoud van het object hetzelfde

Objecten kopiëren Rectangle r; r.Inflate(5,0); y x h w r r.Offset(0,30); r = new Rectangle(10,5,10,20); gr.FillRectangle(Brushes.Blue, r); y x h w r y x h w r gr.FillRectangle(Brushes.Red, r); y x h w r Rectangle a; a = r; y x h w a y x h w a a.Offset(0,100); y x h w a

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 References Rectangle r; r = new Rectangle(1,2,3,4); y x h w r 104 h w b Bitmap b; b = new Bitmap("t.jpg"); class Bitmap struct Rectangle

References naar mutable objecten bc h w pixels Bitmap b, c; b = new Bitmap("t.jpg"); c = b; gr.DrawImage(b, 10, 10); gr.DrawImage(c, 220,10); c.Rotate(...);

References naar mutable objecten Bitmap b, c; b = new Bitmap("t.jpg"); c = b; gr.DrawImage(b, 10, 10); gr.DrawImage(c, 220,10); c.Rotate(...); bc h w pixels

Type-controle nCompiler controleert type van toe te kennen waardes int x, y ; double d; Color c; x = 3; x = y; d = 3.14; c = Color.Red; x = 3.14; x = “hoi”; d = c; c = 3;

Type-conversie getallen int x, y ; double c, d; x = 5; d = 3.14; d = 7; c = x; x = (int) d; y = (int) (c/2); ntype klopt nint-waarde past ook in een double-variabele ndouble past afgekapt in int, mits programmeur accoord

Type-controle parameters nCompiler controleert of parameters van methoden het goede type hebben g.DrawString ( ”hallo”, br, ft, 10, 20 ); x = 100; y = 10; waarde = 37; g.DrawString ( waarde, br, ft, 0.3 * x, y ); ”” + (int)( ) String int Brush Font

Hoofdstuk 5 Interactie

Controls Form Label Button Label TextBox

Windows-applicatie class HalloWin2 { static void Main ( ) { } class HalloForm { } Form scherm; scherm = new Form( ); Application.Run(scherm); HalloForm scherm; scherm = new HalloForm( ); Application.Run(scherm); : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100);

CirkelCalc class Program { static void Main ( ) { } class Scherm { } Form scherm; scherm = new Form( ); Application.Run(scherm);Application.Run(new Scherm()); : Form public Scherm( ) { } this.Text = "CirkelCalc"; this.ClientSize = new Size(240, 60); zonder rand en titelbalk

CirkelCalc constructor class Scherm : Form { public Scherm( ) { this.Text = "CirkelCalc"; this.ClientSize = new Size(240, 60); } } Label tekst, uitvoer; Button knop; TextBox invoer; tekst = new Label(); knop = new Button(); invoer=new Label(); uitvoer = new TextBox(); this.Controls. Add(tekst); tekst.Location = new Point(65,10); tekst.Size = new Size(35,20); tekst.Text = "straal: "; // enzovoorts... knop.Click += this.bereken; // enzovoorts... Event-propertyafhandelingsmethode

CirkelCalc klik-afhandeling class Scherm : Form { public void bereken(object o, EventArgs ea) { } } invoer.Textdouble.Parse()double straal =; double opp = this.oppervlakte(straal); uitvoer.Text = opp.ToString(); methode met een resultaat private double oppervlakte(double x) { } return Math.PI * x * x; type van het resultaat waarde van het resultaat "leeg" resultaat

CirkelCalc class Scherm : Form { } public Scherm( ) { private double oppervlakte(...) { } } } Button knop; TextBox invoer; Label tekst, uitvoer;...new...Size...Add... knop.Click = this.bereken;...Parse(invoer.Text); uitvoer.Text =......this.oppervlakte(...)... return... gedeclareerd in een andere methode! public void bereken(...) {

CirkelCalc class Scherm : Form { } private double oppervlakte(...) { } }...Parse(invoer.Text); uitvoer.Text = this.oppervlakte(...)... return... gedeclareerd los in de klasse public void bereken(...) { TextBox invoer; Label uitvoer; public Scherm( ) { Button knop; TextBox invoer; Label tekst, uitvoer;...new...Size...Add... knop.Click = this.bereken; } mag je gebruiken in alle methodes heeft de variabelen niet nodig static Scherm

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 g.DrawLine(pen, 10,10, 20,20) ; a = this.kwadraat (5) ; g.DrawLine(pen, this.kwadraat (5), 10, 25, 50); 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 (...) { uitvoer.Text = this.oppervlak(25).ToString(); } class CirkelCalc : Form { }

Grafische User Interface (GUI) n8 declaraties n8 keer new... n8 keer this.Controls.Add(...) n42 property-toekenningen TrackBar Button Label Panel n8 declaraties n8 keer new... n8 keer this.Controls.Add(...) n42 property-toekenningen

Visual Studio Design Mode

Code gegenereerd door Visual Studio Designer namespace Mixer { static class Program { static void Main() { Application.Run (new Mixer()); } namespace Mixer { partial class Mixer : Form { // constructor Mixer() { this.InitializeComponent(); } // event-handlers void klik(object o, EventArgs ea) { } namespace Mixer { partial class Mixer { #region generated code void InitializeComponent() { this.b = new Button(); b.Text = " zwart " ; b.Click += this.klik; this.Controls.Add(this.b); } #endregion private Button b; } Program.csMixer.csMixer.Designer.cs

-syntax expressie getal expressie operator expressie() variabele ”” symbool object expressie (), new klasse naam property naam this klasse naam methode naam.

Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie;

Wat gaan we doen? college Tent. 1 Tent. 2 Tent. 3 college prakt. 1 prakt. 2 prakt. 3 prakt. 1 prakt. prakt. 1 prakt. prakt. 2 prakt wo 15-17vr 13-15< werkcoll nNu: Practicum BBG 106 – 103 – 115 – 175 – 112 – 109 nVrijdag: college in Ruppert-blauw S/T/UV/W