Weergegeven resultaten: 1 t/m 10 van 10
  1. #1
    Approved 9-lifer deathsythe's schermafbeelding
    Lid sinds
    26/11/03
    Locatie
    Rstad
    Berichten
    8.714
    iTrader
    14 (100%)

    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

  2. #2
    Approved 9-lifer Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    9.042
    iTrader
    47 (100%)
    Je zou beter met objecten werken

  3. #3
    Approved 9-lifer deathsythe's schermafbeelding
    Lid sinds
    26/11/03
    Locatie
    Rstad
    Berichten
    8.714
    iTrader
    14 (100%)
    hoe bedoel je precies?

  4. #4
    Approved 9-lifer Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    9.042
    iTrader
    47 (100%)
    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.

  5. #5
    Approved 9-lifer deathsythe's schermafbeelding
    Lid sinds
    26/11/03
    Locatie
    Rstad
    Berichten
    8.714
    iTrader
    14 (100%)
    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)

  6. #6
    Approved 9-lifer Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    9.042
    iTrader
    47 (100%)
    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.

  7. #7
    Approved 9-lifer deathsythe's schermafbeelding
    Lid sinds
    26/11/03
    Locatie
    Rstad
    Berichten
    8.714
    iTrader
    14 (100%)
    ok, ik sleutel nog wat verder thanks voor de moeite

  8. #8
    Member YaMo's schermafbeelding
    Lid sinds
    19/02/06
    Locatie
    -
    Berichten
    2.940
    iTrader
    1 (100%)
    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.

  9. #9
    Member
    Lid sinds
    20/09/04
    Locatie
    Kortrijk / Gent
    Berichten
    6.956
    iTrader
    1 (100%)
    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.

  10. #10
    Approved 9-lifer deathsythe's schermafbeelding
    Lid sinds
    26/11/03
    Locatie
    Rstad
    Berichten
    8.714
    iTrader
    14 (100%)
    ok, dat heeft veel verduidelijkt, was wat in de war

Discussie informatie

Users Browsing this Thread

Op dit moment bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •