Beschrijving
Vervolg op Movie_Deel1 en Movie_Deel2. Pas je klasse Movie aan door gebruik te maken van een Array voor het opslaan van de movie ratings. Definieer ook een aangepaste constructor.
Opgave
Download de Enum Label
. Voeg deze file toe aan de src map van je project in de juiste package.
Maak een klasse Movie2 die ratings van een film bevat.
De klasse bevat de volgende instantievariabelen:
- De naam van de film wordt opgeslagen in de String instantievariabele naamFilm
- Het MPAA label van de film wordt opgeslagen als waarde van de Enum Label. Deze instantievariabele heeft als naam MPAA.
- Het aantal verschrikkelijke ratings, aantal slechte ratings, aantal redelijke ratings, het aantal goede ratings en het aantal geweldige ratings worden opgeslagen in een Array van integers met naam ratings.
De klasse bevat de volgende methodes:
- Definieer een constructor met als argumenten twee Strings: 1) de naam van de film en 2) het MPAA label. Het aantal ratings van elke soort wordt op 0 gezet.
- Definieer een tweede constructor met als argumenten twee strings en array van integers: 1) de naam van de film 2) het MPAA label en 3) een array met de ratings voor de film.
- Definieer accessor methodes voor de naam en het MPAA label van de film.
- De methode voegRatingToe heeft een int als argument dat aangeeft welke rating de film krijgt waarbij rekening gehouden wordt met de volgende conversietabel:
1 | verschrikkelijk |
2 |
slecht |
3 |
redelijk |
4 |
goed |
5 |
geweldig |
- De methode getAantalRatings zonder argumenten geeft terug hoeveel geldige ratings er zijn toegevoegd (int).
- De methode getGemiddeldeRating zonder argumenten geeft terug wat de gemiddelde rating is van de film (double). Let op voor deling door 0.
Bijkomende info
- De enum Label wordt in deze opgave niet binnen een klasse gedefinieerd maar extern als klasse (zie 6.6, pagina 483 -Savitch en Mock). Bekijk de valueOf methode van een enum voor het omzetten van een String naar een enum.
- gebaseerd op oef 7, pagina 613 - 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).
- test04constructorsPresence: test of de ingediende klasse de verwachte constructor(en) definieert (= test geen effect!) (indien van toepassing).
- test05constructor_StringString: test de constructor met twee Strings als parameters.
- test06constructor_StringStringintArray: test de constructor met twee Strings en een int[] als parameters.
- test07methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test08accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test09voegRatingToe: test de voegRatingToe-methode.
- test10getAantalRatings: test de getAantalRatings-methode.
- test11getGemiddeldeRating: test de getGemiddeldeRating-methode.