Ese Opera IP
Ese Opera IP
Scrivere una classe astratta Java Opera, contenente i campi privati nome
(String) e anno (int), durata(int), valutazioni (int[]) e i seguenti metodi
d'istanza:
public Opera (String titolo, int anno, int durata): crea un oggetto di tipo
Opera ed assegna a ciascun campo dati il valore del parametro omonimo. In
caso durata <= 0, o anno < 1900, il costruttore lancia un’eccezione
accompagnata da un opportuno messaggio di errore, distinguendo i due casi.
public String getTitolo() : che restituisce il titolo dell’opera;
public String getAnno() : che restituisce l’anno in cui l’opera e’ stata creata;
public int getDurata() : che restituisce la durata dell'opera in minuti;
public void aggiungiValutazione(int val) : aggiunge un giudizio della critica
sull’opera alla lista di valutazioni gia' presenti. Se val < 0 o val > 10, il
metodo deve lanciare un’eccezione di tipo Exception accompagnata da un
opportuno messaggio di errore. Il metodo deve occuparsi di ridimensionare
opportunamente il vettore dele valutazioni
public int valutazioneMedia() : ritorna la media aritmetica delle valutazioni
dell'opera;
public abstract void descrizioneOpera() : stampa una descrizione testuale
dell’opera. Nota: il metodo e' abstract: le classe figlie dovranno implementare
tale metodo.
Scrivere poi due classi Java (Traccia e Film) che implementano Opera.
Riguardo alla classe Traccia, essa presenta un campo privato autore
(Musicista), ed e' caratterizzata dal seguente costruttore:
public Traccia(String titolo, int anno, int durata, Musicista autore) : crea
un oggetto di tipo Traccia e assegna a ciascun campo dati della classe e della
superclasse il valore del parametro omonimo;
public Musicista getAutore() : che ritorna l'autore della traccia;
La classe Film presenta, invece, un campo privato colonnaSonora (Traccia[])
ed i seguenti metodi:
public Film(String titolo, int anno, int durata, Traccia[]
colonnaSonora, GenereFilm g) : costruttore a 5 elementi che crea
l'oggetto Film. Nel caso in cui l’anno di produzione di una delle tracce inserite
nella colonna sonora del film sia maggiore dell’anno di produzione del film, il
costruttore lancia un’eccezione accompagnata da un opportuno messaggio di
errore.
public Traccia[] getColonnaSonora() : metodo pubblico che ritorna la lista di
tracce che compongono la colonna sonora del film.
Aggiungere infine alla classe Attore un attributo privato che rappresenta la
lista di film in cui appare l’attore (Film[]) e due metodi d’istanza:
public void aggiungiFilm(Film f) : che preso in input un film f, lo aggiunge a
una lista interna di film dell’Attore. In caso tale film sia già presente nella lista
(confrontando titolo ed anno dei film 'manualmente' di volta in volta, o
facendo override del metodo equals di Film), o se l’anno di inizio carriera
dell’attore sia maggiore dell’anno di produzione del film, lanciare un’eccezione
con appropriato messaggio d'errore;
public Film[] getFilm() : che ritorna la lista di film in cui compare l'attore.