Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdBruno van Laatst gewijzigd meer dan 10 jaar geleden
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.