1 Catena di officine, versione 2

Documenti analoghi
ESERCITAZIONE PREPARAZIONE ALL ESAME,

ESERCITAZIONE PREPARAZIONE ALL ESAME,

Corso di Progettazione del Software

Progetto PI , passo A.1 versione del 16 marzo 2007

Progetto E versione del 12 marzo 2007

la città in cui si svolgono, nonché il motivo della variazione di città.

Progetto PI , passo A.3 versione del 28 marzo 2007

Corso di Progettazione del Software

CORSO I.F.T.S. "TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE. Matricola 2014LA0033 DISPENSE DIDATTICHE MODULO DI PROGETTAZIONE SOFTWARE

Fase di Analisi Class Diagram. Esercizi

Fase di Analisi Class Diagram. Esercizi

Progettazione del Software, Laurea in Ingegneria Gestionale Progettazione del Software Laurea in Ing. Gestionale

Progetto PI , passo A.3 versione del 6 febbraio 2007

Progettazione del Software

Progettazione del Software

Progetto PI , passo A.1 versione del 6 febbraio 2007

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

Progetto PI , passo A.1 versione del 10 aprile 2007

Progettazione del Software

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Progettazione del Software

Progettazione del Software

Progetto PI , passo A.2 versione del 10 aprile 2007

Corso di Progettazione del Software

11 31 MAGGIO 2009 REGOLAMENTO

Progetto PC versione del 11 luglio 2007

TeamORG. Gestione Eventi

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza Facoltà di Ingegneria

Federazione Italiana Pallavolo Comitato Territoriale Abruzzo Sud Est

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Esercizio 1: un semplice schema concettuale. Descrivere lo schema concettuale della seguente realtà:

Corso di Progettazione del Software

NUMERO DI SERVIZIO:

CORSO I.F.T.S. "TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE. Matricola 2014LA0033 DISPENSE DIDATTICHE MODULO DI PROGETTAZIONE SOFTWARE

Basi di Dati 1! Esercitazione 4. Matteo Picozzi!

Esercitazione 7 Progettazione concettuale

DESIGN PATTERN ESERCITAZIONE PREPARAZIONE ALL ESAME, PARTE II INGEGNERIA DEL SOFTWARE. La soluzione corretta è la c)

DELEGAZIONE DI BERGAMO GUIDA ALLA COMPILAZIONE DEI REFERTI ESORDIENTI E PULCINI

Laboratorio 8: Analisi di processo

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Esercizi. Esercizio 1

Progetto PI , passo A.2 versione del 6 febbraio 2007

Il PROCESSO UNIFICATO

Studente (Cognome Nome):

Progetto E versione del 12 marzo 2007

Basi di Dati - III. La costruzione di una base di dati. Progettazione concettuale di schemi. Esercizio: Segreteria studenti

Cosa fare una volta attivato IoMister sul Vostro computer

DELEGAZIONE DI BERGAMO GUIDA ALLA COMPILAZIONE DEI REFERTI ESORDIENTI E PULCINI

PROCEDURA PER L ISCRIZIONE DELLE SQUADRE AI CAMPIONATI A SQUADRE PROCEDURA ON LINE

UISP Emilia Romagna Biliardo

MINI GUIDA COMPILAZIONE REFERTI DI GARA CAMPIONATO UNDER /2019

Proff. Toni Mancini & Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza

INCENTIVO EXTRA 2012

DELEGAZIONE DI MONZA GUIDA ALLA COMPILAZIONE DEI REFERTI ESORDIENTI E PULCINI

QUANTO COSTA PARTECIPARE AL GIOCO FANTAPOLO ? L iscrizione è gratuita. L'unico costo è quello della tua connessione internet.

Under 16 Maschile. Spettabili Società Partecipanti al Campionato Under 16 Maschile Loro Indirizzi. Milano, 19 ottobre 2017 Prot. n.

Campionato Italiano a Squadre Under 16 Regolamento di attuazione 2019

FORMULE DI SVOLGIMENTO

