
OO Programmeren Labo 6
Herhaling en nieuwe opdrachten
Afstandsonderwijs
Doelstelling
Nogal wat studenten hebben de opdracht van het vorige labo niet ingestuurd. Om jullie te helpen in deze moeilijke tijden maken we de opdrachten van vorige weken gezamelijk. Vergeet dan niet de opdracht van vorige week alsnog in te sturen! Het is belangrijk dat jullie de opdrachten insturen zodanig dat al het geleverde werk niet verloren gaat.
-
Deze les bevat het monitoraat voor studenten die hun opdrachten van Labo 4 en/of 5 nog niet hebben ingestuurd. De doelstelling is zoveel mogelijk studenten bij het afstandsonderwijs te betrekken.
-
Voor de gevorderden zijn er extra opdrachten voorzien.
Leerplan
Voor de studenten die de opdrachten al gemaakt hebben staan er nieuwe opdrachten hier onderaan. Dit Labo bevat veel herhaling omdat er weinig studenten hun opdrachten van Labo 4 en slechts enkele studenten hun opdrachten van Labo 5 hebben ingediend. Ik hoop hiermee jullie warm te maken om alsnog de opdrachten te maken. Stuur ze in met de links op Digitap van Labo 4 en 5. Synchroniseer je lokale computer met Bitbucket. De deadlines zijn indicatief en dienen om de lessen te structuren. Je kan nog altijd je opdrachten insturen!!!!
Opdrachten voor gevorderde studenten staan hieronder. De studenten, die hun opdrachten al hebben ingediend, kunnen dit lesmateriaal gebruiken om na te gaan als ze de opdrachten juist hebben gemaakt. Je leert ook hoe je in de opdrachten met de code kan experimenteren.
- Je vind de voorbeeldoplossingen in mijn repo op Bitbucket.
- We maken de opdrachten uit Labo 4 klassikaal. Ze staan in DateTime: leren werken met objecten. We plaatsen ze in een klasse met de naam
LerenWerkenMetDateTime
. Gebruik de naam van de opdracht als naam voor de methode:- Oefening: H8-ticks-sinds-2000
- Oefening: H8-simpele-timing
- Oefening: H8-ticks-sinds-2000
- We maken de opdrachten uit Labo 5 klassikaal
-
Oefening 1: Oefening 2 (h9-consciouspokemon)
-
Overzicht:
-
Voeg de volgende
static
method toe aan dePokemon
klasse (in het bestand Pokemon.cs):public static Pokemon FirstConsciousPokemon(Pokemon[] pokemons) { for (int i = 0; i < pokemons.Length; i++) { if (pokemons[i].HP >= 1) { return pokemons[i]; } } return null; }
- Voeg de methode TestConsciousPokemon toe aan de
Program
klasse in Program.cs:public static void TestConsciousPokemon() { // De 4 pokemon maken en in array stoppen // Bulbasaur en Charmander 0 HP hebben // Squirtle 2 HP en Picachu 20 HP Pokemon bulbasaur = new Pokemon(); bulbasaur.MaxHP = 20; bulbasaur.HP = 0; bulbasaur.PokeSpecie = PokeSpecies.Bulbasaur; bulbasaur.PokeType = PokeTypes.Grass; Pokemon charmander = new Pokemon(); charmander.MaxHP = 20; charmander.HP = 0; charmander.PokeSpecie = PokeSpecies.Charmander; charmander.PokeType = PokeTypes.Fire; Pokemon squirtle = new Pokemon(); squirtle.MaxHP = 20; squirtle.HP = 2; squirtle.PokeSpecie = PokeSpecies.Squirtle; squirtle.PokeType = PokeTypes.Water; Pokemon pikachu = new Pokemon(); pikachu.MaxHP = 20; pikachu.HP = 20; pikachu.PokeSpecie = PokeSpecies.Pikachu; pikachu.PokeType = PokeTypes.Electric; // we stoppen de instanties die we gemaakt hebben in een array Pokemon[] pokemonArray = { bulbasaur, charmander, squirtle, pikachu }; // vermits FirstConsciousPokemon een static methode is // kunnen we die direct vanuit de klasse oproepen en niet // vanuit een object van die klasse Pokemon firstPokemon = Pokemon.FirstConsciousPokemon(pokemonArray); firstPokemon.Attack(); }
- Roep die methode op vanuit het menu.
-
- Oefening 3 (h9-consciouspokemon-improved)
- Overzicht
- Hier leren we met
null
werken. Het is een speciaal gegevenstype die ons toelaat om met 'afwezigheid van een waarde' om te gaan. Wat doen we in het geval dat er geen enkele pokemon in de array een posititieve HP waarde heeft? Dat kunnen kunnen we eennull
waarde retourneren en op basis daarvan de juiste actie ondernemen:Pokemon firstPokemon = ConsciousPokemon.FirstConsciousPokemon(pokemonArray); if (firstPokemon != null) { firstPokemon.Attack(); } else { Console.WriteLine("Al je Pokémon zijn KO! Haast je naar het Pokémon center."); }
- De
TestConsciousPokemonSafe
methode plaatse je deProgram
klasse die staat in Program.cs. Je stelt alle HP waarden in 0 zodat er eennull
waarde wordt geretourneerd:public static void TestConsciousPokemonSafe() { // De 4 pokemon maken en in array stoppen Pokemon bulbasaur = new Pokemon(); bulbasaur.MaxHP = 20; bulbasaur.HP = 0; bulbasaur.PokeSpecies = PokeSpecies.Bulbasaur; bulbasaur.PokeType = PokeTypes.Grass; Pokemon charmander = new Pokemon(); charmander.MaxHP = 20; charmander.HP = 0; charmander.PokeSpecies = PokeSpecies.Charmander; charmander.PokeType = PokeTypes.Fire; Pokemon squirtle = new Pokemon(); squirtle.MaxHP = 20; squirtle.HP = 0; squirtle.PokeSpecies = PokeSpecies.Squirtle; squirtle.PokeType = PokeTypes.Water; Pokemon pikachu = new Pokemon(); pikachu.MaxHP = 20; pikachu.HP = 0; pikachu.PokeSpecies = PokeSpecies.Pikachu; pikachu.PokeType = PokeTypes.Electric; Pokemon[] pokemonArray = { bulbasaur, charmander, squirtle, pikachu }; Pokemon firstPokemon = ConsciousPokemon.FirstConsciousPokemon(pokemonArray); if (firstPokemon != null) { firstPokemon.Attack(); } else { Console.WriteLine("Al je Pokémon zijn KO! Haast je naar het Pokémon center."); } }
- Roep die methode op vanuit het menu.
- Overzicht
-
Opdracht monitoraat
Deze opdrachten zijn alleen voor de studenten die hun opdrachten nog niet hebben ingestuurd.
- Maak met behulp van de uitleg van hierboven de opdrachten van Labo 4.
- Oefening: H8-ticks-sinds-2000
- Oefening: H8-simpele-timing
- Synchroniseer met Bitbucket en stuur de oefeningen door met de link van Labo 4. Stuur de bestanden LerenWerkenMetDateTime.cs en Program.cs door.
- Maak met behulp van de uitleg van hierboven de opdrachten van Labo 5 (je vind ze hier: H9: Geheugenmanagement bij klassen):
- Oefening 2 (h9-consciouspokemon): plaats
FirstConsciousPokemon
in de klasse met de naamPokemon
enTestConsciousPokemon
in de klasse met de naam Program. - Oefening 3 (h9-consciouspokemon-improved): plaats de statische methode met de naam
TestConsciousPokemonSafe
in de Program klasse in het Program.cs bestand. - Synchroniseer met Bitbucket en stuur de oefeningen door met link van Labo 5 (vorige labo les).
- Oefening 2 (h9-consciouspokemon): plaats
Opdracht Labo 6
Alleen voor de studenten die alle opdrachten al gemaakt hebben.
- Maak zelf de volgende oefeningen:
- Hoofstuk 8
- Voorbeeld abstractie (h8-honden) (plaats in nieuwe
Honden
klasse) - Oefening: H8-RapportModule-V1 (plaats in
Rapport
klasse) -
Oefening: H8-RapportModule-V2 (plaats in
Rapport
klasse) -
Oefening: H8-Getallencombinatie (plaats in
Rapport
klasse) -
Oefening: H8-Figuren (plaats in
Figuren
klasse)
- Voorbeeld abstractie (h8-honden) (plaats in nieuwe
- Hoofstuk 9
-
Oefening 4: value en reference (h9-pokevalueref) (plaats in
Pokemon
klasse) -
Oefening 5: uitkomst gevecht (h9-fight) (plaats in
Pokemon
klasse)
-
- Hoofstuk 8
- Deadline: 2 april 2020
- De deadlines zijn indicatief. Ze dienen om de lessen te structureren. Je kan dus altijd nog je opdrachten insturen. In deze moeilijke tijden is het belangrijk om uiteindelijk tegen het einde de opdrachten gemaakt te hebben. Blijven voortdoen is de boodschap!!
- Stuur via onderstaande link met de naam Opdracht Labo 6 Geheugenmanagement bij klassen (herhaling) doorsturen de bestanden Pokemon.cs en Program.cs door. Er is een aparte link voor Groep 3 en Groep 4.