OLD [G_PRO] Programmeren en OO programmeren
experimentalmerge5
experimentalmerge5
  • Welkom
  • Inleiding
    • Benodigdheden
    • Afspraken code
    • Afspraken oefeningen
    • Nuttige extras
    • Dankwoord
    • Mee helpen?
  • Semester 1: Programming Principles
    • H0: Werken met Visual Studio
      • Introductie tot C#
      • Werken met Visual Studio
      • Je eerste programma
      • Input verwerken met ReadLine
      • Fouten in je code
      • Kleuren in Console
      • Oefeningen
    • H1: Variabelen en datatypes
      • De essentie van C#
      • Datatypes
      • Variabelen
      • Expressies en operators
      • Oefeningen
    • H2: Tekst in code
      • Strings en chars
      • Strings samenvoegen
      • Unicode tonen
      • Oefeningen
      • Uitbreidingsoefeningen
    • H3: Werken met data
      • Casting, conversie en parsing
      • Input verwerken en omzetten
      • Math-library en berekeningen
      • Random
      • Debuggen
      • Oefeningen
    • H4: Beslissingen
      • Beslissingen intro
      • Booleanse logica en operators
      • If
      • Scope van variabelen
      • enum
      • Switch
      • Oefeningen
    • H5: Loops
      • Loops intro
      • While en Do While
      • For
      • Nesting
      • Programma flow analyse
      • Oefeningen deel 1
      • Oefeningen deel 2
      • Oefeningen deel 3
    • H6: Methoden
      • Methoden intro
      • Bibliotheken
      • Geavanceerde methoden
      • Oefeningen
      • Uitbreidingsoefeningen
    • H7: Arrays
      • Array principes
      • Werken met arrays
      • Arrays en methoden
      • N-dimensionale arrays
      • Oefeningen deel 1
      • Oefeningen deel 2
  • Semester 2 : OOP
    • H8: Klassen en objecten
      • OOP Intro
      • Klassen en objecten in C#
      • Methoden en access modifiers
      • Properties
      • DateTime: leren werken met objecten
      • (Klassikale!) smaakmaker OOP
      • Oefeningen
    • H9: Geheugenmanagement bij klassen
      • Objecten en methoden
      • Stack en Heap
      • Null en NullReferenceException
      • Oefeningen
    • H10: Geavanceerde klassen en objecten
      • Constructors
      • Static
      • Spelen met strings
      • Oefeningen
    • H11: Arrays en klassen
      • Arrays van objecten
      • Foreach en var
      • List
      • Oefeningen
      • Extra oefeningen
    • H12: Overerving
      • Overerving intro
      • Constructors bij overerving
      • Virtual en override
      • Base keyword
      • Oefeningen
    • H13: Geavanceerde overerving
      • System.Object
      • Abstract
      • Oefeningen
  • Appendix
    • Ea-ict coding guidelines
    • Oefeningen kerkhof
  • Semester 1 appendix
    • Nice to know stuff
      • Out en Ref parameters
      • Jagged arrays
    • All-In-Projecten
      • Overzicht
      • Console Matrix
      • Ascii filmpjes maken met loops
      • Ascii filmpjes maken met methoden
      • Fun with methods: een verhaalgenerator
      • Tekst-gebaseerd Maze game
      • Conway game of life
  • Semester 2 appendix
    • Nice to know stuff
      • Klassen herbruiken
      • Operator overloading
      • Expression bodied members
    • All-In-Projecten
      • Overzicht
      • OO Textbased Game
      • War Simulator
      • Map Maker
      • Magic The Gathering API
  • Pro (geen leerstof en/of in opbouw)
    • Bitwise operators
    • Generics en collections
      • Generics methoden en types
      • Generic classes en constraints
      • Collections
      • Labo-oefeningen
    • Exception handling
      • Werken met exceptions
      • Waar exceptions plaatsen
      • Zelf uitzonderingen maken
    • Events
      • Events
      • Chat server
    • Software engineering
      • SOLID
Powered by GitBook
On this page
  • Pokémons makkelijk aanmaken (h10-pokeconstructie)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Voorbeeldinteractie
  • Pokémons nog makkelijker aanmaken (h10-chaining)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Voorbeeldinteractie
  • Globale statistieken bijhouden (h10-pokebattlecount)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Voorbeeldinteractie
  • Gemeenschappelijke kenmerken (h10-tombola)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Voorbeeldinteractie
  • CSV

Was this helpful?

Export as PDF
  1. Semester 2 : OOP
  2. H10: Geavanceerde klassen en objecten

Oefeningen

Pokémons makkelijk aanmaken (h10-pokeconstructie)

Leerdoelen

  • gebruik van expliciete constructoren

Functionele analyse

Zorg ervoor dat elke Pokémon bij constructie zijn eigenschappen krijgt.

