Gameprogrammeren: Klassen en objecten Arjan Egges Paul Bergervoet Wouter van Toll
Klassen, objecten en methoden opdrachten variabelen veranderen zijn gegroepeerd in zijn gegroepeerd in methoden objecten bewerken zijn gegroepeerd in een hebben als type klasse klasse klasse
Klassen versus objecten Een klasse is een blauwdruk voor objecten Een object is een instantie van een klasse Voorbeeld: Een Enemy-klasse die beschrijft wat vijanden zijn/doen (in het algemeen) Een game die meerdere Enemy-objecten bevat (= instanties van de Enemy-klasse) (= objecten van het type Enemy) Variabelen + methoden
Inhoud van een klasse Onderdelen: Methoden bewerken variabelen class MyGame : Game { Color background; MyGame() background = Color.White; ... } ... Update(...) int red = gameTime…/…; background = new Color(red, 0,0); ... Draw(...) GraphicsDevice.Clear(background); Onderdelen: Opsomming van methoden Opsommingen van variabelen die een object omschrijven Methoden bewerken variabelen
Klasse Methoden bewerken variabelen van objecten Bij het object dat we nu aan het bewerken zijn! Dus: deze instantie van MyGame Maar bij welk object hoort ‘background’ dan? class MyGame : Game { GraphicsDeviceManager graphics; Color background; … protected override void Update(GameTime gameTime) int red = gameTime.TotalGameTime.Milliseconds; background = new Color(red, 0, 0); }
Waar maken we dat object? class MyGame : Game { GraphicsDeviceManager graphics; Color background; static void Main() MyGame game = new MyGame(); game.Run(); } public MyGame() graphics = new GraphicsDeviceManager(this); …
this this: speciaal woord dat het object aanduidt dat we nu aan het bewerken zijn class MyGame : Game { GraphicsDeviceManager graphics; Color background; … protected override void Update(GameTime gameTime) int red = gameTime.TotalGameTime.Milliseconds; this.background = new Color(red, 0, 0); }
Opmerkingen over ‘this’ Je mag this schrijven voor elke membervariabele Vaak overbodig, maar kan code duidelijker maken Je kunt this niet gebruiken in static methodes Waarom niet? Je kunt this meegeven in een methode-aanroep Het is ‘gewoon’ een verwijzing naar een object (Komen we later op terug)