PROBLEMA [JAVA]Rubrica telefonica

Alakbar

Nuovo Utente
94
1
CPU
Intel SandyBridge I5 2500k
Scheda Madre
Asus P8P67 rev 3.0
HDD
Kingston 240GB SSDNOW KC300 SATA3 7MM W
RAM
Corsair Vengeance 8GB DDR3 1600MHz
GPU
ATI Radeon HD 6800
Monitor
Tv lg 32" + samsung 22"
OS
Windows/Ubuntu
Buonasera a tutti! Ho iniziato da un paio giorno a studiare un po' di java da autodidatta seguendo il manuale di java 5 di Claudio De Sio Cesari. Manuale molto molto utile e anche abbastanza comprensibile. Nel capitolo 7 mi sono imbattuto in un esercizio che richiede di simulare il funzionamento di una rubrica telefonica. :cav:
Gli argomenti che sono stati trattati fino ad ora sono classi, metodi, cicli e controlli; incapsulamento, ereditarietà, polimorfismo per i metodi ( overload e override), polimorfismo per dati, parametri polimorfi, collezioni eterogenee, casting di oggetti.
Utilizzo Netbeans su linux.

Il lettore si limiti a simulare la seguente situazione:
una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su un certo numero di persone (per esempio 5), prestabilito (le informazioni sono preintrodotte nel metodo main()). L’utente dovrà fornire all’applicazione un nome da riga di comando e l’applicazione dovrà restituire le informazioni relative alla persona. Se il nome non è fornito, o se il nome immesso non corrisponde al nome di una persona preintrodotta dall’applicazione, deve essere restituito un messaggio significativo. Il lettore non ha altri vincoli. Non è presentata soluzione per quest’esercizio.

La mia idea era di creare una classe rubrica che caratterizzasse oggetti che hanno nome, indirizzo e numero di telefono. In questa classe definire il costruttore e metodi accessor e mutuator per nome, indirizzo e numeto di telefono.
Poi creare la classe RubricaCerca contenente il main, nella quale venivano instanziati 5 oggetti della classe Rubrica, che prendesse in input da tastiera ( non so come usare args[0]="Nome") un nome e lo passasse ad un metodo di ricerca, metodo che intendevo posizionare dentro la classe Rubrica ma non so se è la soluzione migliore.

A questo punto i miei molteplici dubbi, derivati da una poco approfondita conoscenza del linguaggio, sono saliti a galla a più non posso. Primo tra tutti come passare una stringa presa da tastiera ad un metodo public di un altra classe e restituire il risultato della ricerca.
Di seguito il codice da me scritto fino ad ora.:look:
package rubricacerca;


public class Rubrica {

private String nome;
private String indirizzo;
private int numero;
private String risultato;

//costruttore Rubrica​
public Rubrica(String n, String ind, int num){ //tre parametri in ingresso​
/*this.setN(n); // passo al mutuator n​
this.setInd(ind); // passo al mutuator ind​
this.setNum(num); // psso al mutuator num​
*/​
setNIndNum(n, ind, num);​
}​
//Mutuator per nome​
public void setN(String n){​
this.nome = n;​
}​
//Mutuator per indirizzo​
public void setInd( String ind){​
this.indirizzo = ind;​
}​
// mutuator per Numeroditelefono​
public void setNum(int num){​
this.numero = num;​
}​
// accessor per nome​
public String getN(){​
return nome;​
}​
//accessor per indirizzo​
public String getInd(){​
return indirizzo;​
}​
//accessor per Numero​
public int getNum(){​
return numero;​
}​
//mutuator per setNIndNum​
public void setNIndNum(String n, String ind, int num){​
this.setN(n);​
this.setInd(ind);​
this.setNum(num);​
}​
//accesso per NIndNum​
public String getNIndNum(){​
return nome + indirizzo + numero;​
}​
//mutuator per il risultato​
public void setRisultato(String risultato ){​
this.risultato = risultato;​
}​
// accessor per il risultato​
public String getRisultato(){​
return risultato;​
}​
//metodo di ricerca​
public void cerca(String nome){​
// Qui dovrei inserire il codice per la ricerca ma mi trovo in difficoltà.​
}​
}
}
package rubricacerca;


