Opgave
Maak een klasse ConcertPromoter die dient om de verkoop van tickets voor een concert op te volgen.
Tot en met de dag voor het concert worden er enkel tickets via de telefoon verkocht. Op de dag van het concert worden er enkel nog tickets aan de kassa verkocht.
De klasse bevat de volgende instantievariabelen:
- De naam van de band wordt opgeslagen in de String instantievariabele naamBand
- De capaciteit van het concert wordt opgeslagen in de int instantievariabele capaciteit
- Het aantal verkochte tickets wordt opgeslagen in de int instantievariabele verkocht
- De prijs van een ticket verkocht over de telefoon wordt opgeslagen in de int instantievariabele prijsTelefoon
- De prijs van een ticket verkocht aan de kassa wordt opgeslagen in de int instantievariabele prijsKassa
- De totale omzet wordt opgeslagen in de int instantievariabele omzet
- Of de voorverkoop van tickets nog bezig is wordt opgeslagen in de boolean instantievariabele voorverkoop
De klasse bevat de volgende methodes:
- Defineer een constructor met als argumenten de naam van de band, de capaciteit van het concert, de prijs van een ticket over de telefoon en de prijs aan de kassa. Het aantal verkochte tickets en de omzet worden op 0 gezet. Voorverkoop wordt op true gezet.
- Definieer accessor methode voor alle instantievariabelen. Let op, bij een boolean instantievariabele wordt er "is" in de naam gebruikt in plaats van "get"!
- De methode verkoopTicket heeft een int als argument dat aangeeft hoeveel tickets men wenst aan te kopen. Indien er nog genoeg tickets beschikbaar zijn, zullen de instantievariabelen verkocht en omzet aangepast worden op basis van het aantal gewenste tickets. Indien er niet genoeg tickets beschikbaar zijn, zullen de instantievariabelen verkocht en omzet aangepast worden op basis van het aantal tickets dat nog beschikbaar is. Bij het aanpassen van de omzet moet de juiste prijs gebruikt worden. Deze prijs is afhankelijk is van de de instantievariabele voorverkoop.
- De methode eindeVoorverkoop zonder argumenten geeft aan dat alle tickets die vanaf nu verkocht worden, aan de kassa verkocht worden. Deze methode past de voorverkoop instantievariabele aan. Deze methode een tweede keer heeft geen effect.
Bijkomende info
- gebaseerd op oef 8, pagine 409 - Savitch en Mock
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).
- test05methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test06accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test07eindeVoorverkoop: test de eindeVoorverkoop-methode.
- test08verkoopTicket: test de verkoopTicket-methode.
- test09verkoopTicket_enkelVoorverkoop: test de verkoopTicket-methode. Er worden geen scenario’s getest waarin er geen voorverkoop is.
- test10verkoopTicket_enkelNietVoorverkoop: test de verkoopTicket-methode. Er worden geen scenario’s getest waarin er een voorverkoop is.
- test11verkoopTicket_enkelVoldoendeCapaciteit: test de verkoopTicket-methode. Er worden geen scenario’s getest waarin er niet voldoende capaciteit is.