Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Array di Oggetti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34

    Array di Oggetti

    Salve a tutti, come si fa a dichiarare un'array di oggetti?
    Se ho per esempio un oggetto del tipo:

    public class mioOggetto
    {
    int n;
    mioOggetto(); //costruttore
    private void AggiornaDat();
    ....
    ....
    }

    potrebbe essere del tipo:

    mioOggetto localOggetto = new mioOggetto[]();

    ????

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    68
    Leggi qui.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Array di Oggetti

    Meglio così:

    codice:
    mioOggetto[] localOggetto = new mioOggetto[10];
    Come un qualunque altro array.

    PS. Pessima sintassi: la nomenclatura Java standard prevede che i nomi delle classi abbiano l'iniziale maiuscola... è meglio che ti abitui subito a questa convenzione, per avere meno problemi in futuro.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Grazie a tutti..per LeleFT: quindi la dichiarazione e allocazione è diversa sintatticamente rispetto ad un singolo oggetto:

    mioOggetto localOggetto = new mioOggetto();

    mentre per l'array:

    mioOggetto[] arraylocalOggetto = new mioOggetto[];

    In questo caso è implicito che se il mioOggetto ha un costruttore questi venga eseguito?

    Bye

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    68
    Originariamente inviato da Vik27
    In questo caso è implicito che se il mioOggetto ha un costruttore questi venga eseguito?
    No, l'array viene riempito con il valore di default di un reference, ovvero null, infatti se provi a chiamare una funzione su qualunque oggetto dell'array ottieni un eccezione di tipo NullPointerException.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    24
    A suo tempo pure io ero confuso inizialmente.
    Eccoti un esempio pratico


    puclic class Animale
    {
    public Animale()
    {
    System.out.println("CIao");
    }
    }




    public class Esegui
    {
    public static void main(String args[])
    {
    Animale arr[] = new Animale[30]; //creazione dell'array che conterrà riferimenti ad oggetti della classe Animale, ma adesso per default contiene dei riferimenti a null(come quando crei un array di interi e per default i valori sono inizializzati a zero)
    for(int i = 0 ; i<arr.length ; i++)
    arr[i]= new Animale(); // qui crei effettivamente gli oggetti e chiami il costruttore
    }
    }

    Il programma stamperà 30 volte sul prompt CIao
    Se non hai familiarità con puntatori,riferimenti,gestione della memoria è logico che hai qualche difficoltà.

    Ricorda che in java i tipi sono tutti riferimenti(compresi gli array) tranne quelli primitivi(int ,short,float ecc.).
    Se non ti è chiaro questo non capirai mai(a pieno) il codice suddetto o se ad esempio un passaggio di argomenti ad una funzione avviene per valore o per riferimento.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Ricorda che in java i tipi sono tutti riferimenti(compresi gli array) tranne quelli primitivi(int ,short,float ecc.).
    Se non ti è chiaro questo non capirai mai(a pieno) il codice suddetto o se ad esempio un passaggio di argomenti ad una funzione avviene per valore o per riferimento.
    Grazie, normalmente sviluppo in Visual C++ e onestamente non ho mai avuto la necessità di allocare array di oggetti, in questo caso era solo a scopo didattico, cmq, in C++ il meccanismo di passaggio di argomenti a funzioni per puntatore o per valore mi è chiaro, in java che sto iniziando adesso a studiare, non tanto, o meglio con le vostre risposte comincio a capirci q.cosa!
    Quindi, giusto per verificare se ho capito, quando si parla di passaggio per riferimento si intende passare un "puntatore" alla funzione anche se in java non esiste propriamente il concetto di puntatore, è corretto?
    Bye

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    68
    Originariamente inviato da Vik27
    Quindi, giusto per verificare se ho capito, quando si parla di passaggio per riferimento si intende passare un "puntatore" alla funzione anche se in java non esiste propriamente il concetto di puntatore, è corretto?
    Sarebbe più opportuno che tu aprissi una nuova discussione se vuoi fare domande non inerenti a questo post. Tuttavia venendo al tuo dubbio sappi che in Java gli argomenti di una funzione vengono passati come copia, sia si tratti di un tipo primitivo sia si tratti di un reference. Naturalmente nel caso di un tipo primitivo l'effetto è quello di avere una nuova variabile del tutto indipendente da quella passata alla funzione, mentre per quanto riguarda il passaggio di un reference le cose cambiano, in quanto l'oggetto a cui ci si riferisce resta lo stesso e semplicemente si ha una nuova variabile con cui riferirsi a tale oggetto.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Originariamente inviato da M@P
    Sarebbe più opportuno che tu aprissi una nuova discussione se vuoi fare domande non inerenti a questo post
    Scusa, hai ragione, grazie cmq per la risposta.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    24
    Originariamente inviato da Vik27
    Grazie, normalmente sviluppo in Visual C++ e onestamente non ho mai avuto la necessità di allocare array di oggetti, in questo caso era solo a scopo didattico, cmq, in C++ il meccanismo di passaggio di argomenti a funzioni per puntatore o per valore mi è chiaro, in java che sto iniziando adesso a studiare, non tanto, o meglio con le vostre risposte comincio a capirci q.cosa!
    Quindi, giusto per verificare se ho capito, quando si parla di passaggio per riferimento si intende passare un "puntatore" alla funzione anche se in java non esiste propriamente il concetto di puntatore, è corretto?
    Bye
    Se hai fatto C++ non avrai problemi. Io ho capito a pieno java solo dopo aver studiato C++.
    Esempio pratico:

    Animale x = new Animale();
    funzione(x);

    funzione(Animale parametro)
    {
    ...
    }

    x contiene l'indirizzo di memoria dove c'è l'oggetto che hai creato. x in java prende il nome di riferimento.

    Facendo la chiamata funzione(x) il riferimento parametro avrà lo stesso indirizzo di memoria contenuto in x ,quindi x e parametro punteranno alla stessa area di memoria( e quindi manipolando parametro[facendo parametro.variabileIstanzaClasseAnimale ad esempio] modificherai l'oggetto a cui punta x.

    Tuttavia nota che il passaggio del riferimento avviene per valore ossia se in funzione scrivi parametro=new Animale() parametro punterà alla zona di memoria che contiene il nuovo oggetto creato ma x non subirà alcuna modifica.

    Se scrivi invece:
    int x=3;
    funzione(x);

    funzione(int parametro)
    {
    parametro = 2;
    }

    x rimarrà uguale a 3 perchè per i tipi primitivi(int,double ecc.) il passaggio avviene solo per valore.

    Per quanto riguarda gli array vanno trattati come gli oggetti.

    Speo di essere stato utile e di essere stato chiaro.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.