Toon posts:

[java] Eén class maken met verschillende parametersets

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een programmatje te schrijven om een sleepboot te simuleren die een sleep bootjes sleept. Nu heb ik twee classen gemaakt, de een is tugBoat() en de andere is towedBoat(tugBoat parent). Door als parameter tugBoat parent mee te geven kan het gesleepte bootje de sleepboot volgen.

Nu zou ik graag meerdere boten in de sleep kunnen leggen, maar het probleem is dan dat ik geen tugBoat als parameter kan geven.

Ik heb geprobeerd om zowel towedBoat(tugBoat parent) als towedBoat(towedBoat parent) te maken, maar lukte niet, omdat je parent moet declareren als tugBoat of als towedBoat.

Ik hoop dat er iemand is die mij hier verder mee kan helpen.

Hieronder is de volledige broncode

beperk je enkel tot de relevante code

[ Voor 94% gewijzigd door whoami op 09-06-2005 21:35 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Je hebt teveel code om het goed overzichtelijk te maken, dus ik ga af op je beschrijving.
Je moet beter aan je classes denken. Klassenamen beginnen altijd met een hoofdletter. Dus je hebt een TugBoat en een TowedBoat. Beide zijn boten. Als een TowedBoat ook door een TowedBoat getrokken kan worden, dan is eenTowedBoat ook een TugBoat.
Dus een TowedBoat extends TugBoat
De contructor van een TowedBoat is dan TowedBoat(TugBoat parent), maar omdat een TowedBoat ook een TugBoat is, werkt dat gewoon.

"Beauty is the ultimate defence against complexity." David Gelernter


  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Beide classes laten afleiden van een parent 'Boat' class, of een interface 'IBoat', en dan kan je een Boat of een IBoat als parameter meegeven.

Daarbij is het nu ook niet nodig om 500 regels code te gaan neerplempen, aangezien die code toch irrelevant is, en lezers alleen maar afschrikt.
Vandaar dat ik je code ff heb weggeëdit.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt voor de tips, ik ga ermee aan de slag!

  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Macros schreef op donderdag 09 juni 2005 @ 21:28:
Je hebt teveel code om het goed overzichtelijk te maken, dus ik ga af op je beschrijving.
Je moet beter aan je classes denken. Klassenamen beginnen altijd met een hoofdletter. Dus je hebt een TugBoat en een TowedBoat. Beide zijn boten. Als een TowedBoat ook door een TowedBoat getrokken kan worden, dan is eenTowedBoat ook een TugBoat.
Dus een TowedBoat extends TugBoat
De contructor van een TowedBoat is dan TowedBoat(TugBoat parent), maar omdat een TowedBoat ook een TugBoat is, werkt dat gewoon.
Hmm, dat kan je ook doen ja.... da's misschien iets beter.
Echter, ik zou dan wel een interface ITugBoat maken ofzo, en geen base-class.

https://fgheysels.github.io/


Verwijderd

whoami schreef op donderdag 09 juni 2005 @ 21:40:
Hmm, dat kan je ook doen ja.... da's misschien iets beter.
Echter, ik zou dan wel een interface ITugBoat maken ofzo, en geen base-class.
Vanwaar eigelijk die prefix voor een interface?
-----------------------------------------------------------------------------------
Je kunt het probleem overigens ook nog anders bekijken. Een 'Boat' is en blijft een boot. Sommige zijn 'Towable' andere zijn 'Tuggable' en sommige beide. Ja alleen naamgeving wordt dan wat apparter:

'public class ChainableBoat implements Towable, Tuggable' ?

[ Voor 6% gewijzigd door Verwijderd op 09-06-2005 22:55 ]


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 05-05 19:18
Verwijderd schreef op donderdag 09 juni 2005 @ 22:54:
[...]

Vanwaar eigelijk die prefix voor een interface?
-----------------------------------------------------------------------------------
Je kunt het probleem overigens ook nog anders bekijken. Een 'Boat' is en blijft een boot. Sommige zijn 'Towable' andere zijn 'Tuggable' en sommige beide. Ja alleen naamgeving wordt dan wat apparter:

'public class ChainableBoat implements Towable, Tuggable' ?
Of misschien een Linked List implementatie specifiek voor boten :)
Alleen kan je dan niet een boot direct een andere boot koppelen, maar het zou een optie kunnen zijn.
Niet erg handig, maar toch :p

[ Voor 7% gewijzigd door Kwistnix op 10-06-2005 01:20 ]


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Je kan het ook andersom zien. Een sleepboot krijgt de opdracht om een aantal boten te gaan slepen.

code:
1
2
3
4
5
public SleepBoot(TowBoat[] towBoats) {
   voor elke boot in towBoats {
       boot.zetSleepBoot(this);
   }
}

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Verwijderd

Zoals ik het begrepen heb sleept een boot hooguit 1 andere boot. En dus niet een 'tree' van boten...

Verwijderd

Java:
1
2
3
public class towedBoat extends tugBoat{
// code
}

Of slaat dit weer helemaal nergens op?

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Als in jouw model het voldoende is, dat elke boot, die gesleept kan worden, zelf ook kan slepen, dan zou je het zo kunnen doen. Ik ken echter wel een aantal boten, die zelf niet zouden kunnen slepen, maar wel gesleept kunnen worden. Die kun je hiermee niet kwijt, dan krijg je rare situaties, als je rubberboot ineens in tweeen is. ;)

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 05-05 19:18
Nick_S schreef op vrijdag 10 juni 2005 @ 11:57:
Als in jouw model het voldoende is, dat elke boot, die gesleept kan worden, zelf ook kan slepen, dan zou je het zo kunnen doen. Ik ken echter wel een aantal boten, die zelf niet zouden kunnen slepen, maar wel gesleept kunnen worden. Die kun je hiermee niet kwijt, dan krijg je rare situaties, als je rubberboot ineens in tweeen is. ;)
Sowieso is het een model, dus een vereenvoudigde weergave van de werkelijkheid, maar ik ben het wel met je eens. Bijzonder realistisch is dat uitgangpunt niet. Ook is het vaak zo dat een boot door meerdere boten gesleept moet worden, maar dat is dan wel iets wat je buiten beschouwing zou kunnen laten.
Pagina: 1