Esercizi
Transcript
Esercizi
Capitolo 2 Dall’idea al codice con UML 2 Esercizi introduttivi Obiettivo Identificare le classi per risolvere il problema proposto 1. Valutazione di polinomi Un polinomio, identificato da una lettera minuscola dell’alfabeto, è dato dalla somma di uno o più monomi. Un monomio è caratterizzato da un segno, un coefficiente e un grado. Il programma deve leggere il nome del polinomio p e il valore della variabile per il quale si vuole calcolare il valore di p. Valutazione di polinomi Ad esempio, dato il polinomio f: 3x4-5x3+2x+1, l’utente deve inserire da tastiera f2 e il programma deve stampare 13, poiché f(2)= 3 * 24 - 5 * 23 + 2 * 2 + 1. Manca qualcosa? Forse manca un parametro del costruttore Polinomio, quello relativo al nome (che è un singolo carattere), a meno che tale nome non sia scelto dall’applicazione 2. CAD tridimensionale L’applicazione permette di gestire un modello tridimensionale composto da una serie di oggetti. Ogni oggetto è caratterizzato da una posizione tridimensionale, da un colore e da un materiale. Esistono tre oggetti di base: sfere, parallelepipedi e tetraedri. CAD tridimensionale È altresì possibile avere oggetti complessi composti da un insieme di oggetti (a loro volta complessi o di base). Ad esempio, due sfere potrebbero creare un rudimentale “pupazzo di neve”. CAD tridimensionale (cont.) Deve essere possibile la creazione di oggetti complessi, l’aggiunta di nuovi elementi a un oggetto complesso, l’aggiunta di nuovi oggetti al modello tridimensionale, lo spostamento di oggetti e la loro rotazione rispetto a un asse (x, y, o z). Vincoli aggiunti esplicitamente dal libro di testo • I parallelepipedi hanno sempre le facce parallele ai piani cartesiani • Il triangolo di base dei tetraedri è sempre equilatero e (posto su un piano) parallelo a uno dei piani identificati dagli assi cartesiani Vincoli aggiunti implicitamente dal libro di testo • Gli spostamenti degli oggetti possono avvenire solo parallelamente a un asse • Le rotazioni possono essere solo di 180° Manca qualcosa? Sì, perché il tetraedro non è univocamente definito; è necessario aggiungere questo vincolo: Ogni tetraedro • è regolare • il suo triangolo di base ha un lato parallelo a un asse dato • tale lato ha una distanza da suddetto asse minore rispetto a quella del vertice opposto Di conseguenza Un’istanza di Tetraedro necessita dell’indicazione di due assi (uno parallelo all’altezza, l’altro parallelo al lato del triangolo che costituisce la base) È necessario aumentare a 2 la molteplicità dell’attributo asse della classe Tetraedro Inoltre Perché a un oggetto composto corrisponde una posizione tridimensionale? Il costruttore OggettoComposto non riceve alcun parametro al fine di inizializzare la stessa È opportuno ridurre a 0 l’estremo inferiore della molteplicità dell’associazione posizione fra le classi Oggetto e Posizione3D Analogamente Perché un oggetto composto deve ereditare gli attributi colore e materiale? Il costruttore OggettoComposto non riceve alcun parametro al fine di inizializzare gli stessi Infine • L’operazione aggiungi della classe astratta Oggetto viene sovrascritta nella classe concreta OggettoComposto. Anche le operazioni sposta e ruota devono essere sovrascritte: perché invece non compaiono in OggettoComposto? 0..1 [2] 3. Rivendita di auto usate Un automezzo viene identificato dalla targa, dal numero di telaio e da un certo numero di caratteristiche specifiche, quali il colore, la cilindrata, il tipo di carburante e gli optional. Rivendita di auto usate Ogni automezzo è caratterizzato da una “carta di identità” che definisce l’anno di immatricolazione, il numero di chilometri e la data dell’ultima revisione. Il sistema gestisce anche camion e van, che si differenziano dalle automobili per la capacità di carico (quintali o persone). Rivendita di auto usate (cont.) Il sistema cataloga anche i clienti, con le solite caratteristiche: nome, cognome, indirizzo e codice fiscale. Un cliente può stipulare uno o più contratti per acquistare uno o più automezzi. Rivendita di auto usate (cont.) Ogni contratto deve avere una data di stipula, un ammontare, una data di inizio validità ed eventuali dilazioni di pagamento pattuite tra le parti. Il sistema deve anche gestire lo storico dei diversi automezzi, cioè la storia del mezzo che contiene tutti i passaggi di proprietà noti al rivenditore. *