Grazie mille per i tuoi prezioni suggerimenti. Scusa tanto per il codice pasticciato ma sono i miei primi programmi e io uso altri linguaggi normalmente.
Si conosco la differenza tra overload e overrid (almeno credo).
Overload quando ridefinisco metodi con stesso nome ma numero di parametri diversi;
Overrid riderifisco un metodo della super classe nella sottoclasse (stesso nome e stessi parametri) Giusto?????
Posto qui di seguito il codice rivisto. Il doppio vettore è dovuto al fatto che non riesco a gestire i dati aggiuntivi se poi ci riesco non credo mi serviranno.
Ti sarei davvero grata per qualsiasi suggerimento e aiuto mi puoi dare.
****Persona.java
public class Persona {
// Attributi
private String tipo;
private String nome;
private String cognome;
private String numUfficio;
private String via;
private int cap;
private String citta;
private String note;
// Costruttore
public Persona(String tipo,
String nome,
String cognome,
String numUfficio,
String via,
int cap,
String citta,
String note)
{
this.tipo = tipo;
this.nome = nome;
this.cognome = cognome;
this.numUfficio = numUfficio;
this.via = via;
this.cap = cap;
this.citta = citta;
this.note = note;
}
// Metodi classe Persona
public void impostaNome(String nome, String cognome)
{
this.nome = nome;
this.cognome = cognome;
}
public void impostaIndirizzo(String Indirizzo, int cap, String citta)
{
this.via = via;
this.cap = cap;
this.citta = citta;
}
public void impostaNumUfficio(String numUfficio)
{
this.numUfficio = numUfficio;
}
public void impostaTipo(String tipo)
{
this.tipo = tipo;
}
// Metodi di interrogazione della classe Persona
public String restituisciNome()
{
return this.nome;
}
public String restituisciCognome()
{
return this.cognome;
}
public String restituisciNumeroUff()
{
return this.numUfficio;
}
public String restituisciIndirizzo()
{
return (this.via + "\t" + this.cap + "\t" + this.citta);
}
public String restituisciNote()
{
return this.note;
}
public boolean equals(Object obj)
{
return (obj instanceof Persona)
&& ((Persona)obj).equals(nome)
&& ((Persona)obj).equals(cognome);
}
}
*******Dipendente.java
import java.io.*;
public class Dipendente extends Persona {
// Attributi
private String numCasa;
private String numCellulare;
private String user;
private String password;
// Costruttore
public Dipendente(String tipo, String nome, String cognome, String numUfficio,
String via, int cap, String citta, String note) {
super (tipo, nome, cognome, numUfficio, via, cap, citta, note);
numCasa="";
numCellulare="";
user="";
password="";
}
// Metodi di impostazione della classe Dipendente
public void impostaUser(String user, String password)
{
this.user = user;
this.password = password;
}
public void impostaTelefonoD(String numCasa, String numCellulare)
{
this.numCasa = numCasa;
this.numCellulare = numCellulare;
}
// Metodi di interrogazione della classe dipendente
public String restituisciNumCasa()
{
return this.numCasa;
}
public String restituisciNumCell()
{
return this.numCellulare;
}
public String restituisciNumeri()
{
return (this.numCasa + "\t" + this.numCellulare);
}
public String restituisciUser()
{
return this.user;
}
public String restituisciPassword()
{
return this.password;
}
public boolean equals(Object obj)
{
return (obj instanceof Dipendente)
&& ((Dipendente)obj).equals(user)
&& ((Dipendente)obj).equals(password);
}
}
******Rubrica.java
import java.io.*;
import java.util.*;
class Rubrica {
// Attributi
private Vector<Persona> Clienti;
private Vector<Dipendente> Dipendenti;
private String nome_rubrica;
public static void main(String args[])
{
Rubrica r = new Rubrica("rubrica.txt");
Scanner t = new Scanner(System.in);
System.out.print("Inserire user: \n");
String user = t.nextLine();
System.out.print("Inserire password: \n");
String password = t.nextLine();
if (r.login(user,password) == false)
{
System.out.print("Inserisci i tuoi dati: \n");
System.out.print("nome: \n");
String nome = t.nextLine();
System.out.print("cognome: \n");
String cognome = t.nextLine();
System.out.print("numero ufficio: \n");
String numUfficio = t.nextLine();
System.out.print("numero casa: \n");
String numCasa = t.nextLine();
System.out.print("numero cellulare: \n");
String numCellulare = t.nextLine();
System.out.print("via: \n");
String via = t.nextLine();
System.out.print("cap: \n");
int cap = t.nextInt();
System.out.print("citta: \n");
String citta = t.nextLine();
System.out.print("note: \n");
String note = t.nextLine();
System.out.print("username: \n");
user = t.nextLine();
System.out.print("password: \n");
password = t.nextLine();
Dipendente d = new Dipendente("D", nome, cognome, numUfficio, via, cap, citta, note);
d.impostaTelefonoD(numCasa, numCellulare);
d.impostaUser(user, password);
r.aggiungiDipendente(d);
}
if (r.login(user,password) == false)
{
int scelta = 0;
while (scelta != 3)
{
System.out.print("0-Lista Contatti, 1-Inserisci Cliente, 2-Ricerca, 3-Esci: ");
scelta = t.nextInt();
if (scelta == 0)
{
}
if (scelta == 1)
{
System.out.print("Inserisci i dati Cliente: \n");
System.out.print("nome: \n");
String nome = t.nextLine();
System.out.print("cognome: \n");
String cognome = t.nextLine();
System.out.print("numero ufficio: \n");
String numUfficio = t.nextLine();
System.out.print("via: \n");
String via = t.nextLine();
System.out.print("cap: \n");
int cap = t.nextInt();
System.out.print("citta: \n");
String citta = t.nextLine();
System.out.print("note: \n");
String note = t.nextLine();
Persona p = new Persona("C", nome, cognome, numUfficio, via, cap, citta, note);
r.aggiungiCliente(p);
}
if (scelta == 2)
{
System.out.print("Vuoi cercare tra C-Clienti o D-Dipendenti?: \n");
String tipoCercato = t.nextLine();
System.out.print("nome da cercare: \n");
String nomeCercato = t.nextLine();
System.out.print("cognome da cercare: \n");
String cognomeCercato = t.nextLine();
r.printnumber(tipoCercato, nomeCercato, cognomeCercato);
}
}
}
}
// Costruttore
public Rubrica(String nome_file) {
Clienti = new Vector<Persona>();
Dipendenti = new Vector<Dipendente>();
nome_rubrica = nome_file;
//Leggiamo la rubrica dal file
FileReader fin = null;
try {
fin = new FileReader(nome_file);
BufferedReader inFile = new BufferedReader(fin);
String record = inFile.readLine();
while(record != null) {
//System.out.println(record);
//String tipo = record.substring(0,record.indexOf('\t'));
//String r = record.substring(record.indexOf('\t')+1,record.lenght());
//String nome = r.substring(0,r.indexOf('\t'));
//String cognome = r.substring(r.indexOf('\t')+1,r.lenght());
//String r1 = record.substring(record.indexOf('\t')+1,r1.lenght());
//String num_uff = r1.substring(0,r1.indexOf('\t'));
int inizio = 0;
int pos = record.indexOf ('\t');
String tipo = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String nome = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String cognome = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String num_uff = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String via = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String capa = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String citta = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String note = record.substring(inizio, pos);
if (tipo == "C") {
int cap = Integer.parseInt(capa);
Persona p = new Persona(tipo,nome,cognome,num_uff,via,cap,citta,note);
System.out.println("Letto" + p);
Clienti.add(p);
} else {
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String numCasa = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String numCellulare = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String user = record.substring(inizio, pos);
inizio = pos + 1;
pos = record.indexOf ('\t', inizio);
String password = record.substring(inizio, pos);
int cap = Integer.parseInt(capa);
Dipendente d = new Dipendente(tipo,nome,cognome,num_uff,via,cap,citta,note);
d.impostaTelefonoD(numCasa,numCellulare);
d.impostaUser(user,password);
System.out.println("Letto" + d);
Dipendenti.add(d);
}
record = inFile.readLine();
}
fin.close();
} catch (FileNotFoundException e)
{
//File non esiste la rubrica è vuota
System.out.println("La rubrica non esiste");
} catch (IOException e2)
{
e2.printStackTrace();
System.exit(1);
}
}
public boolean aggiungiCliente(Persona p)
{
if (Clienti.contains(p))
{
System.out.println(p + "già presente nella rubrica");
return false;
}
Clienti.addElement(p);
salvaContatti();
System.out.println("Aggiunto" + p + "alla rubrica");
return true;
}
public boolean aggiungiDipendente(Dipendente d)
{
if (Dipendenti.contains(d))
{
System.out.println(d + "già presente nella rubrica");
return false;
}
Dipendenti.addElement(d);
salvaDipendenti();
System.out.println("Aggiunto" + d + "alla rubrica");
return true;
}
public void printnumber(String tipo, String nome, String cognome)
{
if (tipo == "C") {
Persona p1 = new Persona(tipo, nome, cognome, "", "", 0, "", "");
if (Clienti.contains(p1)) System.out.println("Il numero di " + p1 + "e\' " +
Clienti.elementAt(Clienti.indexOf(p1)).restituisciNumeroUff());
else System.out.println(p1 + " non presente nella rubrica");
}
if (tipo == "D") {
Dipendente d1 = new Dipendente(tipo, nome, cognome, "", "", 0, "", "");
d1.impostaTelefonoD("", "");
d1.impostaUser("", "");
if (Dipendenti.contains(d1)) System.out.println("Il numero di " + d1 + "e\' " +
Dipendenti.elementAt(Dipendenti.indexOf(d1)).restituisciNumeri());
else System.out.println(d1 + " non presente nella rubrica");
}
}
public boolean login(String user, String password)
{
Dipendente d1 = new Dipendente("D", "", "", "", "", 0, "", "");
d1.impostaTelefonoD("","");
d1.impostaUser(user, password);
if (Dipendenti.contains(d1)) {
return true;
} else return false;
}
public void salvaContatti()
{
try
{
//FileOutputStream fout = new FileOutputStream(nome_rubrica);
System.out.println("Passo");
//PrintWriter ps = new PrintWriter(fout, true);
FileWriter fout = new FileWriter(nome_rubrica, true);
PrintWriter ps = new PrintWriter(fout);
for (int i=0; i < Clienti.size();i++) ps.println(Clienti.elementAt(i));
ps.close();
fout.close();
} catch (IOException e)
{
e.printStackTrace();
System.exit(1);
}
}
public void salvaDipendenti()
{
try
{
//FileOutputStream fout = new FileOutputStream(nome_rubrica);
System.out.println("Passo1");
//PrintWriter ds = new PrintWriter(fout, true);
FileWriter fout = new FileWriter(nome_rubrica, true);
PrintWriter ds = new PrintWriter(fout);
System.out.print(Dipendenti.size());
for (int i=0; i < Dipendenti.size();i++) ds.println(Dipendenti.elementAt(i));
ds.close();
fout.close();
} catch (IOException e)
{
e.printStackTrace();
System.exit(1);
}
}
}