1.3-Object-Georienteerd-Programmeren

CD collectie

Bij deze opdracht ga je een CD-verzameling modelleren. De bedoeling is dat je aan deze collectie CD’s kan toevoegen, verwijderen en enkele statistieken kan bepalen. Hierbij kunnen verschillende dingen fout gaan en daarvoor gaan we onze eigen Exception gebruiken.

Een CD-verzameling bestaat uit CD’s. Iedere CD heeft een artiest en een titel. Op elke CD staan tracks. Iedere track heeft een titel en een lengte (tijd). Van iedere CD moet de totale lengte op te vragen zijn en alle attributen die opgeslagen zijn van de CD. Daarnaast moet de toString() een nette genummerde tracklisting opleveren.

Om eenvoudig te kunnen werken met al die verschillende CD’s dien je een CDCollectie-klasse te schrijven die bijhoudt welke CD’s we in ons bezit hebben. De volgende methodes moeten aanwezig zijn in deze collectie klasse:

Uitdaging: De Duration klasse

Zoals boven beschreven heeft elke track een lengte. En alhoewel je geneigd kan zijn om hier een integer voor te gebruiken, is een instantie van de klasse Duration veel gepaster.

Wij dagen je, zonder uit te leggen wat deze klasse precies doet, uit om deze klasse te gebruiken. Uiteraard zal je hiervoor de documentatie moeten lezen!

Voorbeeld

Je bent uiteraard compleet vrij om je data toe te voegen, maar om je op weg te helpen: De volgende data …

CD rushOfBlood = new CD("Coldplay", "A rush of blood to the head");
rushOfBlood.addTrack(new Track("Politik", Duration.ofSeconds(318)));
rushOfBlood.addTrack(new Track("In my place", Duration.ofSeconds(228)));
rushOfBlood.addTrack(new Track("God put a smile upon my face", Duration.ofSeconds(297)));
rushOfBlood.addTrack(new Track("The scientist", Duration.ofSeconds(309)));
rushOfBlood.addTrack(new Track("Clocks", Duration.ofSeconds(307)));
rushOfBlood.addTrack(new Track("Daylight", Duration.ofSeconds(327)));
rushOfBlood.addTrack(new Track("Green eyes", Duration.ofSeconds(223)));
rushOfBlood.addTrack(new Track("Warning sign", Duration.ofSeconds(331)));
rushOfBlood.addTrack(new Track("A whisper", Duration.ofSeconds(238)));
rushOfBlood.addTrack(new Track("A rush of blood to the head", Duration.ofSeconds(351)));
rushOfBlood.addTrack(new Track("Amsterdam", Duration.ofSeconds(319)));

… levert de volgende output (toString) op:

Album: Coldplay - A rush of blood to the head
Total time: 0:54:08
Tracks:
1. Politik (05:18)
2. In my place (03:48)
3. God put a smile upon my face (04:57)
4. The scientist (05:09)
5. Clocks (05:07)
6. Daylight (05:27)
7. Green eyes (03:43)
8. Warning sign (05:31)
9. A whisper (03:58)
10. A rush of blood to the head (05:51)
11. Amsterdam (05:19)