Toon posts:

[java] inheritance

Pagina: 1
Acties:

Verwijderd

Topicstarter
Super class = Agent
1e Sub class = WinstMaximaliseerder
2e Sub class = Speculant

Ik heb een ArrayList met gemengde inhoud, namelijk objecten van het type WinstMaximaliseerder en Speculant.

Gedeelte van de code

code:
1
2
3
4
5
6
7
8
9
10
11
12
Object anObject = it.next();            

if (anObject instanceof WinstMaximaliseerder)
{
    WinstMaximaliseerder agent = (WinstMaximaliseerder)anObject;
}
else
{
    Speculant agent = (Speculant)anObject;
}

double Q = agent.berekenAangebodenHoeveelheid();


Ik heb dus de "agent" nodig voor verdere bewerking tijdens de iteratie.
Echter omdat de "agent", niet voor de if statement geinitialiseerd wordt, is de berekenAangebodenHoeveelheid niet uit te voeren.

Ik kan "agent" niet voor de if statement initialiseren, omdat ik op dat moment het type niet weet.

Heb geringe kennis van java, hopelijk kan iemand me vertellen hoe ik bovenstaande situatie wel goed moet aanpakken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Waarom gebruik je daar een if om te checken welk type object het nu precies is?

Het is net het voordeel van inheritance en polymorphisme dat je dat niet hoeft te doen:
Je berekenAangebodenHoeveelheid moet een virtual method zijn, die je override in je subclasses, en op die manier worddt er at runtime bepaald welke implementatie er moet uitgevoerd worden:

code:
1
2
3
4
for( int i = 0; i < 10; i ++ )
{
     myArrray[i].bereken();
}

pseudo-code

Lees dus eens eea over inheritance en polymorphisme.

[ Voor 6% gewijzigd door whoami op 05-03-2004 13:15 ]

https://fgheysels.github.io/


Verwijderd

Als de functie berekenAangebodenHoeveelheid in de klasse Agent gedefinieerd is:

code:
1
2
3
Agent agent = (Agent) it.next();

double Q = agent.berekenAangebodenHoeveelheid();

Verwijderd

Topicstarter
thanks!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Dit is idd gewoon standaard polymorfisme.

[offtopic]
Wat voor agent systeem ga je trouwens schrijven?