-
02-01-2012, 17:17 #1Approved 9liver
- Registered
- 26/11/03
- Location
- Rstad
- Posts
- 9,839
- iTrader
- 16 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/80
Java - Meerdimensionale array vraag
Hallo,
is het mogelijk om in een meerdimensionale array verschillende objecten te steken?
if so, hoe doe je dat dan?
Kan dit dus maw?Code:gegeven classes; lid, leden, boek, boeken, lening, uitleningen
of ben ik beter door 3 aparte arrays te maken (1D) ?Code:Leden [][][] lijst = new Leden [aantalleden][aantalboeken][aantaluitleningen] for (int i =0; i < aantalleden; i++) { lijst = new Lid() for (int j =0;j < aantalboeken; j++) { lijst[i] = new Boeken(); for (int k=0; k<aantalleningen;k++) { lijst[i][j]= new Leningen(); } } }
dus zo iets
thanks in advanceCode:class Leden { private Lid [] naam { public Leden() { naam = new Lid[10]; } } }Gear: Denon X1100 | 2 x Sync Xtrm 1 | 2 x Reloop RMP1 | NI F1 | NI X1 | NI S2 |NI Maschine MKII | NI Audio 8 DJ | Sennheiser HD25no votes
-
-
02-01-2012, 17:35 #2Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Je zou beter met objecten werken
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
02-01-2012, 17:53 #3Approved 9liver
- Registered
- 26/11/03
- Location
- Rstad
- Posts
- 9,839
- iTrader
- 16 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/80
hoe bedoel je precies?
Gear: Denon X1100 | 2 x Sync Xtrm 1 | 2 x Reloop RMP1 | NI F1 | NI X1 | NI S2 |NI Maschine MKII | NI Audio 8 DJ | Sennheiser HD25no votes
-
02-01-2012, 17:55 #4Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Zorg dat een lid uitleningen kan hebben van boeken ipv alles in 1 grote array te proppen. De arrays zullen er nog steeds zijn, maar op een meer logische plaats.
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
02-01-2012, 17:58 #5Approved 9liver
- Registered
- 26/11/03
- Location
- Rstad
- Posts
- 9,839
- iTrader
- 16 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/80
dus zoals de 2de uitwerking ongeveer, ok
nuja vraag blijft, puur uit interesse, kan de bovenstaande voorstelling van een 3D array? (gewoon omdat het niet in mijn cursus staat)Gear: Denon X1100 | 2 x Sync Xtrm 1 | 2 x Reloop RMP1 | NI F1 | NI X1 | NI S2 |NI Maschine MKII | NI Audio 8 DJ | Sennheiser HD25no votes
-
02-01-2012, 18:24 #6Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Leden zou geen object mogen zijn.
Je zou eerder zoiets moeten hebben:
Lid (Naam)
Boek (Titel,Auteur)
Uitlening (Lid, Boek[])
Leden is dan gewoon Lid[] (net zoals Boek[] en Uitlening[]) ergens in een main class, of ergens anders in het model.“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
02-01-2012, 18:29 #7Approved 9liver
- Registered
- 26/11/03
- Location
- Rstad
- Posts
- 9,839
- iTrader
- 16 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/80
ok, ik sleutel nog wat verder
thanks voor de moeite
Gear: Denon X1100 | 2 x Sync Xtrm 1 | 2 x Reloop RMP1 | NI F1 | NI X1 | NI S2 |NI Maschine MKII | NI Audio 8 DJ | Sennheiser HD25no votes
-
02-01-2012, 20:17 #8Member
- Registered
- 19/02/06
- Location
- -
- Posts
- 4,048
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/73
En zoals het in het voorbeeld staat kan het volgens mij sowieso niet, want
"Leden[][][] lijst" is een 3-dimensionale array van objecten van de "Leden" klasse (wat die klasse ook mag inhouden...). Daar kunnen dus alleen Leden-objecten in of objecten van een klasse die overerft van Leden.
Voor wat jij zou willen doen (wat je beter doet zoals Cycloon zegt), heb je een array van het type "Object[][][]" nodig, aangezien alle klassen overerven van Object.no votes
-
02-01-2012, 23:03 #9Member
- Registered
- 20/09/04
- Location
- Kortrijk / Gent
- Posts
- 7,177
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/43
Ja, dat kan en wordt zelfs vaak gedaan.
Het type van de array is dan van een parent class.
In dit geval is de enigste mogelijkheid om dus inderdaad een array te definiëren van het type "Object". Let wel, als je daarna iets uit die array haalt en velden of functies wil gebruiken van een specifieke klasse (bijvoorbeeld "Leden") moet je dit object wel terug omzetten naar Leden (en daarvoor moet je dus weten welk type erin zit).
Ondanks dat het mogelijk is, is het hier wel een slechte oplossing.
Zoals Cycloon aanhaalde, er zit geen logica in uw oplossing.
Het is niet de bedoeling om één mega array aan te maken waar alle mogelijke data kan inzitten. Waarom zou je anders een OO taal gebruiken?
Eerst definieer je welke "objecten" je hier hebt.
Twee objecten zijn redelijk duidelijk:
- Boek
- Lid
Dit zijn zaken die ge kunt vastpakken, die elk bepaalde attributen hebben (een lid heeft bijvoorbeeld een naam, voornaam, adres ...; een boek heeft bijvoorbeeld een titel, aantal bladzijden ...) etc
Boeken en leden zijn geen objecten. Boeken is een verzameling van "boek objecten" en leden van "lid objecten". (alhoewel verzamelingen en collecties technisch gezien ook wel een object zijn)
Een array is een voorbeeld van hoe je zo'n verzameling kunt opslaan (net als niet primitieve collecties zoals ArrayList).
Uitlening zou je eerder kunnen omschrijven als een "relatie" dan een object.
Je zou dit op verschillende manieren kunnen bijhouden.
Een mogelijkheid is om een object "Uitlening" te definiëren zoals Cycloon gedaan heeft:
Uitlening (Lid, Boek[])
Een andere mogelijkheid is om deze array bij te houden bij bijvoorbeeld het "Lid" object. Je kan daar een ArrayList definiëren (of een gewone array) en elke keer een lid een bepaald boek leent toevoegen aan deze lijst.
Als hij ze terugbrengt, kun je deze ofwel uit de lijst verwijderen (als er geen history moet bijgehouden worden) of verplaatsen naar een andere lijst die de history van uitlening bijhoudt.no votes
-
03-01-2012, 11:22 #10Approved 9liver
- Registered
- 26/11/03
- Location
- Rstad
- Posts
- 9,839
- iTrader
- 16 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/80
ok, dat heeft veel verduidelijkt, was wat in de war
Gear: Denon X1100 | 2 x Sync Xtrm 1 | 2 x Reloop RMP1 | NI F1 | NI X1 | NI S2 |NI Maschine MKII | NI Audio 8 DJ | Sennheiser HD25no votes
