De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gameprogrammeren: Properties

Verwante presentaties


Presentatie over: "Gameprogrammeren: Properties"— Transcript van de presentatie:

1 Gameprogrammeren: Properties
Arjan Egges Paul Bergervoet Wouter van Toll

2 Motivatie Stel we willen de positie van een Player veranderen van buitenaf Optie 1: public membervariabele public class Player { public Vector2 position; ... } Player player = new Player(); player.position = new Vector(10,10); player.position.X = 20;

3 Mag niet: Player.position is private
Motivatie Maar wat als we checks willen toevoegen? Bijvoorbeeld: positie moet in het level passen Optie 2: private variabele, public methodes public class Player { private Vector2 position; ... public void SetPosition(Vector2 p) { position = p; if (position.X < 0) { ... } } public Vector2 GetPosition() { return position; Player player = new Player(); player.position = new Vector(10,10); player.SetPosition(new Vector(10,10)); Vector2 p = Player.GetPosition(); Mag niet: Player.position is private

4 Properties Dit ‘getten’ en ‘setten’ komt zo vaak voor dat C# er een alternatief voor heeft: Optie 3: properties public class Player { public Vector2 Position { get; set { Position = value; if (Position.X < 0) { ... } } ... Vector2 p = player.Position; Player.Position = new Vector2(10,10); (Conventie: properties met hoofdletter) In plaats van GetPosition() In plaats van SetPosition(…) Speciaal keyword binnen set: de waarde die de aanroeper meegeeft Roept de getter aan Roept de setter aan, met al z’n checks

5 Properties Property = een eigenschap van een object die je kunt getten en (optioneel) setten Heeft vaak te maken met een membervariabele die je niet direct mag inzien Je kunt extra gedrag inbouwen in get/set

6 Voorbeeld, uitgebreid Private membervariabele, public property
public class Player { private Vector2 position; public Vector2 Position get return position; } set position = value; if (position.X < 0) { ... }

7 get en set Sommige properties mag je alleen lezen (get)
String.Length Viewport.Width Sommige properties mag je ook schrijven (set) Vector2.X Content.RootDirectory Cannon.Color

8 Properties vs membervariabelen
Properties hoeven niet altijd direct met een waarde van een membervariabele te corresponderen (Zulke properties hebben vaak alleen een getter) public Vector2 Center { get return new Vector2(sprite.Width, sprite.Height) / 2; }

9 Properties in properties
Ander voorbeeld van een property: `TotalGameTime’ is een property van een GameTime-object en geeft de totaal gepasseerde tijd aan De gepasseerde tijd heeft zelf het type TimeSpan En een TimeSpan-object heeft weer een property `Milliseconds’ gameTime.TotalGameTime gameTime.TotalGameTime.Milliseconds Type: int

10 Static properties Net als een methode kan een property static zijn
Dit is geen property van een specifiek object, maar van de gehele klasse van objecten (Anders gezegd: hoort bij een type, en niet bij een variabele van een type) Voorbeeld in MonoGame: Color.Olive (en andere ingebouwde kleuren) Roept stiekem een get-methode aan die creëert: Werkt als een soort constante new Color(128, 128, 255)

11 Static en niet-static properties
De property `Olive’ hoort bij het type `Color’ De property `TotalGameTime’ hoort bij een variabele van het type `GameTime’ De property `R’ hoort ook bij een variabele van het type `Color’ Dus dit mag niet: Color.Olive gameTime.TotalGameTime Color.R

12 Property, public variabele, of get/set-methodes?
Officieel kan het allemaal: je mag zelf kiezen Een property staat “netter” dan direct een variabele bewerken Handige shorthand voor als je iets niet wilt opslaan, maar alleen soms opvragen Zoals het Center-voorbeeld Een klasse wordt netter met een getter of setter


Download ppt "Gameprogrammeren: Properties"

Verwante presentaties


Ads door Google