Progettazione del Software - A.A. 2008/09

Esercitazione 2

Esercizio 1.

Gli oggetti di classe Pesce sono caratterizzati da: Alcuni pesci, Salmone, PescePalla, PesceGatto, sono particolari.

Parte 1.

Realizzare la classe Pesce ed una classe ServizioMari contenente un metodo statico: Pesce[] pescaMare(Pesce[] a) che, dato un array a di oggetti di classe Pesce, restituisce un nuovo array contenente tutti gli esemplari di mare contenuti in a. Inoltre, realizzare una classe ClienteMare contenente un opportuno metodo main che sia cliente di entrambe le classi Pesce e ServizioMari. Quindi compilare, eseguire e verificare la correttezza del codice prodotto.

Parte 2.

Realizzare le classi Salmone, PescePalla e PesceGatto, secondo le specifiche sopra riportate.

Parte 3.

Modificare il metodo main() della classe ClienteMare, facendogli:
  1. costruire un array, pesci, di oggetti di classe Pesce, contenente esempi di istanze di tutte le classi della gerarchia appena realizzata (ovvero Pesce, Salmone, PescePalla, PesceGatto),
  2. costruire, da pesci, un nuovo array pesciMare contenente solo i pesci di mare contenuti anche in pesci (comportamento analogo a pescaMare());
  3. scorrere l'array pesci, stampandone per ciascun elemento: nome, peso, colore e stringa rappresentativa dello stile di nuotata.

Esercizio 2.

Si vuole realizzare un software per calcolare il numero di mattonelle necessarie alla copertura di pavimenti. Ciascuna Mattonella è caratterizzata da Esistono tre tipi di mattonelle: triangolari equilatere (prezzo unitario: 1,5), quadrate (prezzo unitario: 1,8) e rettangolari (prezzo unitario: 2,1). Una mattonella triangolare è caratterizzata dalla lunghezza di un suo lato (float), mentre quelle rettangolari sono caratterizzate dalla lunghezza della base e dall'altezza. Ovviamente, una mattonella quadrata è anche rettangolare. Ciascuna mattonella ha una propria formula per il calcolo dell'area e del perimetro, che dipende dalla sua forma.

Giustapponendo mattonelle dello stesso tipo, si crea il pavimento. A causa della forma delle mattonelle, è possibile (e molto frequente) che la superficie creata con le mattonelle sia leggermente maggiore di quella che si vuole ricoprire.

Parte 1.

Realizzare la classe astratta Mattonella ed una classe Architetto contenente i seguenti metodi pubblici statici: Verificare che il codice compili correttamente.

Parte 2.

Realizzare le classi MattonellaTriangolare, MattonellaRettangolare, MattonellaQuadrata (con opportuni costruttori che inizializzano la lunghezza dei lati forniti in input ed il prezzo unitario come specificato sopra) ed una nuova classe AppMattone con metodo main() che fornisca un esempio di istanziazione di ciascuna classe derivata da Mattonella e di invocazione dei metodi quantoCosta(), quantiScarti(), quanteFughe() della classe Architetto, con gli oggetti istanziati precedentemente forniti in input (oltre a valori delle superfici scelti arbitrariamente).
Torna alla Home Page delle esercitazioni.