Fondamenti di Informatica I

Corso di Laurea in Ingegneria Informatica e Automatica - Corso di Laurea in Ingegneria dei Sistemi Informatici

HomePage | Avvisi | Informatica Automatica | Sistemi Informatici | Programma | Materiale didattico | Esercitazioni | Esami | Anni Precedenti | Login

2 (Interfacce, ereditarietà, classi astratte, RTTI)

Dimostrare la conoscenza dei concetti di interfacce, ereditarietà, classi astratte e RTTI (Run Time Type Information: classe Class, metodo isInstance, ecc.) risolvendo il seguente esercizio.

Si vuole rappresentare il contenuto di una scatola che può contenere oggetti regalo e oggetti che possono essere mangiati. Tutti gli oggetti sono caratterizzati da una descrizione (String) e un peso (double), e gli oggetti che si possono mangiare hanno anche l'informazione delle calorie associate (int).

Definire:
  1. una interfaccia Pesabile contenente la funzione double peso();
  2. una interfaccia Mangiabile contenente la funzione int calorie();
  3. una classe astratta OggettoScatola che rappresenta gli oggetti che possono essere contenuti nella scatola e che sono tutti pesabili;
  4. una classe Regalo che rappresenta oggetti non mangiabili che possono essere inseriti nella scatola;
  5. una classe Caramella che rappresenta oggetti mangiabili che possono essere inseriti nella scatola e per cui deve essere presente anche l'informazione sulle calorie;
  6. Una classe Scatola contenente i seguenti metodi:
    • costruttore
    • add(OggettoScatola x), che aggiunge l'elemento x nella scatola;
    • double pesoTotale(), che calcola il peso totale degli oggetti nella scatola;
    • int calorieTotali(), che calcola le calorie totali degli oggetti mangiabili nella scatola;
    • String toString(), che restituisce una stringa con le informazioni degli oggetti contenuti nella scatola.

Si rispettino inoltre i seguenti vincoli:
  1. tutte le variabili di istanza nelle classi siano dichiarate private;
  2. evitare duplicazioni di dati e funzioni tra le classi Regalo e Caramella;
  3. il seguente programma di prova deve poter essere eseguito senza modifiche:

ProvaEserc2.java
public class ProvaEserc2 {

    public static void main(String[] args) {
        Scatola s = new Scatola();
        s.add(new Caramella("Liquirizia",10.0,100));
        s.add(new Regalo("Adesivo",5.0));
        s.add(new Caramella("Miele",10.0,200));
        s.add(new Caramella("Limone",10.0,50));
        s.add(new Regalo("Pallina",150.0));
       
        System.out.println("Elementi nella scatola: "+s.toString());
        System.out.println("Peso totale della scatola: "+s.pesoTotale());
        System.out.println("Calorie totali della scatola: "+s.calorieTotali());
    }

}
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.1246 seconds