Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE … · Voglio un programma per gestire i...
Transcript of Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE … · Voglio un programma per gestire i...
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
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.
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)
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
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
SVOLGIMENTO ESERCIZIO DIFFICILE
Cambio solo la classe dell’interfaccia grafica perché avevo già preimpostato tutti i metodi necessari
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.