Esercitazione n 4. Obiettivi



Documenti analoghi
Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Object Oriented Programming

Ottava Esercitazione. introduzione ai thread java mutua esclusione

developed by Emanuele De Carlo

Programmazione a Oggetti Lezione 10. Ereditarieta

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Algoritmi di Ricerca. Esempi di programmi Java

Esercizi della lezione 5 di Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Modulo 4: Ereditarietà, interfacce e clonazione

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Realizzazione di una classe con un associazione

Esercitazione di Basi di Dati

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

Progettazione : Design Pattern Creazionali

Prova di Laboratorio di Programmazione

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Java: Compilatore e Interprete

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Corso di Informatica

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Introduzione a Classi e Oggetti

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Funzioni in C. Violetta Lonati

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Programmazione in Java Parte I: Fondamenti

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

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Java Virtual Machine

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Esercitazione 4 JDBC

Corso Eclipse. Prerequisiti. 1 Introduzione

Prima parte registrazione

Software Servizi Web UOGA

Esercizi di JavaScript

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Gestione degli ordini e del magazzino

Esercizio 1: trading on-line

Laboratorio di Basi di Dati

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Oggetti Lezione 3. aspetti generali e definizione di classi I

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Soluzione dell esercizio del 2 Febbraio 2004

Parola chiave extends

Programmare in Java. Olga Scotti

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Test di unità con JUnit4

Traccia di soluzione dell esercizio del 25/1/2005

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Documentazione del progetto Classe 5 Cp A.s. 2011/2012

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

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Guida docenti all inserimento delle informazioni sugli insegnamenti (programmi, etc.) da web

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Architettura MVC-2: i JavaBeans

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Inizializzazione, Assegnamento e Distruzione di Classi

MANUALE UTENTE Fiscali Free

Corso di Informatica

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Compilatore risorse display grafico LCD serie IEC-line

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale

M.U.T. Modulo Unico Telematico

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Panoramica: che cosa è necessario

GUIDA ALL USO DEL PANNELLO DI GESTIONE SITO WEB

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Guida utente alla compilazione delle richieste di contributo on-line per le Associazioni dei Consumatori

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

GUIDA AL PRONTUARIO MOBILE

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

UML Diagrammi delle classi. UML Diagramma classi 1

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

GUIDA GENERALE ALL USO DEL NUOVO SITO WEB

DATI IDENTIFICATIVI DEL PROGETTO

10 - Programmare con gli Array

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

Guida al primo accesso sul SIAN

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Analisi e sviluppo di un componente per un ESB open source

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Aggiornamento Titoli

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

Transcript:

Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida: simulazione di ingressi in un centro sportivo Laboratorio di Fondamenti I TLC Esercitazione IV 1 Specifica del Problema (1) Simulazione di ingressi in un Centro Sportivo Si vuole progettare e implementare un componente software che simuli la gestione degli ingressi in un Centro Sportivo. L ingresso al centro da parte degli utenti del centro è consentito solo ai possessori di un abbonamento a qualche attività sportiva del centro. All ingresso gli utenti presentano la propria tessera e possono entrare solo se l abbonamento è valido. Dettaglio Gli abbonamenti sono di due tipi: a ingressi (AbbonamentoIngressi) o mensili (AbbonamentoMensile). Tutti gli abbonamenti sono però associati ad un numero di tessera che identifica l utente. Tutti gli abbonamenti hanno un metodo entra() e visualizza() usati rispettivamente per simulare l ingresso e visualizzare le caratteristiche di un abbonamento. Questi metodi sono differenziati a seconda del tipo di abbonamento. Laboratorio di Fondamenti I TLC Esercitazione IV 2

Dettaglio Specifica del Problema (2) Il componente software che gestisce la simulazione chiamato SimulaIngressi dovrà : 1 Inizializzare lo stato iniziale del Centro Sportivo come necessario per la simulazione. Tale stato deve essere modellato attraverso una entità software chiamata StatoCentro che contiene informazioni circa lo stato corrente del Centro Sportivo (es num. persone in piscina, mese corrente, ecc ) 2 Creare alcune istanze di abbonamento 3 Simulare l ingresso degli abbonamenti creati al Centro. In particolare verrà testato se l abbonamento autorizza all ingresso e verrà visualizzato in ogni caso un messaggio su console Laboratorio di Fondamenti I TLC Esercitazione IV 3 Dettaglio Specifica del Problema (3) Per la simulazione si vogliono utilizzare gli abbonamenti : PesiIngressi NuotoLibero CorsoNuoto (abbonamento alla palestra a ingressi) (abbonamento alla piscina a ingressi) (corso mensile di nuoto in piscina) Laboratorio di Fondamenti I TLC Esercitazione IV 4

