Hoofdstuk 2 Hallo, C# !
Soorten programma’s Console- applicatie
Soorten programma’s Console- applicatie Windows- applicatie
Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie
Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game
Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game Applet
Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game Applet App
Opbouw broncode Opdrachten om het geheugen te veranderen Opdrachten zijn gegroepeerd in methoden Methoden zijn gegroepeerd in klassen
Soorten opdrachten Toekennings -opdracht: verander het geheugen Aanroep van een andere methode: voer eerst de opdrachten in die methode uit, en ga daarna verder waar je gebleven was en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de “waar was ik gebleven” administratie is best ingewikkeld!
Voorbeeld C#-programma using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } één klasse ...met één methode ...met twee opdrachten accolades begrenzen klasse, resp. methode
Klasse- en methode-header using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } naam: bedacht door de programmeur naam: bedacht door de programmeur één van de methodes moet Main heten Main
Opdracht: methode-aanroep using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } opdrachten: aanroep van andere methoden klasse waaruit de methode komt altijd een punt naam van de methode overige details
Klasse-bibliotheken library-klassen mag je gebruiken... using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } als je ze maar aangeeft in welke library ze staan
Methode-header en -aanroep using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } methode- header methode- aanroep
Syntax en semantiek Syntax: de vorm van het programma Semantiek: wat het programma betekent compilatie eenheid using ; klasse declaratie library naam
Syntax van klasse-declaratie public private : naam class naam { member }
Syntax van member member type void naam ( type naam ) blok , public private static type void naam ( type naam ) blok ,
Syntax van blok blok declaratie { } opdracht
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); }
Toekennings-opdracht geeft een waarde aan een variabele Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); } Toekennings-opdracht geeft een waarde aan een variabele
Declaratie introduceert een variabele van een bepaald type Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); } Declaratie introduceert een variabele van een bepaald type
gebruik van de variabele Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); } gebruik van de variabele
Property van een object Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.Length + " letters."); } Property van een object
Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.Length + " letters."); Console.ReadLine( ); }
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += toekenning variabele = expressie ;
Syntax van declaratie declaratie type naam ; , type naam int string klasse naam int string
Windows-applicatie using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( ) { } using System.Windows.Forms; using System.Drawing; declaratie en toekenning van een variabele met type Form Form scherm; scherm = new Form( ); scherm.Text = "Hallo"; scherm.BackColor = Color.Yellow; scherm.Size = new Size(200,100); aanpassen van attributen Application.Run(scherm); gebruik van de variabele bij aanroep van Run
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Windows-applicatie class HalloWin2 { static void Main ( ) { } HalloForm scherm; scherm = new HalloForm( ); Application.Run(scherm); Form scherm; scherm = new Form( ); Application.Run(scherm); aanroep van de constructor methode subklasse is een gespecialiseerde versie class HalloForm { } : Form definitie van de constructor methode public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100);
Windows-applicatie class HalloForm { : Form public HalloForm( ) { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); Label groet; groet = new Label( ); groet.Text = "Hallo allemaal"; groet.Location = new Point(30,20); this.Controls.Add(groet);
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
Syntax van opdracht scherm . Size groet . Text naam . Length klasse naam methode naam ( . object expressie property naam = property naam methode naam scherm . Size groet . Text naam . Length object expressie this.Controls . Add Console . WriteLine Application . Run static klasse naam Color . Yellow
Static gewone methoden static methoden static Bewerken een object Bewerken geen object Aanroep: object . methode (…) Aanroep: klasse . methode (…) In de body van de definitie: this is dat object In de body van de definitie: this bestaat niet Voorbeeld: Voorbeeld: Controls.Add(groet); Application.Run(scherm); Constructormethoden zijn nooit static Main is altijd static
Windows-applicatie class HalloForm { : Form public HalloForm( ) { } : Form public HalloForm( ) { } this.Text = "Hallo"; this.BackColor = Color.Yellow; this.Size = new Size(200,100); Label groet; groet = new Label( ); groet.Text = "Hallo allemaal"; groet.Location = new Point(30,20); this.Controls.Add(groet);
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; “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!" , new Font("Tahoma", 30) , Brushes.Blue , 10, 10
Windows-applicatie using System.Windows.Forms; class HalloWin3 { static void Main() { HalloForm scherm; scherm = new HalloForm(); Application.Run(scherm); } class HalloForm : Form { public HalloForm() { this.Text = "Hallo"; this.Paint += this.teken; } void teken(object o, PaintEventArgs p) { p.Graphics.DrawString( … );
Game-applicatie using System.Windows.Forms; using Microsoft.XNA.Framework; class HalloWin3 { static void Main() { HalloForm scherm; scherm = new HalloForm(); Application.Run(scherm); } class HalloGame4 { static void Main() { HalloGame spel; spel = new HalloGame(); } spel.Run(); class HalloForm : Form { public HalloForm() { this.Text = "Hallo"; this.Paint += this.teken; } void teken(object o, PaintEventArgs p) { p.Graphics.DrawString( … ); class HalloGame : Game { public HalloGame() { } this.Window.Title = "Hallo"; override void Draw(GameTime t) { }
Form vs. Game void teken(object o, PaintEventArgs pea) { gr.DrawString( ); } Graphics gr; gr = pea.Graphics; "Hallo!" , new Font("Tahoma", 30) , Brushes.Blue , 10, 20 new Point( ) override void Draw(GameTime gt) { } SpriteBatch sb; sb = new SpriteBatch(this.GraphicsDevice); sb.Begin(); sb.DrawString( ); this.Content.Load<SpriteFont>("Spelfont") , "Hallo!" , new Vector2(10, 20) gt.TotalRealTime.Milliseconds, 20) , Color.Blue sb.End();
Content bij een Game Fonts, Achtergrondplaatjes, Geluiden… this.Content.RootDirectory = "Hulpbestanden"; Fonts, Achtergrondplaatjes, Geluiden… this.Content.Load<SpriteFont>("Spelfont") Hulpbestanden / Spelfont.spritefont <?xml version="1.0" encoding="utf-8"?> <XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics"> <Asset Type="Graphics:FontDescription"> <Spacing>0</Spacing> <UseKerning>true</UseKerning> <Style>Regular</Style> <CharacterRegions><CharacterRegion><Start> </Start> <End>~</End></CharacterRegion></CharacterRegions> </Asset> </XnaContent> <FontName> </FontName> <Size> </Size> Tahoma 30