Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE … · Voglio un programma per gestire i...

41
ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA Prof. Pagani Corrado

Transcript of Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE … · Voglio un programma per gestire i...

ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Prof. Pagani Corrado

ES 02 - ORGANIZER

Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono durante la giornata lavorativa.

Realizzare il diagramma UML delle classi e [DIFFICILE] un’applicazione di test che permetta di istanziare un dipendente, aggiungere alcune attività lavorative e calcolare il numero totale di ore svolte dal dipendente

DIAGRAMMA UML DELLE CLASSI

….

STRUTTURA DELL’APPLICAZIONE

• Creo 2 classi con la logica del programma AttivitaLavorativa Dipendente

• Creo una classe con l’interfaccia grafica Jframe AbsoluteLayout Controlli grafici

CLASSE ATTIVITÀ LAVORATIVA

Non mi servono funzioni particolari creo attributi richiesti e costruttore standard Decido di tenere gli attributi Public per non dover

creare i metodi GET e SET

CLASSE DIPENDENTE Attributi Costruttore che

istanzia un vettore di massimo 1000 attività lavorative

Metodi per Aggiungere una

nuova attività (si noti che le attività vengono memorizzate in sequenza utilizzando la prima posizione vuota con valore null)

Calcolare il numero totale di ore

INTERFACCIA GRAFICA

tbNome

tbCognome

tbDataNascita

tbLuogoNascita

tbDataAttivita tbOreAttivita

tbDesc

tbOutputOre

CLASSE DELL’INTERFACCIA GRAFICA

Gestione Evento Button CREA DIPENDENTE

Leggo i dati dalla text field e passo quanto letto al costruttore per instanziare un nuovo dipendente

CLASSE DELL’INTERFACCIA GRAFICA

Gestione Evento Button CARICA ATTIVITA’

Leggo i dati dalle text field e passo quanto letto al costruttore per instanziare una nuova attività lavorativa successivamente aggiungo l’attività lavorativa al dipendente richiamando il metodo addAttivita

Si noti che la variabile mioDipendente è un attributo della mia classe che eredita la JFrame e pertanto è visibile ovunque all’interno della classe

CLASSE DELL’INTERFACCIA GRAFICA

Gestione Evento Button CALCOLA NUMERO ORE

Semplicemente richiamo il metodo getNumTotOredalla mia variabile locale mioDipendente nella quale ho precedentemente caricato i dati del dipendente e delle attività.

ES 03 – FLUSSI DI CASSA

Voglio un programma a cui può accedere un solo utente per memorizzare e gestire i flussi di cassa di una ditta

Realizzare il diagramma UML delle classi e un’applicazione di test che permetta di istanziare una transazione, aggiungere l’acquisto di servizi alla transazione e calcolare costo totale della transazione stessa

Svolgimento analogo a Caso Aziendale 02

ES 04 – CATALOGO ONLINE

Voglio ampliare il mio sito web, mostrando il mio intero catalogo prodotti con funzioni di ricerca avanzate

Realizzare il diagramma UML delle classi e [FACILE] un’applicazione di test che permetta di

istanziare un prodotto calcolando il prezzo ivato e scontato

[DIFFICILE] un’applicazione di test che permetta di istanziare un prodotto inserendo alcuni prodotti correlati. Scrivere in output l’elenco dei prodotti correlati con il relativo prezzo tra parentesi e il totale se si dovessero acquistare tutti.

DIAGRAMMA UML DELLE CLASSI

STRUTTURA DELL’APPLICAZIONE

SVOLGIAMO L’ESERCIZIO FACILE• Creo 2 classi con la logica del programma Prodotto Categoria

• Creo una classe con l’interfaccia grafica Jframe AbsoluteLayout Controlli grafici

CLASSE CATEGORIA

L’attributo categoriaPadre memorizza l’eventuale categoria contenitore in modo da gestire un diagramma ad albero delle categorie (non serve per lo svolgimento del nostro esercizio).

CLASSE PRODOTTO Attributi Costruttore che istanzia un

vettore di massimo 1000 prodotti correlati

Metodi per Aggiungere un nuovo

prodotto correlato (non serve per l’esercizio facile)

Calcolare il prezzo ivatonon scontato

Calcolare il prezzo scontato (richiamando il metodo per calcolare il prezzo intero)

Funzione di stampa dei prodotti correlati (non riportata nelle schermata – non serve per l’esercizio facile)

INTERFACCIA GRAFICA

tbNome

tbIva

tbPrezzo

tbSconto

tbPrezzoIntero

tbPrezzoFinale

CLASSE DELL’INTERFACCIA GRAFICA

Gestione Evento Button CALCOLA

Leggo i dati dalla text field e passo quanto letto al costruttore per instanziare un nuovo PRODOTTO

Una volta instanziato scrivo in output i valori calcolati dai metodi getPrezzoInteroIvato getPrezzoScontato

ESECUZIONE DELL’APPLICAZIONE

ES 05 – GESTIONE MAGAZZINI

Voglio un programma per gestire i magazzini della mia azienda che vende materiale al cliente finale in alcuni negozi della mia regione