Esercitazione n 4 Come procedere? 1 2 Creare in C:\TEMP una directory Esercitazione4 che conterrà tutti i sorgenti e i.class di questa esercitazione. Progettare e implementare la classe Abbonamento.java seguendo la specifica della slide n 8, quindi compilarla. 3 Progettare e implementare la classe AbbonamentoIngressi.java seguendo la specifica delle slide N 9-10, quindi compilarla. 4 Scaricare il file Pesi.java, compilare e capire il codice anche osservando la specifica data nelle slide N 11-12. Laboratorio di Fondamenti I TLC Esercitazione IV 5 Esercitazione n 4 Come procedere? 5 6 Progettare e implementare la classe NuotoLibero.java seguendo la specifica delle slide N 15-16, quindi compilarla. Scrivere il componente software incaricato di gestire la simulazione SimulaIngressi.java seguendo la specifica delle slide N 17-18, quindi compilare ed eseguire. 7 Progettare e implementare la classe StatoCentro.java seguendo la specifica delle slide N 13-14, quindi compilarla. Laboratorio di Fondamenti I TLC Esercitazione IV 6

Il Package Esercitazione4 Gerarchia delle classi Abbonamento StatoCentro Abbonamento Ingressi Abbonamento Mensile Pesi NuotoLibero CorsoNuoto Aerobica Ereditarietà Laboratorio di Fondamenti I TLC Esercitazione IV 7 La classe Abbonamento Abbonamento.java package Esercitazione4 Ogni abbonamento ha un numero di tessera associato numtessera. Tale numero deve essere intero e private. Il numero della tessera relativo ad ogni abbonamento è stabilito al momento della creazione dell abbonamento e deve essere sempre specificato. Il numero di tessera associato è restituito dal metodo public int visualizzatessera() Ogni abbonamento deve possedere i metodi: public boolean entra() (per simulare un ingresso) public void visualizza() (per visualizzare a console le caratteristiche di un abbonamento) Tali metodi hanno comportamento differenziato a seconda del tipo di abbonamento Laboratorio di Fondamenti I TLC Esercitazione IV 8

La classe AbbonamentoIngressi (1) AbbonamentoIngressi.java package Esercitazione4 AbbonamentoIngressi estende la classe Abbonamento Posside due variabili intere e private: totingressi (totale degli ingressi acquistati) effingressi (ingressi già effettuati) Costruttori: public AbbonamentoIngressi ( int tessera, int ingressi ) public AbbonamentoIngressi ( int tessera) Dove tessera è il numero di tessera dell abbonamento, mentre ingressi il numero di ingressi acquistati. Se non viene indicato, il numero di ingressi di default è 12. Laboratorio di Fondamenti I TLC Esercitazione IV 9 La classe AbbonamentoIngressi (2) AbbonamentoIngressi.java package Esercitazione4 public int totingressi() ( restituisce il valore di totingressi) public int effingressi() (restituisce il valore di effingressi) protected int incingressi() (incrementa il valore di effingressi di 1 e ritorna effingressi) Il metodo visualizza() produce una uscita di questo tipo: Tessera: 33 Ingressi effettuati: 1 Ingressi rimanenti : 23 Il comportamento del metodo entra() abbonamento ad ingressi dipende dal tipo di Laboratorio di Fondamenti I TLC Esercitazione IV 10

La classe Pesi (1) Pesi.java package Esercitazione4 Pesi è una classe concreta che modella un abbonamento alla palestra che è ad ingressi. Estende AbbonamentoIngressi. Costruttori public Pesi ( int tessera, int ingressi ) public Pesi ( int tessera) Dove tessera è il numero di tessera dell abbonamento, mentre ingressi il numero di ingressi acquistati. Se non viene indicato, il numero di ingressi di default è 24. Il metodo entra(), se si hanno ancora ingressi da effettuare ritorna true e aggiorna il numero di ingressi effettuati. Altrimenti ritorna false e scrive su console: Non posso entrare! Laboratorio di Fondamenti I TLC Esercitazione IV 11 La classe Pesi (2) Pesi.java package Esercitazione4 Il metodo visualizza(), stampa in uscita un messaggio di questo tipo: ** ABB. PESI AD INGRESSI ** Tessera: 100 Ingressi effettuati: 1 Ingressi rimanenti : 23 ********************************* Laboratorio di Fondamenti I TLC Esercitazione IV 12

