De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.

Verwante presentaties


Presentatie over: "Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object."— Transcript van de presentatie:

1 Hoorcollege 7 Collections, arrays

2 Programma ‘Snowflakes’ Sneeuwvlok object

3 SnowFlakes programma class MyGame { Snowflake snowflake1; Snowflake snowflake2; Snowflake snowflake3; Snowflake snowflake4; Snowflake snowflake5; Snowflake snowflake6; Snowflake snowflake7; Snowflake snowflake8; Snowflake snowflake9; … } Dat kan handiger!

4 Collections Worden gebruikt om lijsten of verzamelingen van objecten/variabelen te representeren Voorbeelden van Collection klassen: List, Set, Dictionary…

5 Collections Voorbeeld: de List klasse – Uit System.Collections.Generic Declaratie: Initialisatie: List snowflakes; snowflakes = new List (); Type van objecten in de lijst.

6 Collections Wat kan List bijvoorbeeld allemaal? – Lengte opvragen – Element ergens in de lijst toevoegen – Element aan het eind toevoegen List heeft een type-parameter – We noemen List ook wel een generiek type int lengte = snowflakes.Count; snowflakes.Insert(1, new Snowflake(…)); snowflakes.Add(new Snowflake(…));

7 Vullen en langslopen van een List for (int i = 0; i < 500; i++) snowflakes[i].Draw(gameTime, spriteBatch); snowflakes = new List (); Texture2D sprite; sprite = Content.Load ("spr_snowflake"); for (int i = 0; i < 500; i++) { Snowflake flake = new Snowflake(sprite); snowflakes.Add(flake); } Geeft aan welk element In de lijst we willen hebben We moeten wel steeds het aantal vlokken aangeven… 

8 Langslopen van een List Speciale constructie: foreach Letterlijk: ‘doe iets voor elk object in de lijst’ Kan gebruikt worden voor alle Collection klassen for (int i = 0; i < nrOfFlakes; i++) snowflakes[i].Draw(gameTime, spriteBatch); foreach (Snowflake flake in snowflakes) flake.Draw(gameTime, spriteBatch);

9 IList interface List heeft een soort superklasse IList Dus dit mag ook: IList is een interface Verschil interface/klasse: – Keyword ‘virtual’ niet nodig in een interface – Een klasse mag meerdere interfaces implementeren IList snowflakes; snowflakes = new List ();

10 Interfaces Een interface definieert methoden en properties… Maar implementeert ze niet! Ook heeft een interface geen membervariabelen Klasse die een interface implementeert moet alle methoden/properties bevatten die in die interface gedefinieerd zijn

11 IList/ICollection interface ICollection – Volgorde van gegevens is niet belangrijk – Voorbeeld: alle items in de inventory van de speler IList – Gegevens die in een lineaire volgorde staan – Voorbeeld: de achtergrondlagen in de volgorde waarin ze getekend moeten worden