Technische analyse

  • Voorzie je klasse Pokémon (uit hoofdstuk 9) van een constructor zonder parameters. Dit om bestaande code intact te houden.

  • Voorzie je klasse Pokémon (uit hoofdstuk 9) van een constructor met vier parameters, één per property. Pas je methode MakePokemon van hoofdstuk 9 aan zodat gebruik wordt gemaakt van deze constructor in plaats van de constructor zonder argumenten.

Voorbeeldinteractie

(Hier is geen verschil met hoe dit er in hoofdstuk 9 uitzag.)

Pokémons nog makkelijker aanmaken (h10-chaining)

Leerdoelen

  • gebruik van expliciete constructoren

  • herbruik van bestaande constructor

Functionele analyse

Wanneer we een willekeurige Pokémon aanmaken, start deze normaal met de helft van zijn maximale hit points. We willen onszelf het werk besparen van dit elke keer uit te typen, dus we voorzien een extra constructor.

Technische analyse

Maak een nieuwe constructor met drie argumenten in plaats van vier. Het argument voor HP valt weg. Deze nieuwe constructor maakt eerst gebruik van de bestaande constructor met vier argumenten. Daarna past hij in zijn body de hoeveelheid HP aan naar de helft van het maximum. Bij het gebruik van de meer algemene constructor maakt het niet uit welke waarde je meegeeft voor de huidige hit points. Test je constructor uit met een (statische) demomethode ConstructPokemonChained(). Deze maakt met deze nieuwe constructor een nieuwe Pokémon (naar keuze) aan met een maximale hoeveelheid HP naar keuze en toont de uitkomst.

Voorbeeldinteractie

De nieuwe Squirtle heeft maximum 40 HP en heeft momenteel 20 HP.

Globale statistieken bijhouden (h10-pokebattlecount)

Leerdoelen

  • verschil tussen klasse en object

Functionele analyse

We willen bijhouden hoe vaak elk element al gebruikt is voor een aanval. Voeg code toe die bijhoudt hoe vaak een Pokémon van type Grass al heeft aangevallen, hoe vaak een Pokémon van type Fire al heeft aangevallen, etc. Voeg ook een statische methode, DemonstrateCounter() aan die vijf willekeurige Pokémon aanmaakt en elke Pokémon tussen de 5 en de 10 keer laat aanvallen.

Technische analyse

Bij een aanval van een Pokémon met een bepaald type, gaat er een teller omhoog. Er is één teller per PokéType.

Voorbeeldinteractie

BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
SQUIRTLE!
SQUIRTLE!
SQUIRTLE!
SQUIRTLE!
SQUIRTLE!
PIKACHU!
PIKACHU!
PIKACHU!
PIKACHU!
PIKACHU!
CHARMANDER!
CHARMANDER!
CHARMANDER!
CHARMANDER!
CHARMANDER!
CHARMANDER!
BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
BULBASAUR!
Aantal aanvallen van Pokémon met type `Grass`: 12
Aantal aanvallen van Pokémon met type `Fire`: 6
Aantal aanvallen van Pokémon met type `Electric`: 4
Aantal aanvallen van Pokémon met type `Water`: 5

(Merk op: er zijn twee Bulbasaurs in het spel, maar alle aanvallen van graspokémon zijn samen geteld.)

Gemeenschappelijke kenmerken (h10-tombola)

Leerdoelen

  • goed gebruik van Random

  • static

  • constructoren

Functionele analyse

We schrijven een digitale tombola. Iedere keer een lotje wordt aangemaakt, wordt er een willekeurig getal aan toegekend.

Technische analyse

Maak een klasse, Ticket. Deze is voorzien van één autoproperty: Prize. Dit is een byte. Bij aanmaak van een Ticket wordt deze property ingesteld op een waarde tussen 1 en 100. Schrijf je code zodat dezelfde Random gebruikt wordt voor alle tickets. Je kan dus geen Random aanmaken iedere keer je een Ticket aanmaakt! Maak ook een methode Raffle (d.w.z. "tombola") om te demonstreren dat dit werkt. Deze methode maakt een rij met 10 lotjes aan en print de waarde van elk lotje in de rij. Het is niet erg dat twee lotjes dezelfde waarde kunnen krijgen.

Voorbeeldinteractie

Waarde van het lotje: 77
Waarde van het lotje: 8
Waarde van het lotje: 12
Waarde van het lotje: 14
Waarde van het lotje: 51
Waarde van het lotje: 97
Waarde van het lotje: 20
Waarde van het lotje: 15
Waarde van het lotje: 32
Waarde van het lotje: 68

CSV

PreviousSpelen met stringsNextH11: Arrays en klassen

Last updated 5 years ago

Was this helpful?

Schrijf een statische klasse CSVDemo met een statische methode Run(). Deze downloadt automatisch en print de info in de eerste drie kolommen op het scherm. Tussen elke kolom verschijnt een tab.

dit bestand