Nel week-end del 2 e 3 Febbraio2019 il Campionato è sospeso per permettere lo svolgimento delle Selezioni Territoriali.

WINTER LEAGUE 2018 CAMPIONATO NAZIONALE GIOVANILE DI BASEBALL INDOOR - Girone NORD Categoria ALLIEVI

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza, Facoltà di Ingegneria

VALORI IN RETE. Risultati a.s. 2016/17 Progetti a.s. 2017/18 RISPETTO TIFO CORRETTO INCLUSIONE #FAIRPLAYCONTEST

COMUNICATO UFFICIALE N. 62/TB 16 GENNAIO 2017

ASP COSENZA Manuale prenotazione al cittadino

FEDERAZIONE ITALIANA HOCKEY E PATTINAGGIO COMMISSIONE DI SETTORE HOCKEY INLINE ROMA - VIALE TIZIANO,

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un negozio di libri online:

REGOLAMENTO TORNEO TENNIS

GUIDA ALLA COMPILAZIONE DEI REFERTI ESORDIENTI E PULCINI STAGIONE SPORTIVA

Campionato Italiano a Squadre Under 16 Regolamento di attuazione 2013

Capitolo 6. Esercizio 6.1

L organizzazione tecnica sarà affidata al Comitato Territoriale UISP di Cecina.

Manuale per la compilazione dei tabelloni nei tornei di Paddle

Basi di Dati - III. La costruzione di una base di dati. Progettazione concettuale di schemi. Esercizio: Segreteria studenti

FEDERAZIONE ITALIANA GIUOCO HANDBALL AREA NORD GUIDA ALLA COMPILAZIONE DEL REFERTO DI GARA

Soluzione Esercitazione 7 Progettazione concettuale

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

5 TORNEO CALCIO SAPONATO "MEMORIAL MICHELE SCARAMUCCI"

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Proff. Toni Mancini & Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza

REGOLAMENTI U.S.O. UNITED ASD

Il diagramma delle classi è raffigurato in Figura 1, insieme alla descrizione della responsabilità sulle associazioni.

Under 16 Maschile. Spettabili Società Partecipanti al Campionato Under 16 Maschile Loro Indirizzi. Milano, giovedì 13 ottobre 2016 Prot. n.

AREAS Accessi. Sistema Prenotazione Cittadino

Edizione

20 MEMORIAL DANILO VALLERINI

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Progettazione del Software

COMUNICATO UFFICIALE N. 49/TB 29 DICEMBRE 2017

CIRCOLARE TECNICA N /19 CHECKLIST PROCEDURE E CONTROLLI ARBITRALI

FAIR PLAY ESORDIENTI

STRUTTURA DELL ALLENAMENTO NOTE ORGANIZZATIVE GENERALI

A. Veneziani - Analisi DB Campionato ( Partite )

L ASD POLISPORTIVA SAMMARITANA e ACSI Indice ed Organizza il Campionato calcio a cinque 2015/2016

Trofeo Città di SESTO FIORENTINO

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria. Corso di INGEGNERIA DEL SOFTWARE (Ing. Informatica, Nuovo Ordinamento)

Insegnamento di Basi di Dati

MANUALE DEL REGISTRO ELETTRONICO CLASSEVIVA PER GENITORI E STUDENTI

INDIZIONE CAMPIONATO INVERNALE LIBV PLAY-OFF

Diagramma delle classi UML

Transcript:

Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di Progettazione del Software Proff. Toni Mancini e Monica Scannapieco Esercitazione E.A.3 (soluzione) 1 Catena di officine, versione 2 Con riferimento all esercizio Catena di officine dell Esercitazione E.A.2, segue la descrizione dei casi d uso del sistema. I dipendenti delle officine hanno il compito di registrare i dati dei veicoli in ingresso, di interrogare l archivio delle riparazioni da effettuare, di effettuarle e registrarne la terminazione, consegnando i veicoli riparati ai clienti. Tuttavia, per riparazioni particolarmente complesse, quest ultimo compito viene lasciato ai direttori, che provvedono al rilascio di una particolare garanzia ai clienti. Infine, i direttori devono avere la possibilità di interrogare ed eventualmente modificare i dati personali dei propri dipendenti, mentre un ufficio marketing, occupandosi delle varie comunicazioni ai clienti, deve poter accedere ai loro dati. Tracciare il diagramma degli use case per l applicazione. 1

