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

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

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

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

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

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Informatica

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

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

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Programmazione con Java

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Corso di Reti di Calcolatori L-A

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Introduzione Programmazione Java

Programmazione ad oggetti

Quadrato Magico. Fondamenti di Programmazione

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Esercitazione n 2. Obiettivi

Client - Interfaccia - Implementazione

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Gestire le Proposte di Vendita

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Progettazione del Software

Informazioni sull esame e Regole per lo svolgimento dei progetti

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

L ALLOCAZIONE DEI COSTI GENERALI CON MICROSOFT EXCEL

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Progettazione del Software

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fiat Group Purchasing Supplier Quality SQP Manuale Utente Versione 1, Novembre 2008

Fondamenti di Informatica T-1 Modulo 2

Introduzione al C++ (continua)

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

4. I moduli in Access 2000/2003

Basi di Dati. JDBC - Esercitazione n. 4 Quaderno n. 4. Passi preliminari per lo svolgimento delle esercitazioni

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Algoritmi di Ricerca. Esempi di programmi Java

Politecnico di Milano

Titoli azionari. Fondamenti di Programmazione

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

ESERCIZIO 1 (FILE DI TESTO)

Esercitazione 11. Liste semplici

Prova d Esame Compito A

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

UML I diagrammi implementativi

Richiami di Fondamenti di Informatica - 1

SOMMARIO. DIAGRAMMI DI ATTIVITÀ INGEGNERIA DEL SOFTWARE Università degli Studi di Padova. Introduzione. Concetti base.

Esempio su strutture dati dinamiche: ArrayList

WebDisk. TeamPortal - WebDisk

Passare argomenti al programma

Programmazione a oggetti

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Lezione 6 programmazione in Java

WORD PROCESSING.

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

24 - Possibili approfondimenti

Guida all installazione del software GestAgenzia. 1.1 Introduzione al software. 1.2 Requisiti minimi hardware e software

Introduzione a Matlab

Java: Definire Classi e Creare Oggetti

Introduzione alla Programmazione in Java attraverso un esempio commentato

Algoritmi di Ricerca. Esempi di programmi Java

Documenti --> Annulla

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Fondamenti di Informatica T-1

Microsoft Excel II parte Import di dati & Funzioni predefinite

Corso di Reti di Calcolatori L-A

2.4. Creare ed operare con le query

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Esempio su strutture dati dinamiche: ArrayList

PORTALE GRUPPO AZIENDALE

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

SOMMARIO DIAGRAMMI DI ATTIVITÀ INGEGNERIA DEL SOFTWARE. Introduzione. Concetti base. Introduzione. Concetti base

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

U88 Automatico. Versione 3.0

14 - Metodi e Costruttori

Fondamenti di Informatica T-1 Modulo 2. Obiettivo di questa esercitazione. Files Allocazione dinamica della memoria

Fondamenti di Informatica T1 Mappe

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

data: 26/04/05 versione: 0.3

C: panoramica. Violetta Lonati

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Progetto E versione del 12 marzo 2007

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

TIPI PRIMITIVI E CLASSI WRAPPER

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D.

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

C3 IL DBMS MICROSOFT ACCESS

Funzioni, Stack e Visibilità delle Variabili in C

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

Transcript:

SAPIENZA Università di Roma Facoltà di Ingegneria - Corso di Laurea in Ingegneria Informatica Corso di Progettazione del Software A.A. 2008/2009 Prova al calcolatore (riveduta) del 5 giugno 2009 L applicazione da progettare riguarda la gestione dei terremoti che possono verificarsi in una data zona. L applicazione ha lo scopo di eseguire un insieme di attività, in un dato ordine, con le seguenti finalità: dare il primo supporto alle popolazioni colpite, salvare le persone intrappolate negli edifici, dirigere le persone verso ospedali più vicini, effettuare una prima analisi sull agibilità degli edifici. La zona da supervisionare è divisa in aree, ciascuna contenente un insieme di edifici, alcuni dei quali sono ospedali. Di ciascun edificio, in ciascuna area, viene fatto un sopralluogo, per valutarne l agibilità e determinare il numero di persone che vi sono all interno. Le persone rimaste negli edifici sono suddivise in superstiti e vittime. Un supertite può essere ferito, nel qual caso viene trasportato in un ospedale. Una persona è considerata ferita se è stata ricoverata in qualche ospedale. Il processo di supervisione prevede che un operatore della Protezione Civile inserisca le informazioni sulle aree colpite, che vengono memorizzate nel sistema. Successivamente, viene gestita l emergenza nelle diverse aree. Per velocizzare le operazioni, le aree possono essere gestite in parallelo da diversi operatori. Inizialmente, l operatore addetto, non appena è in grado di gestire una certa area, inserisce la lista degli edifici da controllare. Successivamente, viene effettuato il sopralluogo di ogni edificio, valutandone l agibilità, determinando i relativi superstiti e vittime ed, eventualmente, decidendo presso quali ospedali ricoverare i feriti. La Protezione Civile è, inoltre, interessata a calcolare alcune statistiche, in particolare: il rapporto vittime/superstiti ed il rapporto feriti/persone (opportunamnete realizzate all interno di un attività). Il diagramma delle classi è raffigurato in Figura 1, insieme alla descrizione della responsabilità sulle associazioni. Associazio ne Classe Res p. Contiene Area SI Edificio SI Collocazione Edificio SI Persona SI Ricovero PersonaSuperstite SI Ospedale NO Figura 1: Diagramma delle Classi e relative Responsabilità