La classe StatoCentro (1) StatoCentro.java package Esercitazione4 StatoCentro raccoglie staticamente alcune informazioni utili inerenti lo stato del Centro Sportivo numinpiscina è una variabile intera e private che contiene il numero delle persone che attualmente stanno facendo nuoto libero (e non il corso di nuoto) I metodi statici e pubblici void incnum() e void decnum() rispettivamente incrementano e decrementano di 1 il valore di numinpiscina capienza è una costante intera che ha valore 20 e rappresenta il numero massimo di persone che fanno nuoto libero che la piscina può ospitare. Laboratorio di Fondamenti I TLC Esercitazione IV 13 La classe StatoCentro (2) StatoCentro.java package Esercitazione4 Il metodo public static boolean PostiDisponibili() ritorna true se il numinpiscina non supera e non satura la capienza, altrimenti ritorna false. mesecorrente è una Stringa private che contiene il mese corrente. Es: Febbraio. public static void setmese ( String mese) imposta mesecorrente alla stringa ricevuta come argomento public static String currentmese () ritorna mesecorrente Laboratorio di Fondamenti I TLC Esercitazione IV 14

La classe NuotoLibero (1) NuotoLibero.java package Esercitazione4 NuotoLibero è una classe concreta che modella un abbonamento ad ingressi al nuoto libero in piscina. Estende AbbonamentoIngressi. Costruttori public NuotoLibero ( int tessera, int ingressi ) public NuotoLibero ( int tessera) Dove tessera è il numero di tessera dell abbonamento, mentre ingressi il numero di ingressi acquistati. Se non viene indicato, il numero di ingressi di default è 12. Laboratorio di Fondamenti I TLC Esercitazione IV 15 La classe NuotoLibero (2) NuotoLibero.java package Esercitazione4 Il metodo entra(), controlla se in vasca ci sono posti disponibili. In caso negativo ritorna false e stampa su console: la piscina è piena! e Non posso entrare!. Se invece ci sono ancora posti, controlla se si hanno ancora ingressi da effettuare. In caso affermativo ritorna true e aggiorna il numero di ingressi effettuati oltre che lo Stato del Centro. Altrimenti ritorna false e scrive su console: Non posso entrare! Il metodo visualizza(), stampa in uscita un messaggio di questo tipo: ** ABB. NUOTO AD INGRESSI ** Tessera: 30 Ingressi effettuati: 1 Ingressi rimanenti : 11 ********************************* Laboratorio di Fondamenti I TLC Esercitazione IV 16

La classe SimulaIngressi (1) SimulaIngressi.java package Esercitazione4 SimulaIngressi è il componente software che gestisce la simulazione. La simulazione avviene in tre fasi qui di seguito riportate che devono essere implementate. Inizializzazione stato del Centro Inserire 18 persone nella vasca del nuoto libero (numinpiscina di StatoCentro deve valere 18) Creazione Abbonamenti Creare un array di nome elenco di 6 elementi di tipo Abbonamento, come indicato nella prossima slide Laboratorio di Fondamenti I TLC Esercitazione IV 17 La classe SimulaIngressi (2) SimulaIngressi.java package Esercitazione4 elenco 0 1 2 3 4 5 Abbonamento ai Pesi con tessera n 100 Abbonamento ai Pesi 24 ingressi con tessera n 101 Abbonamento ai Pesi 36 ingressi con tessera n 102 Abbonamento a NuotoLibero 24 ingressi con tessera n 33 Abbonamento a NuotoLibero con tessera n 34 Abbonamento a NuotoLibero 12 ingressi con tessera n 35 Simulazione Visualizzare lo stato dell abbonamento con tessera n 102, quindi simulare un suo ingresso al centro. Simulare in seguito l ingresso anche di tutti gli altri abbonamenti creati (tranne quello con tessera n 102 già simulato). Laboratorio di Fondamenti I TLC Esercitazione IV 18

Esercitazione n 4: facoltativo 8 Scaricare dal sito web i file AbbonamentoMensile.java e CorsoNuoto.java, capirne il funzionamento e compilarli. 9 Modificare il main() in SimulaIngressi.java in modo tale che all inizio mesecorrente in StatoCentro venga inizializzato a Febbraio. Poi si creino due abbonamenti, uno con numero di tessera 40, e valido in Febbraio, l altro con numero di tessera 41, valido in Febbraio e con Maestro Carlo. Si simuli quindi l ingresso di entrambi gli abbonamenti al Centro Sportivo. Laboratorio di Fondamenti I TLC Esercitazione IV 19