Realizzare il diagramma UML delle classi e [FACILE] un’applicazione di test che permetta di

istanziare una giacenza prodotto e il valore totale dei pezzi di quel prodotto in giacenza in base al prezzo di vendita e di acquisto

[DIFFICILE] un’applicazione di test che permetta di istanziare un magazzino ed alcune giacenze di prodotti. Calcolare per il magazzino il numero di prodotti (codice prodotto) ed il numero di pezzi effettivi (considerare che per un codice prodotto possono essere presenti + pezzi).

DIAGRAMMA UML DELLE CLASSI

Ogni magazzino ha diverse giacenze (ossia prodotti fisici presenti in magazzino con una certa quantità). Un singolo modello di prodotto (classe Prodotto) può essere presente in tanti magazzini.

Modelliamo un magazzino avente un array di giacenze come attributo, ciascuna giacenza conterrà un unico prodotto come attributo

STRUTTURA DELL’APPLICAZIONE

SVOLGIAMO SIA L’ESERCIZIO FACILE SIA QUELLO DIFFICILE• Creo 3 classi con la logica del programma Prodotto GiacenzaMagazzino

• Creo una classe con l’interfaccia Grafica per ciascuno dei 2 esercizi Jframe AbsoluteLayout Controlli grafici

INTERFACCIA GRAFICA

tbNomeProdotto

tbIvaPerc

tbPrezzoVendita

tbPrezzoAcquisto

tbValoreVendita

tbValoreAcquisto

CLASSE PRODOTTO Recupero apportando minime modifiche la classe prodotto

utilizzata nel caso aziendale 04

CLASSE GIACENZA Inserisco un

attributo di tipo Prodotto che chiamo prodotto (sfruttando il fatto che il linguaggio sia case sensitive).

Implemento i metodi getValoreAcquistoGiacenza e getValoreVenditaGiacenza

CLASSE MAGAZZINO Inserisco un array

di giacenze. Implemento i

metodi che permettono di inserire una nuova gaicenza prodotto in magazzino e il metodo che calcola il numero di pezzi in magazzino

CLASSE DELL’INTERFACCIA GRAFICA

Gestione Evento Button btCreaProdottoGiacenza

Leggo i dati dalla text field e passo quanto letto al costruttore per instanziare un nuovo PRODOTTO

Appena creato il prodotto, passo il mio prodotto instanziato (insieme alla quantità) al costruttore della mia Giacenza

Richiamo i metodi del mio oggetto giacenza per ottenere i risultati

ESECUZIONE DELL’APPLICAZIONE

SVOLGIMENTO ESERCIZIO DIFFICILE

Cambio solo la classe dell’interfaccia grafica perché avevo già preimpostato tutti i metodi necessari

EVENTO BUTTO AGGIUNGI MAGAZZINO

Inserisco un attributo di tipo Magazzino di nome mioMagazzino

EVENTO BUTTON AGGIUNGI GIACENZA

Inserisco la giacenza come prima e alla fine ripulisco le caselle di testo per poter inserire una nuova giacenza

EVENTO BUTTON CALCOLA NUMERO PEZZI

Devo solo richiamare il metodo appropriato del mio oggetto Magazzino precedentemente riempito

Si noti che tutte le classi GIACENZA – PRODOTTO –MAGAZZINO sono rimaste invariate e sono riusabili Per risolvere l’esercizio semplice non era necessario

implemenataRe la classe magazzino, ma solo GIACENZA e PRODOTTO

CASO AZIENDALE 10 – DA SVOLGERE

Voglio un programma che mi gestisca le iscrizioni ai corsi di nuoto che organizza la mia associazione

Realizzare il diagramma UML delle classi e [FACILE] un’applicazione di test che permetta di istanziare

un atleta ed indicare (calcolando l’età sulla base dell’anno di nascita) lo sconto percentuale che ottiene (un 5% per ogni anno sotto i 18 fino ad un massimo del 40%)

[DIFFICILE] un’applicazione di test che permetta di istanziare un atleta e i corsi a cui ha partecipato calcolando il numero di corsi e il nmero totale di lezioni di tutti i corsi.

CASO AZIENDALE 11 – DA SVOLGERE

Voglio un programma che mi gestisca le ordinazioni per la cucina e l’emissione di scontrini/fatture del mio ristorante

Realizzare il diagramma UML delle classi e [FACILE] un’applicazione di test che permetta di

istanziare un tavolo ed il totale di piatti ordinati [DIFFICILE] un’applicazione di test che permetta di

istanziare un tavolo e il conto finale indicando per ciascun piatto o coperto ordinato il numero di ordinazioni (che saranno poi moltiplicate per il relativo prezzo unitario).

ESERCIZI SVOLTI IN CLASSE – 1

TOUR DE FRANCE Voglio un programma per la gestione delle tappe di un

