Voor school zijn we weeral een oefeing aan het maken in java. Nu werkt ze helemaal maar ben ik er zelf niet uit of het design wel helemaal correct is. Misschien kunnen jullie mij wat tips geven!
geg:
volgende uml

-abstracte klasse BewegendVoorwerp (methodes: isInHitzone(x,y):boolean >> deze methode geeft true terug als de muisaanwijzer in het object staat)
-klasse Kanon erft over van BewegendVoorwerp (mijn kanon moet je kunnen verplaatsen)
-wapenIF: interface met volgende methodes: mik(),schiet():,herlaad().
-Kanon implementeert de interface wapenIF
Nu heb ik een composition klasse gemaakt bestaande uit een kanon (en doelwitten, maar dit is nu niet ter zake). Aangezien ik de applicatie uitbreidbaar wil maken heb ik in plaats van instantie mijnWapen van het type kanon, het type WapenIF gebruikt.
probleem:
deze code werkt uiteraard niet, want in de interface is niet voorzien dat hij moet kunnen worden versleept.
Wat zijn de mogelijk oplossing hiervoor?
1)Interface VersleepbaarVoorwerp bijmaken, WapenIF laten overerven van deze interface.
Vraag is natuurlijk: is een wapen per definitie versleepbaar? mja in mijn toepassing nu wel, dus zou de interface wapen toch moeten kunnen worden versleept niet!?
2)Een andere mogelijkheid is de volgende:
principe: functionaliteit heb je alleen maar volledig als je met MIJN wapen werkt
geg:
volgende uml

-abstracte klasse BewegendVoorwerp (methodes: isInHitzone(x,y):boolean >> deze methode geeft true terug als de muisaanwijzer in het object staat)
-klasse Kanon erft over van BewegendVoorwerp (mijn kanon moet je kunnen verplaatsen)
-wapenIF: interface met volgende methodes: mik(),schiet():,herlaad().
-Kanon implementeert de interface wapenIF
Nu heb ik een composition klasse gemaakt bestaande uit een kanon (en doelwitten, maar dit is nu niet ter zake). Aangezien ik de applicatie uitbreidbaar wil maken heb ik in plaats van instantie mijnWapen van het type kanon, het type WapenIF gebruikt.
probleem:
Java:
1
| mijnWapen.isInHitzone() |
deze code werkt uiteraard niet, want in de interface is niet voorzien dat hij moet kunnen worden versleept.
Wat zijn de mogelijk oplossing hiervoor?
1)Interface VersleepbaarVoorwerp bijmaken, WapenIF laten overerven van deze interface.
Vraag is natuurlijk: is een wapen per definitie versleepbaar? mja in mijn toepassing nu wel, dus zou de interface wapen toch moeten kunnen worden versleept niet!?
2)Een andere mogelijkheid is de volgende:
Java:
1
2
3
4
5
6
7
8
| if (instanceOf mijnWapen is Kanon){ Kanon kanon = (Kanon) mijnWapen; if (kanon.isInHitzone(x,y)){ //het punt van het kanon aanpassen aan nieuwe locatie //zoals je kan zien: setPunt is overgerft van VersleepbaarVoorwerp kanon.setPunt(kanon.getPunt().moveBy(x,y)); } } |
principe: functionaliteit heb je alleen maar volledig als je met MIJN wapen werkt
[ Voor 3% gewijzigd door Verwijderd op 06-12-2003 12:20 ]
