Scusate per il doppio post..ma ho provato a rivedere il paradigma oop (a lezione l'avevano fatto, ma io non potendo frequentare per questioni di lavoro mi sono trovata ad accingermi da sola o quasi a java).. in più ho confrontato un mio programma con quello scritto da una compagna, e ho cercato di sistemare un po' le cose...in questo modo va meglio? quali altri accorgimenti mi dareste??
codice:
public class Banca1 {
//COSTRUTTORE
public Banca1(String name, String sur, double deposit,
int type, int num, String date)
{
this.name = name;
this.sur = sur;
this.deposit = deposit;
this.type = type;
this.num = num;
this.date = date;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSur()
{
return sur;
}
public void setSur(String sur)
{
this.sur = sur;
}
public String getDate()
{
return date;
}
public void setDate(String date)
{
this.date = date;
}
public double getDep()
{
return deposit;
}
public void setDep(double deposit)
{
this.deposit = deposit;
}
public int getType()
{
return type;
}
public void setType(int type)
{
this.type = type;
}
public int getNum()
{
return num;
}
public void setNum(int num)
{
this.num = num;
}
//variabili d'istanza
private String name;
private String sur;
private double deposit;
private int type;
private int num;
private String date;
}
codice:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Banca {
Banca temp;
Scanner in = new Scanner(System.in);
//DATI DI COLLAUDO
public Banca1[] datiColl()
{
Banca1[] v = new Banca1[4];
v[0]= new Banca1("Matteo", "Renzi", 2000, 0, 30405, "12/12/2011");
v[1]= new Banca1("Rosalba", "Anzi", 3000, 0, 20204, "10/01/2011");
v[2]= new Banca1("Fabrizio", "Cicchi", 12000, 1, 12124, "22/07/2012");
v[3]= new Banca1("Vanessa", "Luna", 200, 0, 45672, "12/12/2012");
return (v);
}
//verifica ordinamento per num di conto e fare la
//ricerca binaria solo se ordinato (non modificare l'array)
//altrimenti mostrare un messaggio adeguato
private static Boolean ifIsOrd(Banca1[]v)
{
for(int i=0;i<v.length-1;i++)
{
if(v[i].getNum()>v[i+1].getNum())return false;
}
return true;
}
private static Boolean ricBin(Banca1[]v, int num)
{
if(Banca.ifIsOrd(v)==false)System.out.println("Operazione non consentita");
else
{
int low= 0;
int high= v.length-1;
while(low<=high)
{
int mid = (low+high)/2;
int diff = v[mid].getNum()-num;
if (diff==0) return true;
else if(diff<0) low = mid+1;
else high= mid-1;
}
}
return false;
}
//RICERCA DI UN NUMERO DI CONTO
public void Ricerca(Banca1[] clienti)
{
System.out.println("Numero di conto da cercare: ");
int conto = in.nextInt();
if(Banca.ricBin(clienti, conto)==true)System.out.println("trovato");
else System.out.println("NUMERO NON TROVATO");
}
//POPOLAMENTO MANUALE
public Banca1[] popolamentoManuale()
{
System.out.println("QUANTI CLIENTI VUOI INSERIRE?");
int num = in.nextInt();
Banca1[] clienti = new Banca1[num];
for(int i=0;i<clienti.length;i++)
{
System.out.println("Nome cliente"+(i+1)+": ");
String nome = in.next();
System.out.println("Cognome cliente"+(i+1)+": ");
String cognome = in.next();
System.out.println("Deposito cliente"+(i+1)+": ");
double deposito = in.nextDouble();
System.out.println("Tipo conto cliente"+(i+1)+": ");
int tipo = in.nextInt();
System.out.println("Numero conto cliente"+(i+1)+": ");
int num1 = in.nextInt();
System.out.println("Data apertura conto cliente"+(i+1)+": ");
String data = in.next();
clienti[i] = new Banca1(nome,cognome,deposito,
tipo,num1,data);
}
return(clienti);
}
//STAMPA TABELLARE
public void showTab(Banca1[]v)
{
String divider="___________________________________________________________________________________________________";
String title1= "NOME";
String title2= "COGNOME";
String title3= "DEPOSITO";
String title4= "TIPO";
String title5= "NUMERO CONTO";
String title6= "DATA";
System.out.println("");
System.out.printf("%-15s %-15s %-15s %-15s %-15s %-15s %n", title1, title2, title3,
title4, title5, title6);
System.out.println(divider);
for(int i=0;i<v.length;i++)
{
String nome = v[i].getName();
String cognome = v[i].getSur();
double deposito = v[i].getDep();
int tipo = v[i].getType();
int num = v[i].getNum();
String data = v[i].getDate();
System.out.printf("%-15s %-15s %-15s %-15s %-15s %-15s %n", nome,cognome,deposito,
tipo,num, data);
}
System.out.println(divider);
System.out.println("");
}
//STAMPA DEL CONTO PIU' REMOTO
private static Date trasf(String data)
{
Date data1 = null;
try{
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
data1 = sdf.parse(data);
}catch(ParseException ex){ex.printStackTrace();}
return(data1);
}
public void contoRemoto(Banca1[]v)
{
Date[] c = new Date[v.length];
//creo un array di date
for(int i=0;i<v.length;i++)
{
c[i]= Banca.trasf(v[i].getDate());
}
Banca1 remoto = v[0];
Date temp = c[0];
for(int i=1;i<c.length;i++)
{
if(c[i].compareTo(temp)<0)
{
temp=c[i];
remoto = v[i];
}
}
System.out.println(remoto.getName()+", "+remoto.getSur()+
", "+remoto.getDep()+", "+remoto.getType()+", "+remoto.getNum()+", "+remoto.getDate());
}
}
codice:
import java.util.Scanner;
public class Banca_tester {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int scelta;
Banca1[] clienti = null;
Banca temp;
do{
System.out.println("Scegli tra le seguenti operazioni: "
+"\n1.Popolamento array da input"
+"\n2.Popolamento con dati di collaudo"
+"\n3.Ricerca di un num di conto"
+"\n4.Stampa tabellare"
+"\n5.Stampa del conto più remoto"
+"\n6.Termina programma");
scelta= in.nextInt();
switch(scelta)
{
case 1:
temp = new Banca();
clienti = temp.popolamentoManuale();
break;
case 2:
System.out.println("POPOLAMENTO CON DATI DI COLLAUDO");
temp = new Banca();
clienti = temp.datiColl();
System.out.println("");
break;
case 3:
temp = new Banca();
temp.Ricerca(clienti);
break;
case 4:
System.out.println("STAMPA TABELLARE");
System.out.println("");
temp = new Banca();
temp.showTab(clienti);
System.out.println("");
break;
case 5:
System.out.println("CONTO PIU' REMOTO");
temp = new Banca();
temp.contoRemoto(clienti);
System.out.println("");
}
}while(scelta!=6);
System.out.println("Programma terminato."
+"\nGrazie e arrivederci!");
}
}
P.S. i set servono nel mio caso? non ho capito benissimo la loro utilità