Fondamenti di Informatica
Ingegneria Idraulica Marittima e Trasporti, sede di Civitavecchia
Ingegneria della Sicurezza e Protezione, sede di Civitavecchia

Esercizio di Autovalutazione 2


Gli elaborati svolti dovranno essere inviati all'indirizzo di posta elettronica farinelli@dis.uniroma1.it. Sono necessari solo i file *.java.
Si ricorda che la prova non sarà in alcun modo utilizzata a scopo di valutazione.

Si vuole realizzare un programma per la gestione di un mercato ortofrutticolo. Per ogni partita di frutta è necessario rappresentare le seguenti informazioni: tipo della frutta, peso (in Kg), prezzo di vendita al Kg (in migliaia di euro), il numero di giorni dalla raccolta.

Parte 1.

Scrivere una classe PartitaFrutta per rappresentare le informazioni relative ad una partita di frutta con la seguente interfaccia:
- PartitaFrutta(String frutta, float peso, int giorni): costruttore con 3 argomenti: frutta, peso, il numero di giorni dalla raccolta, prezzo; il costruttore inizializza a 0 il prezzo al Kg.;
- String getFrutta( ) : restituisce il tipo di frutta della partita; 
- float getPeso( ) : restituisce il peso della partita di frutta; 
- int getGiorni( ) : restituisce il numero di giorni dalla raccolta della partita di frutta;
- float getPrezzo( ) : restituisce il prezzo al Kg. della frutta;
- void setPrezzo(boolean pregiata, float p) : se pregiata è true il prezzo viene messo pari a p*1.2, altrimenti pari al valore di p;
- boolean isFresca(int n): restituisce true se il numero di giorni dalla raccolta della partita di frutta è minore di n;
- boolean uguale( PartitaFrutta x ) : restituisce true se la partita di frutta su cui il metodo è invocato è uguale a x (indipendentemente dal numero di giorni dalla raccolta), e false altrimenti.

Programma di esempio: ProvaPartitaFrutta.java

public class ProvaPartitaFrutta {
public static void main (String[] args) {
PartitaFrutta p1 = new PartitaFrutta("Arance Sicilia",100.3f,0);
System.out.println(p1.getFrutta());
System.out.println(p1.getPeso());
System.out.println(p1.getGiorni());
System.out.println(p1.getPrezzo());
p1.setPrezzo(true,2);
System.out.println(p1.getPrezzo());
PartitaFrutta p2 =
new PartitaFrutta("mele Trentino",100.3f,2);
if (p1.uguale(p2)) System.out.println("p1 e p2 sono uguali");
else System.out.println("p1 e p2 sono diverse");
PartitaFrutta p3 =
new PartitaFrutta(p1.getFrutta(),p1.getPeso(),p1.getGiorni());
if (p1.uguale(p3)) System.out.println("p1 e p3 sono uguali");
else System.out.println("p1 e p3 sono diverse");
}

}

Parte 2.

Parte 3.

Viene fornita una classe MercatoFrutta che mette a disposizione un metodo PartitaFrutta[] leggi(String)che legge da un file avente il nome passato come argomento un insieme di record rappresentanti oggetti della classe PartitaFrutta, e ritorna un array di partite di frutta opportunamente istanziato.

Programma di prova per MercatoFrutta1

import java.io.*;

class ProvaMercatoFrutta1 {
  public static void main (String[] args) throws IOException {
     String frutta = "Arance Sicilia";
     PartitaFrutta[] f1;
     f1 = MercatoFrutta.leggi("frutta1.dat");
     PartitaFrutta p = MercatoFrutta1.massimoPeso(f1, frutta);
     System.out.println("Partita piu' consistente di: " + frutta + ": "
     + p.getPeso());
     frutta = "Pere Veneto";
     p = MercatoFrutta1.massimoPeso(f1, frutta);
     System.out.println("Partita piu' consistente di: " + frutta + ": "
     + p.getPeso());
  }
}

Programma di prova per MercatoFrutta2

import java.io.*;

class Prova
MercatoFrutta2 {
  public static void main (String[] args) throws IOException{
    PartitaFrutta[] f1;
    String frutta = "Arance Sicilia";
    f1 = MercatoFrutta.leggi("frutta1.dat");
    System.out.println("Numero di grosse partite di " + frutta + ": "
    +    MercatoFrutta2.grossePartite(f1, frutta));
    frutta = "Pere veneto";
    f1 = MercatoFrutta.leggi("frutta1.dat");
    System.out.println("Numero di grosse partite di " + frutta + ": "
    +    MercatoFrutta2.grossePartite(f1, frutta));
  }
}