E.A.3 (versione del 6 febbraio 2007) pag. 2

2 Campionato di calcio Si vuole progettare un sistema per la gestione di un campionato di calcio. Il sistema deve consentire la creazione del calendario delle partite e la designazione degli arbitri, con codice fiscale, nome, cognome e città di nascita (da parte della FIGC). Il calendario è composto da un certo numero gir di gironi, ognuno dei quali è composto da gio giornate, a loro volta composte da partite tra s squadre. Delle partite interessano il numero progressivo in schedina, la data, l arbitro designato, le squadre (casa e ospite) e il risultato finale (che l arbitro avrà il compito di memorizzare nel sistema, a fine gara). Ogni squadra ha un proprio allenatore che decide quali giocatori convocare per le varie partite (e per quali ruoli). Dei giocatori interessano codice fiscale, nome e cognome, età, ruolo standard, squadre in cui militano con data d inizio e hanno militato con data d inizio e fine. Si noti che un giocatore può essere impiegato anche per ruoli diversi dal suo ruolo standard. Delle squadre infine, interessano nome, città, regione, allenatore (codice fiscale, nome, cognome), età media dei loro giocatori, e numero di punti dopo ogni giornata. È facoltà della presidenza delle squadre acquistare e vendere giocatori o cambiare allenatore. Infine, la FIGC vuole poter ottenere la classifica e la schedina relativa alle diverse giornate. Tracciare il diagramma delle classi e degli use case per l applicazione. specifica delle classi e degli use case. Scrivere inoltre la E.A.3 (versione del 6 febbraio 2007) pag. 3

E.A.3 (versione del 6 febbraio 2007) pag. 4

Specifica degli use case InizioSpecificaUseCase GestioneCalcioMercato compra(g:giocatore, s:squadra, da:squadra, oggi:data) Pre: g, da Gioca e le precond. di s.compra(g, oggi) sono verificate. Post: Viene invocata l operazione s.compra(g, oggi). vendi(g:giocatore, s:squadra, a:squadra, oggi:data) Pre: g, s Gioca e le precond. di a.compra(g, oggi) sono verificate. Post: Viene invocata l operazione a.compra(g, oggi). cambiaallenatore(s:squadra, a:allenatore) Pre: a.allena = 0, ovvero a non allena attualmente alcuna squadra. Post: Il link s.allena viene sostituito da a, s. Di conseguenza, a diventa l allenatore della squadra s. FineSpecificaUseCase InizioSpecificaUseCase StampaClassificaESchedinaDaArchivio stampaclassifica(gd:giornatadisputata) : Lista( Squadra, intero 0) Pre: Quelle di gd.stampaclassif ica(). Post: result è pari a gd.stampaclassif ica(). stampaschedina(gd:giornatadisputata) : Insieme( P artitadisputata, {1, X, 2}) Pre: Quelle di gd : stampaschedina(). Post: result è pari a gd.stampaschedina(). FineSpecificaUseCase La specifica degli altri use case è lasciata per esercizio. E.A.3 (versione del 6 febbraio 2007) pag. 5

