Fondamenti di Informatica
Corso di Laurea in Ingegneria Informatica

Prova al calcolatore

Durata: 1h 30m


Si vuole realizzare un programma per la gestione di una collezione di francobolii. Per ogni francobollo e' necessario rappresentare le seguenti informazioni: valore, nome della serie, prezzo di vendita (nel mercato filatelico in migliaia di euro), disponibilità.

Parte 1.

Scrivere una classe Francobollo per rappresentare le informazioni relative ad un francobollo con la seguente interfaccia:
- Francobollo(String valore, String serie, float prezzo) : costruttore con tre argomenti: valore, nome della serie, prezzo di vendita; il costruttore inizializza la disponibilità a 0;
- String getValore( ) : restituisce il valore del francobollo; 
- String getSerie( ) : restituisce il nome della serie a cui il francobollo appartiene; 
- float getPrezzo( ) : restituisce il prezzo di vendita del francobollo;
- int getDisp( ) : restituisce la disponibilità del francobollo;
- void setDisp(boolean acquisto, int n) : se acquisto è maggiore di 0 incrementa la disponibilità di n, altrimenti decrementa la disponibilità di n;
- boolean isDisp(int n): restituisce true se sono disponibili almeno n copie del francobollo;
- boolean uguale( Francobollo x ) : restituisce true se il Francobollo su cui il metodo è invocato è uguale a x (indipendentemente dalla disponibilità), e false altrimenti.

Programma di esempio: ProvaFrancobollo.java

public class ProvaFrancobollo {
  public static void main (String[] args) {
  Francobollo a1 = new Francobollo("5 Lire","Michelangiolesca",30);
  System.out.println(a1.getValore());
  System.out.println(a1.getSerie());
  System.out.println(a1.getPrezzo());
  System.out.println(a1.getDisp());
  a1.setDisp(true,6);
  System.out.println(a1.getDisp());
  Francobollo a2 =
  new Francobollo("50 Lire","Italia al Lavoro",10);
        if (a1.uguale(a2)) System.out.println("a1 e a2 sono uguali");
        else System.out.println("a1 e a2 sono diversi");
  Francobollo a3 =
  new Francobollo(a1.getValore(),a1.getSerie(),a1.getPrezzo());
        if (a1.uguale(a3)) System.out.println("a1 e a3 sono uguali");
        else System.out.println("a1 e a3 sono diversi");
  }
}

Soluzione


Parte 2.

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

Programma di prova per RaccoltaFrancobolli1

import java.io.*;

class ProvaRaccoltaFrancobolli1 {
  public static void main (String[] args) throws IOException {
     Francobollo[] f1;
     f1 = RaccoltaFrancobolli.leggi("francobolli1.dat");
     Francobollo investimento = RaccoltaFrancobolli1.massimoInvestimento(f1);
     System.out.println("Francobollo di maggior valore: " +
investimento.getValore() +      " della serie " + investimento.getSerie() + " che vale " + investimento.getPrezzo() + " euro.");
  }
}

Soluzione

Programma di prova per RaccoltaFrancobolli2

import java.io.*;

class ProvaRaccoltaFrancobolli
2 {
  public static void main (String[] args) throws IOException{
    Francobollo[] f1;
    f1 = RaccoltaFrancobolli.leggi("francobolli1.dat");
    System.out.println("Numero di francobolli pregiati: " +    RaccoltaFrancobolli2.pezziPregiati(f1));
  }
}

Soluzione