Problema creazione oggetti con nomi diversi

di il
4 risposte

Problema creazione oggetti con nomi diversi

Salve ho cercato un po in giro ma non ho trovato nulla di specifico quindi vorrei chiedere se esiste un modo per istanziare più oggetti con una variabili riferimento diverse di volta in volta.
Per spiegami meglio voglio creare un programma rubrica che mi istanzi un oggetto per ogni persona nella rubrica, ho gia creato la classe con metodi e costruttore dedicato ma mi sono bloccato perche non so come fare(ho risolto in parte generando un ciclo if che controlla un indice e a seconda dell'indice mi istanzia oggetti differenti con riferimenti differenti ma cosi resto bloccato al numero di cicli if che scrivo nel codice al momento della programmazione).
classe metodi:
public class Contatto {

private String nome;
private String cognome;
private String numeroTelefono;
private String altro;

public Contatto(String nome,String cognome,String numeroTelefono,String altro){
if(nome.equals(""))
this.nome="nessun dato";
else
this.nome=nome;
if(cognome.equals(""))
this.cognome="nessun dato";
else
this.cognome=cognome;
if (numeroTelefono.equals(""))
this.numeroTelefono="nessun dato";
else
this.numeroTelefono=numeroTelefono;
if (altro.equals(""))
this.altro="nessun dato";
else
this.altro=altro;

}
// Metodi di modifica stato oggetto
/*public void modificaNome (String nome){

this.nome=nome;
//this.cognome="vuoto";
//this.numeroTelefono="vuoto";
//this.altro="vuoto";

}
public void modificaCognome (String cognome){

//this.nome=nome;
this.cognome=cognome;
//this.numeroTelefono="vuoto";
//this.altro="vuoto";

}
public void modificaNumeroTelefono (String numeroTelefono){

//this.nome=nome;
//this.cognome=cognome;
this.numeroTelefono=numeroTelefono;
//this.altro="vuoto";

}
public void modificaAltro (String altro){

//this.nome=nome;
//this.cognome=cognome;
//this.numeroTelefono=numeroTelefono;
this.altro=altro;
}*/
public void modificaNome (String nome){

this.nome=nome;

}
public void modificaCognome (String cognome){

this.cognome=cognome;

}
public void modificaNumeroTelefono (String numeroTelefono){

this.numeroTelefono=numeroTelefono;

}
public void modificaAlto (String altro){

this.altro=altro;

}
public String getNome (){
return nome;
}
public String getCognome(){
return cognome;
}
public String getNumeroTelefono(){
return numeroTelefono;
}
public String altro(){
return altro;
}
}


Classe Main:

public class MainRubrica{

public static void main (String args []){

Scanner in = new Scanner(System.in);
System.out.println("\n\n\n Benvenuti Nella Rubrica 1.0");

for(boolean i=true;i;){
System.out.println("\n\n\n\n\n\n\nDimmi cosa vuoi fare:\n1-per creare un nuovo contatto\n2-per modificare un contatto in memoria\n3-per cancellare un contatto\n4-per eliminare tutti i contatti\n5-per visualizzare tutti i contatti in memoria\n6-per uscire dal programma\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
int c=in.nextInt();
int numeroContatti=0;
if (c==1){
String nome;
String cognome;
String numeroTelefono;
String altro;

System.out.println("\n\n\n\n\nBene inseriamo un contatto\n\n-Inserisci il nome:");
nome=in.toString();
System.out.println("\n\n-Inserisci il cognome:");
cognome=in.toString();
System.out.println("\n\nInserisci il numero di telefono");
numeroTelefono=in.toString();
System.out.println("\n\nSe vuoi aggiungere altri dettagli scrivi sotto altrimenti premi invio");
altro=in.toString();
if (numeroContatti==0)
Contatto primoElemento = new Contatto(nome,cognome,numeroTelefono,altro);
else if (numeroContatti==1)
Contatto secondoElemento = new Contatto(nome,cognome,numeroTelefono,altro);
else if (numeroContatti==2)
Contatto terzoElemento = new Contatto(nome,cognome,numeroTelefono,altro);
else if (numeroContatti==3)
Contatto quartoElemento = new Contatto(nome,cognome,numeroTelefono,altro);
else if (numeroContatti==4)
Contatto quintoElemento = new Contatto(nome,cognome,numeroTelefono,altro);


}
else if (c==2){}
else if (c==3){}
else if (c==4){}
else if (c==5){}
else if (c==6){}
else{
System.out.println("Spiacende la scelta effettuata non ha opzioni\n\n\n");
for (double loop=0;loop<100099988;loop+=0.4){}
}

}
}

}

4 Risposte

  • Re: Problema creazione oggetti con nomi diversi

    Partiamo prima dalla classe Contatto. Non è proprio buonissima. Dovresti mettere i metodi getter/setter nella forma standard .. non cose tipo modificaNumeroTelefono. Se ci deve essere della logica di validazione/correzione di un valore, questa logica andrebbe messa nel setter (e il costruttore che riceve quel valore, lo invoca per coerenza).
    Il fatto che tu dici: se la stringa è vuota, allora metti "nessun dato" è sostanzialmente una logica applicativa (e anche di visualizzazione) ... non della classe Contatto. E tra l'altro esiste un valore assolutamente pulito e appropriato per questo: null. Ma anche se lasciassi "" andrebbe bene. Ma mettere "nessun dato" mi sembra eccessivo e può complicare qualunque eventuale test successivo.

    Pertanto nella classe Contatto:
    - campi private
    - costruttore/i
    - metodi getter/setter public e nella forma getNomeProprieta/setNomeProprieta per indicare una proprietà "nomeProprieta".
    - altro eventuale (es. toString)

    ricorico ha scritto:


    Salve ho cercato un po in giro ma non ho trovato nulla di specifico quindi vorrei chiedere se esiste un modo per istanziare più oggetti con una variabili riferimento diverse di volta in volta.
    La questione è posta male. Se vuoi tenere più oggetti Contatto, ci sono gli array o le collezioni.


    P.S. evita di mettere \n in output, non è il "newline" in generale (è Java .. non "C").
  • Re: Problema creazione oggetti con nomi diversi

    Come dice andbin per prima cosa bisogna creare la tua classe contatto con get e set senza altri fronzoli, inoltre ti consiglio un costruttore vuoto dove inizializzi tutto a vuoto (o null) e uno pieno dove inizializzi tutte le tue variabili della classe Contatto.
    A questo punto nel main puoi seguire due strade:
    a) ti crei un costruttore vuoto ed ad ogni chiamata (nome, numero,...) fai il set della voce che vuoi riempire.
    b) ti salvi tutte le chiamate in variabili temporanee e poi ti crei la classe Contatto istanziandola col costruttore "pieno" con le variabili appena salvate (quello che fai nel codice è molto disordinato senza offesa).
    Per salvare varie copie di contatto ti basta istanziare un java.util.Vector o java.util.LinkedList in cui è possibile inserire l'oggetto appena creato (tramite il metodo add delle sopracitate collection).
    al tempo stesso per estrarle ti basterà fare:
    Contatto temp=(Contatto) list.get(numero contatto che vuoi estrarre);
    fra l'altro il cast non serve più perché in generale quando la lista viene creata bisogna referenziarla e dichiarare gli oggetti che stai inserendo
    Se ti serve altro siamo qui.
    Ciao.
  • Re: Problema creazione oggetti con nomi diversi

    No che dici io master coder, sei te che nn capisci la mia arte
    quello che fai nel codice è molto disordinato
    lo so sono alle prime armi
    comunque grazie dei consigli
  • Re: Problema creazione oggetti con nomi diversi

    ricorico ha scritto:


    lo so sono alle prime armi
    infatti ti ho detto senza offesa.
Devi accedere o registrarti per scrivere nel forum
4 risposte