Oefeningen
Een bestaande klasse uitbreiden via overerving
overerving van bestaande klassen laten zien
toegang tot properties en methodes demonstreren
Functionele analyse
Maak een nieuwe klasse, WorkingStudent. Een werkstudent verschilt van een student omdat hij soms moet gaan werken en omdat hij een bepaald aantal werkuren per week moet presteren.
Technische analyse
Deze klasse erft over van de klasse Student die je voor het eerst hebt gebruikt in hoofdstuk 8.
Bovenop alle eigenschappen / methoden van Student heeft WorkingStudent:
een methode HasWorkToday() die willekeurig true of false teruggeeft. Er is geen methode NextBool in de klasse random, maar je kan een willekeurig getal tussen 0 en 1 genereren en de uitkomst vertalen in een boolean.
een property WorkHours die een aantal gepresteerde uren bijhoudt (als byte
Voeg een statische methode DemonstrateWorkingStudent() toe aan je klasse voor deze les. Deze methode doet volgende zaken:
ze maakt met de default constructor één gewone student aan (de properties mag je invullen zoals je zelf wil, maar vul ze wel in)
ze maakt met de default constructor één werkstudent aan (de properties mag je invullen zoals je zelf wil, maar vul ze wel in)
ze plaatst beide in een List<Student>
Klassen met aangepaste constructor maken
Functionele analyse
We schrijven een applicatie die een lijst van af te handelen taken bijhoudt. Er zijn twee soorten taken: éénmalige taken en terugkerende taken. Elke taak heeft een beschrijving, maar terugkerende taken hebben ook een bepaalde hoeveelheid tijd waarna ze herhaald moeten worden.
Technische analyse
Maak een klasse Task met een property Description en een constructor die een waarde voor deze beschrijving verwacht (een string).
Wanneer deze constructor wordt opgeroepen, wordt volgende tekst getoond: "Taak is aangemaakt." Je vult hier zelf de beschrijving van de taak in.
Voorbeeldinteractie
Oefening: H12-ziekenhuis
methodes overschrijfbaar maken
code specifieker maken met behulp van subklassen
Functionele analyse
Dit programma berekent de doktersrekening van een patiënt, op basis van een basisbedrag (€50) en een extra kost (€20/uur). In het geval van een verzekerde patiënt worden de kosten met 10% verlaagd.
Technische analyse
Schrijf twee klassen: Patient en InsuredPatient
Beide hebben als properties een naam (een string) en een verblijfsduur (een uint)
voorbeeldinteractie
Test ook uit met een verblijf van 1 uur.
Test ook uit met een verblijf van 0 uur.
Test ook uit met de patiënten beschreven in de voorbeeldinteractie.
Oefening: dynamic dispatch
herbruik code ouderklasse
Functionele analyse
Onze rapporten van studenten missen belangrijke informatie. We willen te zien krijgen wie het statuut van werkstudent heeft.
Technische analyse
Pas je klassen Student en WorkingStudent aan, zodat de bestaande methode ShowOverview een uitgebreider overzicht toont voor werkstudenten (voor gewone studenten blijft het ongewijzigd). Dit heeft dan de vorm:
De laatste twee regels komen bovenop de info die je eerder al toonde. Maak gebruik van base zodat je niet de volledige implementatie opnieuw hoeft te schrijven. Pas nu je methode DemonstrateWorkingStudent aan zodat niet de naam van elke student in de lijst wordt getoond, maar zodat zijn volledig rapport wordt getoond.