PROBLEMA svolgere una classe in Java

michelabarde

Nuovo Utente
1
0
Ciao a tutti! sono una studentessa di ingegneria gestionale e sono al primo anno.
Frequento il corso di fondamenti di informatica, che per molti, potrebbe essere piuttosto facile ma io non ne vado fuori.
Mi stavo chiedendo se qualcuno di voi, esperto in programmazione Java, mi può aiutare con l'implementazione di alcuni metodi di una classe data in un tema d'esame precedente. ecco qui il testo:

Simulare mediante un programma Java un ucio contabile. Si assuma la classe Impiegato,
avente come variabile d'istanza nome (stringa), e la classe Pratica, avente come variabili d'istanza
codice (stringa), giorniAttesa (intero) rappresentante il numero di giorni trascorsi dalla creazione
della pratica, e impiegato, rappresentante un riferimento a Impiegato che ha in carica la pratica. Si
assumano gli usuali metodi costruttori, accessori e modi catori per queste due classi senza sviluppare
il codice. Sviluppare tutti i metodi della seguente classe:

public class UfficioContabile {
private Impiegato[] impiegati;
int numeroImpiegati;
private ArrayList<Pratica> pratiche;

public UfficioContabile(int maxImpiegati){...}
public void nuovoGiorno(){...}
public int cercaImpiegato(String unNomeImpiegato){...}
public int cercaPratica(String unCodice){...}
public void aggiungiPratica(String unCodice, String unNomeImpiegato){...}
public int cercaMaxGiorniAttesa(String unNomeImpiegato){...}
public void svolgiPratica(String unNome){...}
public void aggiungiImpiegato(String unNome){...}
public void eliminaImpiegato(String unNome, String unSostituto){...}
}
L'array impiegati deve essere gestito come un array parzialmente riempito, usando come sentinella
la variabile numeroImpiegati. Il metodo nuovoGiorno incrementa di una unita la variabile d'istanza
giorniAttesa di tutte le pratiche presenti nel sistema. Il metodo aggiungiPratica aggiunge una
pratica avente la variabile d'istanza giorniAttesa posta a zero, e con un collegamento all'oggetto
Impiegato presente nel sistema avente il nome speci cato: aggiungere la pratica solo se l'impiegato
associato e presente e non creare duplicati della pratica. Il metodo cercaMaxGiorniAttesa restituisce
l'indice della pratica dell'impiegato speci cato avente il valore di giorniAttesa piu alto. Il metodo
svolgiPratica rimuove la pratica assegnata all'impiegato speci cato, avente il valore di giorniAttesa
piu alto. Il metodo aggiungiImpiegato aggiunge un nuovo impiegato, senza creare duplicati e solo
se vi e posto nell'array, e gli assegna la pratica presente nel sistema avente il valore di giorniAttesa
piu alto. Il metodo eliminaImpiegato rimuove l'impiegato indicato, ed assegna tutte le sue pratiche
all'impiegato sostituto. Nei metodi sopra riportati, tutti i casi di parita devono essere risolti arbi-
trariamente.

Grazie mille a tutti!
 

matteoc91

Utente Attivo
158
17
Ciao, sono andato un po' di fretta e non ho controllato bene il codice, cmq dovrebbe andare:
Codice:
public UfficioContabile(int maxImpiegati){
    numeroImpiegati=0;
    impiegati= new int[maxImpiegati];
}


public void nuovoGiorno(){
    for(Pratica p: pratiche){
        p.setGiorniAttesa(p.getGiorniAttesa()+1);
    }
}


public int cercaImpiegato(String unNomeImpiegato){
    for(int i=0; i++; i<numeroImpiegati){
        if(strcmp(impiegati[i].getNome(),unNomeImpiegato)==0)
            return i;
    }
    return -1;
}


public int cercaPratica(String unCodice){
    int i=0;
    for(Pratica p: pratiche){
        if(strcmp(p.getCodice(),unCodice)==0) return i;
        i++
    }
    return -1;
}


public void aggiungiPratica(String unCodice, String unNomeImpiegato){
    int imp=cercaImpiegato(unNomeImpiegato);
    int ptr=cercaPratica(unCodice)
    if(imp==-1 || ptr!=-1) return;
    Pratica p=new Pratica(unCodice,0,impiegati[i]);
    pratiche.add(p);
}


public int cercaMaxGiorniAttesa(String unNomeImpiegato){
    int giorni=-1;
    int ptr=-1;
    int i=0;
    for(Pratica p: pratiche){
        if(strcmp(p.getImpiegato().getNome(),unNomeImpiegato)==0){
            if(p.getGiorniAttesa()>giorni){
                giorni=p.getGiorniAttesa();
                ptr=i;
        }
        i++;
    }
    return ptr;
}


public void svolgiPratica(String unNome){
    int p=cercaMaxGiorniAttesa(unNome);
    if(p==-1) return;
    pratiche.remove(p);
}


// creato esterno solo per portabilità e leggibilità del codice, viene usato da aggiungi impiegato
private int cercaMaxGiorniAttesa(){
    int giorni=-1;
    int ptr=-1;
    int i=0;
    for(Pratica p: pratiche){
        if(p.getGiorniAttesa()>giorni){
            giorni=p.getGiorniAttesa();
            ptr=i;
        }
        i++;
    }
    return ptr;
}


public void aggiungiImpiegato(String unNome){
    if(cercaImpiegato(unNome)!=-1 || numeroImpiegati>=impiegati.length) return;
    impiegati[numeroImpiegati++]=new Impiegato(unNome);
    int p=cercaMaxGiorniAttesa();
    pratiche.get(p).setImpiegato(impiegati[numeroImpiegati-1]);
}


public void eliminaImpiegato(String unNome, String unSostituto){
    int imp=cercaImpiegato(unNome);
    int sos=cercaImpiegato(unSostituto);
    if(imp==-1 || sos==-1) return;
    String nome=impiegati[imp].getNome();
    for(Pratica p: pratiche){
        if(strcmp(p.getImpiegato().getNome(),nome)==0){
            p.setImpiegato(impiegati[sos]);
        }
    }
    for(int i=imp; i<numeroImpiegati; i++){
        impiegati[i]=impiegati[i+1];
    }
    numeroImpiegati--;
}
 

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 30 22.4%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 87 64.9%
  • Square Enix

    Voti: 10 7.5%
  • Capcom

    Voti: 6 4.5%
  • Nintendo

    Voti: 18 13.4%
  • Altro (Specificare)

    Voti: 12 9.0%

Discussioni Simili