E-Visits
Een correcte implemenatie van de Klasse EVisit, zoals beschreven in Deel 1 van de opgave, wordt automatisch toegevoegd en kan gebruikt worden tijdens het oplossen van Deel 2.
Let wel op, als je zelf nog niet-gevraagde velden, constructors en/of methoden gedefinieerd had in je oplossing van Deel 1, zullen deze niet beschikbaar zijn voor dit deel.
Deel 2: Klasse Patient
- Voeg aan je project een klasse Patient toe. Elk Patient object heeft als instantievariabelen
- een String met als naam voornaam voor het bijhouden van de voornaam van de patiënt.
- een String met als naam achternaam voor het bijhouden van de naam van de patiënt.
- een array van de EVisit objecten met als naam eVisits voor het bijhouden de e-visits van de patiënt.
Max 1 bijkomende instantievariabelen mag worden toegevoegd. Dit is echter niet verplicht voor een correcte implementatie.
- Voeg een constructor toe. De constructor heeft drie argumenten (in deze volgorde):
- de voornaam van de patiënt
- de naam van de patiënt
- een array van EVisit objecten
De constructor zal eerst controleren of de array niet meer dan 50 EVisit objecten bevat. Indien dit wel het geval is, wordt het programma afgesloten. Indien dit niet zo is, zal de constructor de array gebruiken tijdens het instantiëren van de array instantievariabele met EVisit objecten. Deze instantievariabele heeft 50 plaatsen en de EVisit objecten die worden meegegeven met het array argument worden hieraan toegevoegd. De voor- en achternaam worden van de patient worden geïnitialiseerd met de meegegeven waarden.
- Voeg de methode toevoegenEVisit toe. Deze methode heeft als argument een vraag en voegt een nieuwe EVisit met de gegeven vraag toe aan de array op de eerste vrije plaats. Als er geen vrije plaats is in de array, sluit je het programma af.
- Voeg de methode antwoordenEVisits toe. Deze methode heeft geen argumenten en voert een aantal stappen uit:
- De naam van de dokter die zal antwoorden wordt gevraagd via de console.
- Voor elke EVisit die nog geen antwoord heeft, wordt er gevraagd aan de dokter om een antwoord te formuleren. De dokter kan wel aangeven dat hij op een bepaalde vraag geen antwoord wenst te geven, door een lege String in te geven, en dan wordt deze EVisit overgeslagen. Indien de dokter wel wenst te antwoorden wordt dit antwoord geregistreerd.
- Voeg een main-methode toe aan je klasse die gebruikt zal worden voor het testen van de verschillende methodes van de klasse. De main-methode moet het volgende scenario implementeren:
- Maak een array aan met lengte 10 met al twee EVisit objecten er in, met telkens een zelf uitgevonden vraag.
- Creëer een Patient object met naam “Merchiers”, voornaam “Tom”. Gebruik hiervoor de in vorige stap aangemaakte array.
- Voeg twee nieuwe EVisit objecten toe aan de patiënt Tom Merchiers, opnieuw met zelf uitgevonden vragen.
- Test de methode antwoordenEVisits. Gebruik als naam van de dokter “Jef Willems” en geef slechts een antwoord op 2 van de 4 EVisits van patiënt Tom Merchiers.
Hierbij nog wat uitleg over de Dodona-testen voor deze oefening:
- test00objectConcept: test of de ingediende klasse de verwachte de klasse definitie heeft (interface/abstracte klasse/klasse/enum/…).
- test01inheritance: test of de ingediende klasse de verwachte superklasse heeft en de verwachte interfaces implementeert.
- test02variables_presence: test of de ingediende klasse de verwachte instantievariabelen en statische variabelen definieert.
- test03variables_staticInitialValue: test of de statische variabelen van de klasse geinitialiseerd worden met de verwachte waarde (indien van toepassing).
- test04constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test05constructor_effect_exit: test de constructor met in scenario’s waarin het programma soms afgesloten moet worden soms niet.
- test06methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test07accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test08toevoegenEVisit: test de toevoegenEVisit-methode.
- test09antwoordenEVisits_happyPath: test de antwoordenEVisits-methode met een scenario waarin er nog geen vragen beantwoord waren en ze nu allemaal beantwoord worden.
- test10antwoordenEVisits_happyPath_partialAnswered: test de antwoordenEVisits-methode met een scenario waarin er al enkele vragen beantwoord waren en nu de overige vragen beantwoord worden.
- test11antwoordenEVisits_legeAntw: test de antwoordenEVisits-methode met een scenario waarin er bij het beantwoorden bepaalde vragen overgeslagen worden.