Autore Topic: Costruttore di una classe  (Letto 1090 volte)

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Costruttore di una classe
« il: 23 Novembre 2014, 10:20:53 CET »
0
Ciao ragazzi, ho una domanda da farvi, io mi trovo nella situazione di dover istanziare un oggetto in due punti diversi dell'app, in una listView e in una activity che ne visualizza il dettaglio dopo il clink nella lista.

Mettiamo che l'oggetto ha 10 proprietà, nella listView dovrò istanzialo prendendone solo 3 o 4 mentre nella vista del dettaglio le devo prendere tutto.

Com'è corretto fare?
Nella lista devo istanziare l'oggetto sempre con tutte e 10 le sue proprietà o c'è la possibilità di avere un secondo costruttore che istanzia solo quello che mi serve? O ancora mando i paramentri vuoti?
esempio:
new MyClass(x,y,z,"","","","".....);

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Costruttore di una classe
« Risposta #1 il: 23 Novembre 2014, 10:31:43 CET »
0
Va bene qualsiasi cosa tu faccia. Attento a usare i get se ritornano valori nulli.

L'ideale sarebbe:
Ho la mia classe  A che ha 4 proprietà.
Ho la mia classe B che estende la A. Qui aggiungo solamente 6 proprietà.


Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Costruttore di una classe
« Risposta #2 il: 23 Novembre 2014, 12:58:18 CET »
0
Quando dichiari la classe crei 2 costruttori, il primo con tutti i parametri, il secondo con meno parametri il quale richiama il primo costruttore mettendo delle sentinelle (di solito null, zero, stringa vuota o altro) nei parametri mancanti.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Costruttore di una classe
« Risposta #3 il: 23 Novembre 2014, 14:31:49 CET »
0
Allora scusa per la mia di risposta. Devo avere interpretato male la domanda

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Costruttore di una classe
« Risposta #4 il: 24 Novembre 2014, 10:37:43 CET »
0
Quando dichiari la classe crei 2 costruttori, il primo con tutti i parametri, il secondo con meno parametri il quale richiama il primo costruttore mettendo delle sentinelle (di solito null, zero, stringa vuota o altro) nei parametri mancanti.

Inviato dal mio Nexus 5 utilizzando Tapatalk

Visto che il costruttore è un metodo che ha il nome della classe l'altro come lo dichiaro come secondo costruttore, oppure è un semplice metodo?
Mi faresti un semplice esempio di codice di come avere i due costruttori?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Costruttore di una classe
« Risposta #5 il: 24 Novembre 2014, 10:43:57 CET »
0
si parla di java. SIcuro vuoi fare android sapendo male il java?

es:

Codice (Java): [Seleziona]
class Palla {
    String marca;
    boolean isForFootBal;

    public Palla(String marca){
        this.marca = marca;
        this.isForFootBal = false;
    }

    public Palla(String marca, boolean isForFootBall){
         Palla(marca);
         this.isForFootBall = isForFootBall
    }
}

se vedi ho scritto un costruttore doppio. puoi farne quanti ne vuoi. La cosa che li differenzia sono i parametri del metodo.
Ti ho fatto un piccolo esempio

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Costruttore di una classe
« Risposta #6 il: 24 Novembre 2014, 10:51:23 CET »
0
Ok grazie 1000, senlicemente non sapevo che una classe potesse avere più costruttori, non mi era mai capitata questa evenienza, però quando istanzio la classe devo sempre chiamare il costruttore con tutti i parametri che a sua volta chiama quello con un solo parametro?
« Ultima modifica: 24 Novembre 2014, 10:53:08 CET da Dav_android »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Costruttore di una classe
« Risposta #7 il: 24 Novembre 2014, 10:54:35 CET »
0
No. Puoi fare quello che vuoi. Puoi anche non mettere il costrittore.

Inoltre nel costruttore non devi chiamare l'altro costruttore. Pero risparmi righe facendolo

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Costruttore di una classe
« Risposta #8 il: 24 Novembre 2014, 10:57:48 CET »
0
Ho fatto una veloce ricerca e ho letto che come dicevi tu posso fare quanti costruttori voglio e quando istanzio la classe in base al numero di parametri che passo viene chiamato il costruttore adeguato è corretto? Giustamente chiamando l'altro costruttore come mi hai detto tu si evita di ripetere la lista dei parametri.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Costruttore di una classe
« Risposta #9 il: 24 Novembre 2014, 11:11:25 CET »
0
Giusto

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Costruttore di una classe
« Risposta #10 il: 24 Novembre 2014, 11:45:56 CET »
0
Ok perfetto grazie!