import java.io.*;
public class RubricaCerca {


/**
* @Param args the command line arguments
*/
public static void main(String[] args) throws IOException {
Rubrica persona1 = new Rubrica("Pippo", "Roma", 5);​
Rubrica persona2 = new Rubrica("Topolino", "Torino", 6);​
Rubrica persona3 = new Rubrica("Paperino", "Napoli", 8);​
Rubrica persona4 = new Rubrica("Pluto", "Livorno", 9);​
Rubrica persona5 = new Rubrica("Archimede", "Milano", 12);

System.out.println("Inserisci un nome:\n");​
InputStreamReader input = new InputStreamReader(System.in);​
BufferedReader tastiera = new BufferedReader(input);

String nome = tastiera.readLine();​
// da qui in poi non so proprio come continuare​
}​
}

Sapreste consigliarmi come andare avanti?

Grazie e scusate per il poema :utonto:
 

ocean62

Utente Attivo
161
38
CPU
I7 5820K Kraken X61 cooled
Scheda Madre
MSI X99 SLI PLUS
HDD
Samsung SSD 850 PRO 1TB - WD Black 2TB - WD RE 2TB
RAM
Corsair DDR4 2666GHz 32GB
GPU
Palit GTX980Ti Super JetStream
PSU
XFX XTR750 - APC SMART-UPS 1500VA SMT1500I
Case
Corsair Obsidian 450D
OS
Windows 10 pro 64
C'è qualche errore di logica: "una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su un certo numero di persone" significa che l'oggetto Rubrica contiene degli oggetti Persona. E' a Persona che sono associate le informazioni su nome, indirizzo e telefono. Quindi il metodo "cerca" di Rubrica effettuerà un qualche tipo di operazione su una struttura dati che contiene gli oggetti Persona.
 

Alakbar

Nuovo Utente
94
1
CPU
Intel SandyBridge I5 2500k
Scheda Madre
Asus P8P67 rev 3.0
HDD
Kingston 240GB SSDNOW KC300 SATA3 7MM W
RAM
Corsair Vengeance 8GB DDR3 1600MHz
GPU
ATI Radeon HD 6800
Monitor
Tv lg 32" + samsung 22"
OS
Windows/Ubuntu
C'è qualche errore di logica: "una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su un certo numero di persone" significa che l'oggetto Rubrica contiene degli oggetti Persona. E' a Persona che sono associate le informazioni su nome, indirizzo e telefono. Quindi il metodo "cerca" di Rubrica effettuerà un qualche tipo di operazione su una struttura dati che contiene gli oggetti Persona.

mk ok, credo di esserci xD ora faccio un paio di cambiamenti con questa nuova logica. Grazie :D
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,941
11,577
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Per fare le cose per bene ad una Persona non dovresti mettere come attributo un numero di telefono, semmai definire una classe separata ItemRubrica che ha come attributi Persona e (tanto per dire) una stringa che rappresenta un numero di telefono (non sarebbe male inoltre definire un attributo nID - identificativo, per esempio un numero intero statico unico per ciascun item, magari da assegnare automaticamente). In parole povere, ItemRubrica è una composizione di oggetti (attenzione: non estende la classe persona; inoltre nota che una persona può possedere più numeri di telefono).
A questo punto un insieme di oggetti ItemRubrica definisce una rubrica insieme alle operazioni che ti aspetti di poter fare con una rubrica.

P.S.
Ad essere veramente pignoli ItemRubrica dovrebbe essere ancora più generico, perché non è detto che una rubrica contenga solo elenchi di persone, potrebbe per esempio contenere dei numeri di Ufficio o di qualsiasi struttura, ma non credo per questo esercizio sia necessario questo livello di dettaglio.
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili