GestioneContatti.java
Created with JBuilder |
class GestioneContatti {
// Attributi
private Contatto[] elencoContatti;
private int numeroContatti;
// Costruttore
public GestioneContatti(int maxContatti) {
elencoContatti = new Contatto[maxContatti];
numeroContatti = 0;
}
// Aggiungi un contatto
public boolean aggiungiContatto(Contatto c) {
if (numeroContatti < elencoContatti.length) {
elencoContatti[numeroContatti] = c;
++numeroContatti;
return true;
} else {
return false;
}
}
// Elimina un contatto (data la denominazione)
public boolean cancellaContatto(String denominazione) {
int posizione = cercaPerDenominazioneInterno(denominazione);
if (posizione > 0) {
elencoContatti[posizione] = elencoContatti[numeroContatti - 1];
elencoContatti[numeroContatti - 1] = null;
--numeroContatti;
return true;
} else {
return false;
}
}
// Ricerca un contatto per denominazione
public Contatto cercaPerDenominazione(String denominazione) {
int posizione = cercaPerDenominazioneInterno(denominazione);
if (posizione > 0) {
return elencoContatti[posizione];
} else {
return null;
}
}
// Ricerca di tutti i contatti svolgenti una data attivitą
public GestioneContatti cercaPerAttivitą(String attivitąCercata) {
GestioneContatti contattiPerAttivitą =
new GestioneContatti(numeroContatti);
for (int i = 0; i < numeroContatti; ++i) {
String attivitąTrovata = elencoContatti[i].restituisciAttivitą();
if (attivitąTrovata.equals(attivitąCercata)) {
contattiPerAttivitą.aggiungiContatto(elencoContatti[i]);
}
}
return contattiPerAttivitą;
}
// Ricerca di tutti i contatti che sono in posizione di
// debito (credito) rispetto all'utente
public GestioneContatti cercaPerSituazioneFinanziaria(boolean creditori) {
GestioneContatti contattiPerSituazioneFinanziaria =
new GestioneContatti(numeroContatti);
for (int i = 0; i < numeroContatti; ++i) {
double situazioneFinanziaria =
elencoContatti[i].restituisciSituazione();
if ((creditori && (situazioneFinanziaria < 0)) ||
(!creditori && (situazioneFinanziaria > 0))) {
contattiPerSituazioneFinanziaria.aggiungiContatto(elencoContatti[i]);
}
}
return contattiPerSituazioneFinanziaria;
}
// Situazione finanziaria del libero professionista
public double calcolaSituazioneFinanziaria() {
double situazione = 0.0;
for (int i = 0; i < numeroContatti; ++i) {
situazione += elencoContatti[i].restituisciSituazione();
}
return situazione;
}
// Ricerca del contatto che deve la somma maggiore
public Contatto cercaDebitoreMax() {
if (numeroContatti > 0) {
double importoMax = elencoContatti[0].restituisciSituazione();
int posizioneMax = 0;
for (int i = 1; i < numeroContatti; ++i) {
if (elencoContatti[i].restituisciSituazione() > importoMax) {
importoMax = elencoContatti[i].restituisciSituazione();
posizioneMax = i;
}
}
if (importoMax > 0) {
return elencoContatti[posizioneMax];
} else {
return null;
}
} else {
return null;
}
}
// Metodo interno di ricerca per denominazione
private int cercaPerDenominazioneInterno(String dCercata) {
for (int i = 0; i < numeroContatti; ++i) {
String dTrovata = elencoContatti[i].restituisciDenominazione();
if (dTrovata.equals(dCercata)) {
return i;
}
}
return -1;
}
}
GestioneContatti.java
Created with JBuilder |