Area inserita Inserisci le informazioni sulle aree Aggiorna le informazioni sulle aree Generate tante instanze del sotto-ramo quante sono le aree Gestione di un area Inserisci il nome dell area di interesse Area inserita Calcola statistiche Area non inserita Visualizza statistiche Area non inserita Figura 2: Diagramma dell attività principale Tutte le istanze delle classi del diagramma UML vengono inserite in memoria attraverso i metodi statici della classe emergenza.modello. Tale classe fornisce anche i metodi necessari a reperire le istanze aggiunte in precedenza oppure tutte quelle di una data classe. In particolare, la classe assume che non possano esistere due aree con lo stesso nome, due edifici con lo stesso indirizzo, due persone con lo stesso nominativo oppure due ospedali con lo stesso nome. Maggiori dettagli sulla classe Modello sono disponibili come commenti nel codice stesso. I metodi dichiarati nella classe emergenza.edificio svolgono le seguenti operazioni: - numeropersonevittime(), restituisce il numero di vittime nell edificio - numeropersonesuperstiti(), restituisce il numero di superstiti nell edificio - numeropersoneferite(), restituisce il numero di persone ferite estratte dall edificio Il diagramma delle attività è rappresentato in Figura 2. L attività Gestione di un area è composta ed il corrispondente diagramma delle attività è rappresentato in Figura 3. Le attività utilizzano i seguenti tipi di dato: RecordArea che definisce due proprietà: o nome: String o estensione: float RecordPersona che definisce due proprietà o nominativo: String o eta: int o vivo: boolean o ospedale: nome La proprietà ospedale può valere anche null se la persona in questione è una vittima oppure è superstite ma non ferita. Ovviamente non può accadere che esista una persona per cui vivo=false e ospedale!=null

A seguire, viene fornita la specifica delle attività. Tutte le classi che realizzano le varie attività sono definite nel package processo. Le attività atomiche (I/O e Task) sono codificate in classi aventi le stesso nome usato nella specifica. Attività di I/O InizioSpecificaAttivitàAtomica inserisciinfoaree inserisciinfoaree () : (List<RecordArea>) post: dà all utente la possibilità di inserire le informazioni relative alle varie aree. result è la lista dei RecordArea contenenti le informazioni inserite. InizioSpecificaAttivitàAtomica inserisciedifici inserisciedifici (nomearea : String) : (edifio : List<String>) post: dà all utente la possibilità di inserire le informazioni relative agli edifici presenti nell area nomearea. result è la lista degli indirizzi degli edifici. InizioSpecificaAttivitàAtomica leggiabilita leggiabilita (indirizzo : String) : (agibile : boolean) post: dà all utente la possibilità di specificare se l edificio all indirizzo indirizzo è agibile. result è true se e solo se l edificio è specificato agibile. InizioSpecificaAttivitàAtomica leggiquestionario leggiquestionario (indirizzo : String) : (recordlist: List<RecordPersona>) post: dà all utente la possibilità di inserire le informazioni relative alle persone all interno dell edificio all indirizzo indirizzo. result è la lista (di RecordPersona) delle informazioni inserite InizioSpecificaAttivitàAtomica mostrainfosalienti mostrainfosalienti (recordarea: RecordArea) : () post: Mostra le informazioni relative all area recordarea Task InizioSpecificaAttivitàAtomica aggiornainfoaree aggiornainfoaree (areeio: List<RecordArea>) : () post: per ogni RecordArea presente in areeio, viene creato un oggetto di classe Area contenente le informazioni all interno del record. InizioSpecificaAttivitàAtomica registrainfoedifici registrainfoedifici (edifio: List<String>, area: RecordArea):() post: per ogni indirizzo, rappresentato da una stringa, contenuto in edifio, crea un edificio con indirizzo contento nella stringa e lo inserisce nell area area Fine InizioSpecificaAttivitàAtomica aggiornaagibilita aggiornaagibilita (indirizzo: String, agibilita:boolean) post: imposta ad agibilità il valore dell agibilità dell edificio situato all indirizzo indirizzo InizioSpecificaAttivitàAtomica aggiornainfoedifici aggiornainfoedifici (indirizzo: String,quest:RecordPersona)

post: associa ogni persona ad un edificio e, se vivo e ferito, associa tale persona all ospedale Attività composte Realizzare la specifica per esercizio. Il diagramma in Figura 2 è realizzato nella classe processo.gestioneemergenza ed il sotto-ramo è codificato nella classe processo.gestionearea. Quest ultimo definisce un costruttore che prende come input un oggetto RecordArea che identifica l area di interesse. Al fine di modificare il codice fornito per implementare le funzionalità, si suggerisce di intervenire esclusivamente sulle seguenti classi: o gui.principalelistener o gui.principale o emergenza.personasuperstite o emergenza.edificio o emergenza.managercontiene o emergenza.tipolinkricovero o processo.gestionearea o processo.calcolastatistica o processo.aggiornainfoaree o processo.calcolastatistica

Inserisci gli edifici da controllare Registra le informazioni sugli edifici da controllare No Si Edifici da controllare? Leggi agibilità Aggiorna agibilità Leggi questionario edificio Aggiorna informazioni edificio Altri edifici da controllare? Si No Mostra le informazioni salienti sull area