1. #1
    deathsythe's Avatar
    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?
    Code:
    gegeven classes;
    
    lid, leden, boek, boeken, lening, uitleningen
    Kan dit dus maw?

    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();          
    }
    }
    }
    of ben ik beter door 3 aparte arrays te maken (1D) ?
    dus zo iets
    Code:
    class Leden {
    private Lid [] naam 
               {
                    public Leden()
                         {
                          naam = new Lid[10];
                         }
               }
    }
    thanks in advance
    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 HD25
    no votes  

  2. #2
    Cycloon's Avatar
    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 character
    no votes  

  3. #3
    deathsythe's Avatar
    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 HD25
    no votes  

  4. #4
    Cycloon's Avatar
    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 character
    no votes  

  5. #5
    deathsythe's Avatar
    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 HD25
    no votes  

  6. #6
    Cycloon's Avatar
    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 character
    no votes  

  7. #7
    deathsythe's Avatar
    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 HD25
    no votes  

  8. #8
    YaMo's Avatar
    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  

  9. #9

    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:
    1. Boek
    2. 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  

  10. #10
    deathsythe's Avatar
    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 HD25
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in