overerving van bestaande klassen laten zien
toegang tot properties en methodes demonstreren
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.
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
). Deze staat waarden tussen 1 en 20 toe. Lagere of hogere waarden worden automatisch aangepast (naar 1 of 20 naargelang of de waarde lager of hoger is).
de defaultwaarde van deze property is 10
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>
ze doorloopt met een foreach
-lus de lijst en toont via Console.WriteLine
de naam van elke student
je moet deze methode kunnen opstarten vanuit je keuzemenu voor dit onderwerp
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.
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.
Maak een subklasse RecurringTask
van Task
. Deze heeft een constructor die twee zaken verwacht: een beschrijving (nog steeds een string
) en een aantal dagen (een byte
).
Wanneer deze constructor wordt opgeroepen, wordt de tekst voor een gewone taak getoond. Daaronder wordt getoond: "Deze taak moet om de dagen herhaald worden."
Voeg een statische methode DemonstrateTasks()
toe aan je klasse voor deze les. Deze methode maakt eerst een ArrayList
van taken aan en herhaalt daarna volgende stappen tot de gebruiker aangeeft dat hij klaar is:
ze toont drie opties: een taak aanmaken, een terugkerende taak aanmaken of stoppen
indien de gebruiker vraagt een taak aan te maken, vraagt ze een beschrijving, maakt ze de taak en voegt ze deze toe aan de lijst
indien de gebruiker vraagt een terugkerende taak aan te maken, vraagt ze een beschrijving en een aantal dagen, maakt ze de terugkerende taak en voegt ze deze toe aan de lijst
indien de gebruiker wenst te stoppen, eindigt ze zonder resultaat
je moet deze methode kunnen opstarten vanuit je keuzemenu voor dit onderwerp
werken met methodes
methodes overschrijfbaar maken
code specifieker maken met behulp van subklassen
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.
Schrijf twee klassen: Patient
en InsuredPatient
Beide hebben als properties een naam (een string
) en een verblijfsduur (een uint
)
Beide hebben één constructor die de naam en verblijfsduur als parameter hebben
Beide hebben een methode ShowCost
die een boodschap op het scherm print die zegt hoe veel die patiënt moet betalen
Omdat de kost anders bepaald wordt voor een gewone patiënt dan voor een verzekerde patiënt, moet je deze methode overschrijfbaar maken in Patient
en moet je ze overschrijven in InsuredPatient
. De kost wordt getoond met twee cijfers na de komma.
Voeg een statische methode DemonstratePatients()
toe aan je klasse voor deze les. Deze methode maakt patiënten aan en roept hun methode ShowCost
op, zodat onderstaande voorbeeldinteractie te zien is
Zie je geen €-symbool in je output? In het eerste semester hebben we gezien hoe je het gebruik van Unicode activeert.
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.
herbruik code ouderklasse
virtual, override, base
Onze rapporten van studenten missen belangrijke informatie. We willen te zien krijgen wie het statuut van werkstudent heeft.
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.