Opdracht OO Programming concepten
Inhoud
Opdracht OO3.6 Kassysteem
Dit is een grote opdracht! Doe deze opdracht alleen als je niet achterloopt met de andere C++ opdrachten en OO1.2 t/m OO1.6 al gemaakt hebt.
Verdiep je vooraf in overerving en virtual en abstract.
Ontwerp klassen
Begin eerst met ontwerpen (dus schrijf nog geen code).
- Ontwerp een klasse
Plant
.
- Zorg dat de klasse
Plant
meerdere attributen heeft. Bedenk zelf welke.
-
Zorg dat de klasse Plant
meerdere methoden heeft. Bedenk zelf welke.
- Ontwerp een klasse
Kas
.
- De
Kas
heeft bepaalde eigenschappen zoals temperatuur, luchtvochtigheid, etc..
- Denk na over welke functies je wilt aanbieden in jouw systeem en hoe. Bepaal de interface.
Lees meer over interfaces in header-sourcefiles.
Ontwerp relaties
- Bepaal de relaties tussen
Plant
en Kas
. Mogelijk heb je extra klassen nodig; bijvoorbeeld voor sensoren.
Maak een klassediagram
- Maak een UML diagram van de klassen die je gebruikt, inclusief relaties en mogelijke aantallen.
Review
- Vraag een collegiale review aan een klasgenoot die even ver is. Het review is op basis van je ontwerp.
- Verwerk de feedback.
- Geef een collegiale review aan dezelfde klasgenoot terug: geef feedback op het ontwerp van de ander.
Let op: Het is niet de bedoeling dat je elkaars keuzes overneemt.
Het review moet helpen om je ontwerp te kunnen verbeteren en eventueel uit te breiden.
Implementatie
Pas nu ga je code schrijven.
- Implementeer de klassen
Plant
en Kas
in C++. Maak gebruik van .hpp en .cpp files.
- Implementeer de extra klassen die je nodig hebt.
Documenteer
- Documenteer je code met Doxygen.
Test
- Schrijf unit tests. Je kunt hiervoor Catch2 gebruiken, of Google Test GTest.
- Hoe kun je hardware in je Kas Systeem verwerken? Maak je hier klassen van?
Overleg dit met anderen en breid zonodig je ontwerp uit.
Werk elke keer je ontwerp bij (versiebeheer).
- Maak gebruik van abstracte klassen en interfaces.
Je kunt bijvoorbeeld een abstracte interface
IVochtSensor
maken die de basis is voor een gesimuleerde VochtSensor en voor een hardware VochtSensor.