Specifica delle classi InizioSpecificaClasse Squadra compra(g:giocatore, oggi:data) Pre: g non fa attualmente parte della squadra this, ovvero, l eventuale link Gioca uscente da g non è relativo a this. In formule: g.gioca = 0 oppure g.gioca.squadra this. Post: Sia l l eventuale link Gioca uscente da g (ovvero l = g.gioca). Si ha che, se l esiste: l viene rimosso; viene creato un link l = g, l.squadra hagiocato tra g e l.squadra con l.datainizio = pre(l.datainizio) e l.dataf ine = oggi 1 giorno. In ogni caso: viene creato un nuovo link l = g, this Gioca tra g e this con l.datainizio = oggi. Di conseguenza il giocatore g passa (dalla sua eventuale vecchia squadra) a this a partire dal giorno oggi. etamedia(oggi:data) : reale > 0 Pre: Esiste almeno un link di tipo Gioca tra this e un oggetto di classe Giocatore, ovvero this.gioca 1. Post: Detto this.gioca l insieme di link di tipo Gioca relativi all squadra this, result è pari a (Σ (l this.gioca) l.giocatore.eta)/ this.gioca. FineSpecificaClasse InizioSpecificaClasse PartitaDisputata valoreschedina(): Pre: Nessuna 1,X,2 Post: Se this.goalcasa > this.goaltrasferta allora result = 1,... FineSpecificaClasse E.A.3 (versione del 6 febbraio 2007) pag. 6

InizioSpecificaClasse GiornataDisputata stampaschedina() : Insieme( P artitadisputata, {1, X, 2}) Pre: Nessuna Post: Sia P = {p P artitadisputata p, this in disputata} l insieme delle partite disputate nella giornata this. result è pari all insieme delle coppie p, p.valoreschedina(), per ogni p P. stampaclassifica() : Lista( Squadra, intero 0) Pre: Nessuna Post: Detto this.classifica l insieme dei link di tipo Classifica tra che coinvolgono this, result è pari alla lista delle coppie l.squadra, l.punti per ogni link l this.classif ica. Gli elementi della lista sono ordinati per valori decrescenti della seconda componente (punteggio). FineSpecificaClasse E.A.3 (versione del 6 febbraio 2007) pag. 7

3 Ristorante, versione 2 Con riferimento all esercizio Ristorante dell Esercitazione E.A.1, segue la descrizione dei casi d uso e delle operazioni del sistema. I camerieri, dotati di dispositivi palmari, hanno il compito di memorizzare le ordinazioni dei vari clienti, e di stilare il conto per i vari tavoli. Un responsabile delle prenotazioni ha il compito di prenotare i tavoli per i clienti che lo chiedono (ad es. per telefono), e di inserire i loro dati anagrafici (solo per i nuovi clienti). È facoltà di questi ultimi poter scegliere tavoli per fumatori o non-fumatori. I tavoli prenotati devono essere disponibili, ovvero non essere stati già prenotati per lo stesso giorno e nella fascia oraria che va da un ora prima ad un ora dopo quella richiesta. Si osservi che è previsto che le prenotazioni possano essere disdette, ma solo se non sono state ancora effettuate ordinazioni. All arrivo dei clienti, il responsabile delle prenotazioni assegna loro uno o più camerieri. Si vuole infine dare la possibilità al responsabile del personale di sapere quanti tavoli i vari camerieri hanno già servito nel giorno corrente, al fine di permettere un bilanciamento corretto del carico di lavoro tra di essi. Tracciare il diagramma degli use case per l applicazione. Scrivere inoltre la specifica dei suddetti use case. Riprogettare, se opportuno, il diagramma delle classi aggiungendovi operazioni, che vanno in tal caso specificate. Diagramma degli use case E.A.3 (versione del 6 febbraio 2007) pag. 8

