Laboratorio di Programmazione

Esercizi sull'Uso delle Classi e l'Ereditarietà


Esercizio 1: Array di Figure Polimorfo.

Scrivere la classe ReadArrayOfShapes che permetta di introdurre da tastiera le figure che compongono un array di Shape di 15 elementi. Dopo aver letto le figure, usare il metodo draw() per stampare l'array contenente le figure lette.

L'introduzione delle singole figure deve permettere di scegliere quale figura introdurre e quindi adeguare le proprie richieste di conseguenza. I dati introdotti da tastiera saranno quindi usati per instanziare la figura corrispondente.

Esempio di esecuzione:

Shape 1 (Circle [C], Square [S] or Rectangle [R]): R
Shape 1 is a Rectangle, please introduce:
Height: 25
Width: 7
Shape 2 (Circle [C], Square [S] or Rectangle [R]): C
Shape 2 is a Circle, please introduce:
Ray: 3.14
...

Shape 15 (Circle [C], Square [S] or Rectangle [R]): **S**
Shape 15 is a Square, please introduce:
Side: 2.83

[01] I'm a Rectangle! My sides are: 25.0,7.0
[02] I'm a Circle! My ray is: 3.14

...

[15] I'm a Square! My side is: 2.83

Notare che il metodo draw() fornito si limita a visualizzare la stringa "I'm a ..." la numerazione dipende dal vostro programma. Inoltre le cifre e le lettere che nell'esempio appaiono dopo i due punti sono introdotte da tastiera durante l'esecuzione.

Esercizio 2: Ricerca per Area.

Riprendere il codice della classe ReadArrayOfShapes dell'esercizio 1 ed usarlo per scrivere la classe SearchAShape che:

Nota: usare la classe Arrays vista a lezione per ordinare l'array (sort()) e per effettuare la ricerca (binarySearch()).

Esercizio 3: Ordinamento Manuale.

Considerare l'algoritmo di BubbleSort visto nella settima lezione. Scrivere la classe SortArrayOfShapeByPerimeter che adatti il BubbleSort ad ordinare in maniera decrescente (dal più grande al più piccolo) un array di Shape considerando il perimetro (metodo getPerimeter()) anziché l'area.

Nota: l'array è inizializzato direttamente nel main() e non si potrà far uso dei metodi della classe Arrays perché il metodo compareTo() fornito da Shape confronta le aree e non i perimetri.

Walter Cazzola

Didactics

Publications

Funded Projects

Research Projects

Related Events








Valid XHTML 1.0 Transitional