grande tour ciclistico (giro d'Italia – tour de France etcx...); della manifestazione interessa il nome, l'anno, l'organizzatore ed il vincitore. Ogni tappa è caratterizzata da numero Km, data, città di partenza, arrivo e un indice di difficoltà altimetrica.

Realizzare il diagramma UML delle classi Realizzare una applicazione di test (preferibilmente con

interfaccia grafica JFRAME) che mi indichi il numero di tappe ed il numero totale di Km che dovranno essere percorsi in tutto il tour

FACOLTATIVO: date due date determinare il numero di tappe e Km che saranno percorsi nell’intervallo tra quelle due date

ESERCIZI SVOLTI IN CLASSE – 2

GESTIONE FILM Voglio un programma per la gestione del catalogo film della mia videoteca. Di

ogni film mi interessa anno di uscita, titolo, genere, nazione di produzione, regista e attori principali. Degli attori mi interessa Nome, cognome data di nascita, luogo di nascita e sesso. Siccome mi interessa sviluppare una statistica sulla percentuale di attori maschi e percentuale di attrici femmine presenti nei film che ho in catalogo, mi interessa sviluppare per ogni film (oltre alla funzione che mi restituisce il numero totale di attori coinvolti) una funzione che mi restituisca la percentuale di attori maschi e conseguentemente la percentuale di attrici femmine.

1. Realizzare il diagramma UML delle classi2. Realizzare una applicazione di test (preferibilmente con interfaccia grafica

JFRAME) che mi indichi il numero di attori del film caricato, e la percentuale di attori maschi e percentuale di attori femmine.

3. FACOLTATIVO: Stampare in sequenza tutti gli attori maschi in una casella di testo e stampare in sequenza tutte le attrici femmine

ESERCIZI SVOLTI IN CLASSE – 3 PARTITE DI BASKET Si vogliono memorizzare i dati delle prestazioni nelle partite di campionato dei giocatori di una

squadra di basket. Per ogni partita di un giocatore si vogliono memorizzare i seguenti dati al fine di calcolarne la

VALUTAZIONE e altre statistiche (i dati possono essere generati anche in maniera random tra gli estremi indicati): tiri da 1 realizzati (tra 0 e 15) tiri da 1 sbagliati (tra 0 e 15) tiri da 2 realizzati (tra 0 e 10) tiri da 2 sbagliati (tra 0 e 10) tiri da 3 realizzati (tra 0 e 8) tiri da 3 sbagliati (tra 0 e 9) assist (tra 0 e 10) rimbalzi (tra 0 e 10) stoppate (tra 0 e 10) stoppate subite (tra 0 e 10)

Per ogni prestazione occorre calcolare il totale dei punti realizzati, e la valutazione che è un indice di prestazione così calcolabile: Vengono sommati:punti + assist + rimbalzi + stoppate Sono invece sottratti: tiri sbagliati + stoppate subite

ESERCIZI SVOLTI IN CLASSE – 4

GESTIONE VOTI SCOLASTICI Realizzare un programma con interfaccia grafica che gestisca le

seguenti classi: Persona Classe Insegnante Studente Valutazione

Permettere per la classe la creazione di valutazioni random(scegliendo random anche l'insegnante e lo studente).

Creare un metodo per il calcolo in tempo reale dellA media voti degli studenti della classe

ESERCIZI SVOLTI IN CLASSE – 5

REALIZZAZIONE GRAFO Realizzare un programma per la creazione di un grafo

che permetta l’inserimento dei nodi e il conseguente inserimento degli archi.

Gli archi saranno inseriti selezionando il nodo di partenza e di arrivo tramite due comboBox Si noti che i nodi che sono attributi dell’arco non dovranno

essere creati, ma si gestiranno solo i puntatori a nodi già esistenti

La classe Nodo dovrà ereditare la classe punto che ha come attributi le 2 (o 3 nello spazio) coordinate

Il programma comunicherà in output il numero di nodi e archi creati

ESERCIZI PER CASA – 1

GUIDA ONLINE PER UN MUSEO Gestire le classi museo, opera esposta interattiva (che eredita

opera), stanza. Ogni opera sarà identificata da un autore, anno etc…., Ogni opera interattiva avrà in aggiunta una descrizione per il visitatore,

un qrCode che rimanda alla sua pagina web Ogni opera interattiva ha un elenco di opere collegate

Si noti che il museo contiene stanze che a loro volte contengono le opere

Si realizzi il diagramma UML delle classi e un programma con interfaccia grafica che permetta di inserire stanze e opere e che per ogni stanza (selezionata tramite comboBox) indichi quante opere vi sono contenute quante sono le opere collegate alle opere contenute nella stanza nel

complesso

ESERCIZI PER CASA – 2

CANALE TELEVISVO Gestire la classi CANALE, PROGRAMMA TV, PUNTATA, AUTORI

Il canale contiene tanti programmi TV Il programma tv ha un titolo, elencoAutori, anno, elencoPuntate … La puntata ha una durata, una data e orario di messa in onda, una

percentuale di shareTV

Realizzare il diagramma UML e un programma che permetta di inserire un CANALE e alcuni programmi TV; selezionando il programma TV da comboBOX sarà poi possibile inserire le puntate con i relativi attributi.

Determinare il numero medio di puntate per tutti i programmi e la media di share tra tutte le puntate di tutti i programmi.