Specifica degli use case InizioSpecificaUseCase GestionePrenotazione InserisciCliente(nome:String, tel:string) : Cliente Pre: Non esiste alcun oggetto Cliente con gli stessi valori per l attributo nome e tel Post: Viene creato un oggetto c di classe Cliente con c.nome = nome e c.tel = tel. result è pari a c. EffettuaPrenotazione(cliente:Cliente, data:data, ora:ora, npersone:intero> 0, smoking:bool) : Assegnazione Pre: Esiste un insieme T di oggetti di classe Tavolo tali che: Per ogni t T si ha che t.smoking è pari a smoking; Σ t T t.nump osti npersone; Per ogni t T si ha che non esistono link l t.usatoin tali che l.assegnazione.data = data ed l.assegnazione.ora appartiene all intervallo [ora (1 ora)..ora + (1 ora)]. Post: Vengono creati: un nuovo oggetto a Assegnazione, con a.giorno = data, a.ora = ora, a.nump ersone = npersone; il nuovo link cliente, a prenota; Detto T uno qualsiasi tra gli insiemi di oggetti della classe Tavolo che soddisfa i vincoli espressi nelle precondizioni e che minimizza il valore Σ t T t.nump osti, viene creato, per ogni t T, il link t, a usatoin. Si noti infine che a.serve = a.inconto = 0. result è pari ad a. DisdiciPrenotazione(pren:Assegnazione) Pre: pren.inconto = 0, ovvero non esistono link tra pren ed oggetti di classe Portata. Post: L oggetto this viene distrutto, e di conseguenza sono distrutti anche tutti i link delle associazioni serve, usatoin e prenota in cui pren è coinvolto. AssegnaCamerieri(ass:Assegnazione, camerieri:insieme(cameriere)) Pre: Nessuna Post: Per ogni oggetto c camerieri, viene creato, se non esiste già, il link ass, c serve. FineSpecificaUseCase E.A.3 (versione del 6 febbraio 2007) pag. 9

InizioSpecificaUseCase GestioneConto AggiungiPortata(ass:Assegnazione, portata:portata, n:intero > 0) Pre: Quelle di ass.aggiungiportatainconto(portata, n) Post: Viene invocata l operazione ass.aggiungiportatainconto(portata, n) Conto(ass:Assegnazione) : reale >= 0 Pre: Quelle di ass.conto() Post: result è pari a ass.conto() FineSpecificaUseCase InizioSpecificaUseCase GestioneRisorse QuantiTavoliOggi(c:Cameriere, oggi:data):intero >= 0 Pre: Quelle di Cameriere.quantiTavoliOggi() Post: result è pari a c.quantitavolioggi(oggi) FineSpecificaUseCase E.A.3 (versione del 6 febbraio 2007) pag. 10

Riprogettazione del diagramma delle classi Visual Cliente Paradigm for UML Community Assegnazione Edition [not for commercial use] -nome : Stringa 1 -tel : Stringa prenota > -data : Data -ora : Ora -numpersone : intero>0 +conto() : reale>=0 +aggiungiportatainconto() inconto -quant : intero>0 Portata -nome : Stringa -prezzo : reale>0 Tavolo -numposti : intero>0 -smoking : booleano 1..* usatoin > 1..* serve > Cameriere -nome : Stringa -anniserv : intero> = 0 +quantitavolioggi() : intero>=0 Per compattezza, sono state omesse le segnature complete delle operazioni Specifica delle classi InizioSpecificaClasse Assegnazione aggiungiportatainconto(portata:portata,n:intero > 0) Pre: Nessuna Post: Se l = this, portata inconto (ovvero la portata portata è tra quelle già ordinate), questo viene creato, con l.quant = n. Altrimenti (il link l esiste), l.quant = pre(l.quant) + n. conto():reale Pre: Nessuna Post: Detto this.inconto l insieme dei link di tipo InConto che coinvolgono this, result è pari a Σ l this.inconto (l.p ortata.prezzo l.quant) FineSpecificaClasse E.A.3 (versione del 6 febbraio 2007) pag. 11

InizioSpecificaClasse Cameriere quantitavolioggi(oggi:data):intero >= 0 Pre: Nessuna Post: Sia L oggi l insieme dei link di tipo serve che coinvolgono this relativi alla data oggi, ovvero: L oggi = {l this.serve l.assegnazione.data = oggi}. result = Σ l Loggi l.assegnazione.usatoin, dove l.assegnazione.usatoin è il numero di link di associazione usatoin che l oggetto di classe Assegnazione relativo al link l ha con oggetti della classe Tavolo. FineSpecificaClasse E.A.3 (versione del 6 febbraio 2007) pag. 12