Gameprogrammeren: Lists en interfaces

Slides:



Advertisements
Verwante presentaties
Gegevensstructuren: list boxen en lijsten
Advertisements

Van domeinklasse tot implementatie
Hoofdstuk 2 Hallo, C# !.
De koektrommel of de grabbelton
Inleidend probleem Data structuur (hiërarchie van classes)
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Arrays.
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Polymorphisme en Interfaces: inleiding
Java Objectgeoriënteerd Programmeren in Java met BlueJ
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Herhaling: He who does not learn from history, is doomed to repeat it.
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Game Object Structuren
Objectgeoriënteerd Programmeren (2)
…is eigenlijk overbodig!
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Introductie
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Letterfrequentie turven
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Afsluiting
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Herhalingen
Gameprogrammeren: Platform-games
Gameprogrammeren: Properties
Tinpro015b-les6 Templates.
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Game Basics
Arjan Egges & Paul Bergervoet
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Exceptions
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Software Development fundamentals
Gameprogrammeren: Sprite sheets
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Software Development fundamentals
Transcript van de presentatie:

Gameprogrammeren: Lists en interfaces Arjan Egges Paul Bergervoet Wouter van Toll

Programma ‘Snowflakes’ Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object Sneeuwvlok-object

Programma ‘Snowflakes’ class MyGame { Snowflake snowflake1; Snowflake snowflake2; Snowflake snowflake3; Snowflake snowflake4; Snowflake snowflake5; Snowflake snowflake6; Snowflake snowflake7; Snowflake snowflake8; Snowflake snowflake9; … } Dat kan handiger!

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

Het type van de objecten in de lijst. Collections: List Voorbeeld: de List-klasse Uit System.Collections.Generic Declaratie: Initialisatie: List heeft een type-parameter We noemen List ook wel een generiek type using System.Collections.Generic; ... List<Snowflake> snowflakes; Het type van de objecten in de lijst. snowflakes = new List<Snowflake>();

Uitstapje: Generieke types Een generiek type maakt gebruik van een ander type object, nog zonder te zeggen wat dat is Soort uitbreiding van inheritance Collections zijn het meest logische voorbeeld Een lijst van int/bool/Snowflake/... Dit concept bestaat voor klassen, methoden, interfaces, etc. Zoekterm: Generic class/method/interface/...

Zelf iets generic maken Voorbeeld van een generieke klasse: public class Taart<T> { public void VoegToe(T ingredient) { ... } } ... Taart<Appel> appeltaart = new Taart<Appel>(); appeltaart.VoegToe(new Appel()); appeltaart.VoegToe(new Banaan()); // mag niet Het type van de objecten in de taart Werkt alleen als je het juiste type object meegeeft

Terug naar List Wat kan List bijvoorbeeld allemaal? Lengte opvragen Element ergens in de lijst toevoegen Element aan het eind toevoegen Element op een bepaalde positie opvragen int lengte = snowflakes.Count; snowflakes.Insert(1, new Snowflake(…)); snowflakes.Add(new Snowflake(…)); Snowflake s = snowflakes[0];

Vullen en langslopen van een List snowflakes = new List<Snowflake>(); Texture2D sprite; sprite = Content.Load<Texture2D>("spr_snowflake"); for (int i = 0; i < 500; i++) { Snowflake flake = new Snowflake(sprite); snowflakes.Add(flake); } Beter: snowflakes.Count (stel dat het er ooit niet 500 zijn!) for (int i = 0; i < 500; i++) snowflakes[i].Draw(gameTime, spriteBatch); Geeft aan welk element in de lijst we willen hebben

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 < snowflakes.Count; i++) snowflakes[i].Draw(gameTime, spriteBatch); foreach (Snowflake flake in snowflakes) flake.Draw(gameTime, spriteBatch);

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<Snowflake> snowflakes; snowflakes = new List<Snowflake>();

Interfaces Een interface: definieert methoden en properties… …maar implementeert ze niet! heeft geen membervariabelen Klasse die een interface implementeert moet alle methoden/properties uit die interface bevatten Dus: interface is een soort “lijstje beloften” die een klasse moet waarmaken

IList en ICollection ICollection IList 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

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

IList is zelf ook weer een ICollection! Ilist-interface IList is zelf ook weer een ICollection! interface IList<E> : ICollection<E> { E this [int n] {get; set;}; // notatie voor de indicering int IndexOf(E x); void Insert(int n, E x); void RemoveAt(int n); … }

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