12 ICollection interface Ziet er zo uit: interface ICollection { void Add(E x); bool Remove(E x); bool Contains(E x); int Count {get;}; // een read-only property void Clear(); … }

13 IList interface interface IList : ICollection { E this [int n] {get; set;}; // notatie voor de indicering int IndexOf(E x); void Insert(int n, E x); void RemoveAt(int n); … } IList interface is ook Een ICollection!

14 Andere interfaces ISet – De klassieke verzameling – Mag geen dubbele elementen bevatten IDictionary – Een soort array, maar dan anders – Indicering kan met elk type – Bijvoorbeeld string IDictionary vertaler = new Dictionary (); vertaler["hallo"] = "hello"; vertaler["het spel"] = "the game";

15 Arrays Een array is een lijst van objecten van hetzelfde type. – Simpele vorm van een collection Voorbeeld van een declaratie van een array: int [] tabel; Variabelenaam Geeft aan dat we met een array te maken hebben Type van de waarden in de array

16 Arrays int [] tabel; tabel = new int[5]; tabel 0 length 5 1 2 0 0 0 30 40 Declaratie Initialisatie Aantal elementen in de array Bevat aantal elementen Let op: na initialisatie kan het aantal elementen niet meer veranderd worden! – In tegenstelling tot Collections!

17 x 0 length 5 1 2 0 0 0 30 40 Arrays int [] tabel; tabel = new int[5]; tabel[3] = 12; int x = tabel[3] + 5; tabel[1] = tabel[3]/2; x = tabel.Length; tabel 12 17 Property voor toegang tot het aantal elementen 5 6

18 Arrays Stel we vullen de array als volgt: Dit kan ook een stuk handiger: int [] tabel; tabel = new int[5]; tabel[0] = 42; tabel[1] = 42; tabel[2] = 42; tabel[3] = 42; tabel[4] = 42; int nummer; for (nummer=0; nummer<tabel.Length; nummer++) tabel[nummer] = 42;

19 Publieksvraag Schrijf een aantal opdrachten die de tabel vult met de waarden 1 t/m 5 int nummer; for (nummer=0; nummer<tabel.Length; nummer++) tabel[nummer] = nummer+1;

20 Publieksvraag De reeks van Fibonacci is als volgt gedefinieerd: – f(0) = 1, f(1) = 1 – f(n) = f(n-2) + f(n-1) voor n > 1 Voorbeeld: – 1, 1, 2, 3, 5, 8, 13, 21, enzovoorts Schrijf een serie opdrachten die een array van grootte 20 met de reeks van Fibonacci vult.

21 Oplossing int[] fib; fib = new int[20]; fib[0] = 1; fib[1] = 1; for (int nummer=2; nummer<fib.Length; nummer++) fib[nummer] = fib[nummer-1] + fib[nummer-2];

22 Arrays van andere typen Arrays kunnen van allerlei typen gemaakt worden: int[] fibonacci; float[] floatArray; char[] karakterLijst; Vector2[] posities; GameObject[] gameObjecten; Type mag ook best een struct zijn. Of zelfs een eigen klasse!

23 Array van getallen tabel int [ ] tabel; new int [5];tabel = 0 1 2 3 4 length5

24 Array van struct-objecten tabel Vector2 [ ] tabel; new Vector2[5]; tabel = 0 1 2 3 4 length5

25 Array van class-objecten tabel GameObject [ ] tabel; new GameObject[5]; tabel = 0 1 2 3 4 length5 for (int t=0; t<5; t++) tabel[t] = new GameObject();

26 Array als parameter tabel 0 1 2 3 4 length5 12 95 11 23 15 int Kleinste ( int [ ] tabel ) { } int resultaat; return resultaat; if (tabel [t] < resultaat) resultaat = tabel [t]; for (t=0; t<tabel.Length; t++) int t; resultaat =tabel [0];

27 Deel van de array doorzoeken tabel 0 1 2 3 4 length5 12 95 11 int Kleinste ( int [ ] tabel ) { } int resultaat; return resultaat; if (tabel [t] < resultaat) resultaat = tabel [t]; for (t=0; t<tabel.Length; t++) int t; resultaat =tabel [0]; aantal, int aantal) static

28 Syntax van array-type

29 Twee-dimensionale array tabel int [, ] tabel; new int [5,3]; tabel = 0 1 2 3 4 length5 01 3 2 tabel.GetLength(0) tabel.GetLength(1)

30 Array van arrays tabel int [ ] [ ] tabel; new int[5][2]; tabel = 0 1 2 3 4 length5

31 Drie-dimensionale array tabel int [,, ] tabel; new int [5,3,2]; tabel = 0 1 2 3 4 length5 01 3 2 2 0 1

32 Initialisatie van arrays string [ ] woorden = { "aap", "noot", "mies" }; int [ ] maand = { 31,28,31,30,31,30,31,31,30,31,30,31 }; int [, ] = { {1,2,3,4}, {5,6,7,8} };

33 De volgende keer Jewel Jam


Download ppt "Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object."

Verwante presentaties


Ads door Google