Door
Milo S
op 17-01-2013 19:36
gewijzigd op 17-01-2013 19:37
4.888 views
Goede avond allemaal,
Ik ben al enige tijd bezig met het uitdenken van een CMS. Ik probeer zoveel mogelijk functionaliteiten in te voegen zodat ik gelijk op veel punten terecht kom en zoveel mogelijk leer. Dat is immers het voornaamste doel van dit project.
Nu heeft Wouter J mij in een vorig topic behoorlijk geholpen. Aan de hand hiervan ben ik toch nog verder gaan zoeken naar uitleg over interfaces en abstract classes. Ik vroeg mij nu af gebruik ik het nu niet overkill? Is mijn huidige opzet wel OOP? Zou ik hiermee verder kunnen als ik een simpele cms wil bouwen? Mis ik dingen?
Joren heeft het volgens mij ook goed uitgelegd op zijn site.
Een interface stelt je in staat om aan te geven dat een object een bepaalde functionaliteit moet bezitten, maar het bepaalt niet hoe het object dat moet doen. De child class is dus vrij om de hele implementatie te doen, zolang hij maar voldoet aan de functionaliteit die de interface afdwingt.
en hij somt ook de belangrijkste verschillen
Abstract classes
Een abstract class kan bepaalde functionaliteit definiƫren en de rest overlaten aan de child.
Een child kan de reeds gedefinieerde methods overschrijven, maar hoeft dat niet.
De child class moet een logische relatie hebben met de parent.
Een child kan maximaal een abstract class extenden.
Interfaces
Een interface kan geen functionalteit bevatten. Het is enkel een definitie van de methods die gebruikt moeten worden.
De child class moet alle methods uit de interface van functionaliteit voorzien.
Verschillende niet gerelateerde classes kunnen op een logische manier gegroepeerd worden door een interface.
Een child kan meerdere interfaces tegelijkertijd implementeren.
Ik heb dat anders begrepen.. Nu met jou voorbeeld ben ik daar uit. Ik zal het vanavond toepassen op het model om te kijken of ik het daadwerkelijk goed doe.
Maar we hebben het nu constant over de interfaces, maar ik vraag me ook af of iemand zou kunnen bevestigen dat derest van de logica goed zit?
Ik ben nu thuis en ga aan de slag met het maken van de UML. Hiervoor gebruik ik ArgoUML. Iemand andere programma's die wellicht beter / gemakkelijker zijn hiervoor?
- role interface
Volgens mij hoef je hier een constructor alleen niet in een interface te zetten. dat is weer een voorbeeldje waarbij je een abstracte klasse kan maken. ( als je alleen de constructor mee geeft om iets te doen ) en deze extenden met zijn eigen methods.
idem dito voor de Customer.
Voor de UserMapper zou ik juist een interface gebruiken om de CRUD methods vast te leggen. ( Create, Read, Update en Delete )