Esercitazione 2. Corso di Tecniche di Programmazione

Documenti analoghi
Progettazione del Software

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Ingegneria del Software

SAPIENZA Università di Roma, Facoltà di Ingegneria

Esercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:

Fondamenti di Informatica T-1. Classi e metodi astratti

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Esercitazione 5. Corso di Fondamenti di Informatica. Laurea in Ingegneria Informatica

18 - Classi parzialmente definite: Classi Astratte e Interfacce

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Prova d Esame Compito A

Istruzioni iterative (o cicliche)

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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Introduzione. Corso di Fondamenti di Informatica

Riassunto. La programmazione OO. Oggi. Esempio

La classe java.lang.object

Main System Monitor Keyboard

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

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

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Esercizio 1 - Componente Matrice (1/3) Esercizio 1 - Componente Matrice (3/3) Esercizio 1 - Componente Matrice (2/3)

Fondamenti di Informatica I

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Polimorfismo parametrico vs polimorfismo per inclusione

Esercitazione 15. Il problema dello Sleeping Barber

OOP: L13: Eccezioni e loro trattamento in Java

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Esercizio monitor. Sistemi Operativi T 1

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

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

13. Chain of Responsibility

Il paradigma di programmazione a oggetti

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

Ereditarietà e Polimorfismo

La classe Object. L2-Linguaggi di Programmazione II-unina 1

Programmazione ad Oggetti. Java Parte II

Controllo degli accessi

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

Prova d Esame Compito A

Esempio: Interfacce. Gioco Interfacce

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

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"

Prova d Esame Compito B

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Gestione delle eccezioni in Java

Compute engine generici in RMI

Programmazione CORBA in Java

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Le basi del linguaggio Java

esercizi Esercizi / problemi

Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/ SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE

Programmazione Java: Variabili membro, Metodi La parola chiave final

CLASSI ASTRATTE - ESERCIZIO

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

SAPIENZA Università di Roma, Facoltà di Ingegneria

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Esempio su strutture dati dinamiche: ArrayList

Cifratura simmetrica

Classi Astratte. Corso di Tecniche di Programmazione

Modulo 4: Ereditarietà, interfacce e clonazione

La velocità di una carovana

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

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

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Programmazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1.

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Programmazione a Oggetti

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

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

Gestione delle eccezioni in Java

Principi di Progettazione del Software. Principi di Progettazione del Software a.a

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

14 - Metodi e Costruttori

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

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

Object Oriented Software Design

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Gestione delle Eccezioni

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Definizione di classi

Corso di Fondamenti di Informatica I

Programmazione su Reti

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Corso di Laurea in Informatica e Comunicazione Digitale. a.a Interazione Uomo-Macchina. Introduzione a Java.

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Transcript:

Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 2 Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti) Anno Accademico 2007/2008 Tutor: Ing. Diego Rughetti Si ringrazia il Prof. Enrico Denti per aver reso disponibile il materiale didattico sul quale si basano queste slides

Argomenti di riferimento Ereditarietà Classi Astratte Polimorfismo Eccezioni

Esercizio

Soluzione (1)

Soluzione (2)

Soluzione (3)

Soluzione (4)

Soluzione (5) package veicoli; public class Veicolo{ protected String targa; protected String marca; protected String modello; protected int numeroposti; public Veicolo(String t, String m, String mo, int n){ this.targa = t; this.marca = m; this.modello = mo; this.numeroposti = n; public String gettarga(){ return targa; public String getmarca(){ return marca; public String getmodello(){ return modello; public int getnumeroposti(){ return numeroposti; public String tostring(){ return "targa = " + targa + " marca = " + marca + " modello = " + modello + " numero posti = " + numeroposti + " ";

Soluzione (6) package veicoli; public class Autocarro extends Veicolo{ private int capacaitàmassima; public Autocarro(String targa, String marca, String modello, int numeroposti, int capacaitàmassima){ super(targa, marca, modello, numeroposti); this.capacaitàmassima = capacaitàmassima; public int getcapacaitàmassima(){ return capacaitàmassima; public String tostring(){ return super.tostring() + " capacità massima = " + capacaitàmassima;

Soluzione (7) package veicoli; public class Autoveicolo extends Veicolo{ private int numeroporte; public Autoveicolo(String targa, String marca, String modello, int numeroposti, int numeroporte){ super(targa, marca, modello, numeroposti); this.numeroporte = numeroporte; public int getnumeroporte(){ return numeroporte; public String tostring(){ return super.tostring() + " numero porte = " + numeroporte;

Soluzione (8)

Soluzione (9)

Estensione esercizio 1

Soluzione estensione package veicoli; public class Motocicletta extends Veicolo{ private int cilindrata; public Motocicletta(String targa, String marca, String modello, int numeroposti, int cilindrata){ super(targa, marca, modello, numeroposti); this.cilindrata = cilindrata; public int getcilindrata(){ return cilindrata; public String tostring(){ return super.tostring() + " cilindrata = " + cilindrata;

Package (1)

Package (2)

Proposta di esercizio

Esercizio 2 Si vuole realizzare un insieme di classi per la gestione del personale di un istituzione. Ogni persona che lavora nell istituzione è caratterizzata da un nome, un indirizzo ed un numero di telefono. Deve essere possibile in qualsiasi momento ottenere una rappresentazione di un membro del personale sotto forma di stringa o calcolare la sua paga. Nell istituzione esistono due tipologie di personale, i volontari e i dipendenti. I dipendenti sono caratterizzati, oltre che dalle informazioni precedentemente indicate per tutto il personale, anche da un codice fiscale e da una base di retribuzione. Un volontario percepisce una paga pari a 0, un dipendente percepisce una paga pari alla base di retribuzione. I dipendenti a loro volta possono essere, giornalieri o impiegati. I giornalieri sono caratterizzati anche dalle giornate lavorative svolte e la loro paga è calcolata moltiplicando la loro base di retribuzione per il numero di giorni in cui hanno lavorato. Gli impiegati sono caratterizzati dal numero di bonus maturati e la loro paga è calcolata sommando i bonus maturati alla base di retribuzione Infine aggiungiamo che se necessario si può organizzare il personale in gruppi o staffs. Nella realizzazione delle classi in Java gestire le condizioni di errore lanciando le opportune eccezioni.

Soluzione (1)

Soluzione (2)

Soluzione (3)

Soluzione (4)

Soluzione (5)

Soluzione (6)

Soluzione (7)

Soluzione (8)

Soluzione (9) package istituzione; abstract class Personale{ protected String nome; protected String indirizzo; protected String tel; public Personale (String nome, String indirizzo, String tel) throws IstituzioneException{ if(nome == null indirizzo == null tel == null) throw new IstituzioneException( uno o più argomenti non validi! ); this.nome = nome; this.indirizzo = indirizzo; this.tel = tel; public String tostring (){ String riporta = "Nome: " + nome + "\n"; riporta += "Indirizzo: " + indirizzo + "\n"; riporta += "Telefono: " + tel; return riporta; public abstract double paga();

Soluzione (10) package istituzione; class Volontario extends Personale{ public Volontario (String nome, String indirizzo, String tel) throws IstituzioneException{ super (nome, indirizzo, tel); public double paga(){ return 0.0;

Soluzione (11) package istituzione; class Dipendente extends Personale{ protected String numerofiscale; protected double base_retribuzione; public Dipendente (String nome, String indirizzo, String tel, String numerofiscale, double base_retribuzione) throws IstituzioneException{ if(numerofiscale == null base_retribuzione == null) throw new IstituzioneException( uno o più argomenti non validi! ); super(nome, indirizzo, tel); this.numerofiscale = numerofiscale; this.base_retribuzione = base_retribuzione; public String tostring(){ String riporta = super.tostring(); riporta += "\ncodice fiscale: " + numerofiscale; return riporta; public double paga(){ return base_retribuzione;

Soluzione (12) Package istituzione; class Giornaliero extends Dipendente{ private int giornate; public Giornaliero (String nome, String indirizzo, String tel, String numerofiscale, double base_retribuzione_ora) throws IstituzioneException{ super (nome, indirizzo, tel, numerofiscale, base_retribuzione_ora); giornate = 0; public void giorni (int extragiornate){ if(!(extragiornate >= 1 && extragiornate <= 31) ) throw new IstituzioneException( Argomento passato non valido ); giornate += extragiornate; public double paga (){ double pagamento = base_retribuzione * giornate; giornate = 0; return pagamento; public String tostring (){ String riporta = super.tostring(); riporta += "\ngiornate lavorate: " + giornate; return riporta;

Soluzione (13) package istituzione; class Impiegato extends Dipendente{ private double bonus; public Impiegato(String nome,string indirizzo,string tel,string codicefiscale,double baseretrib) throws IstituzioneException{ super(nome,indirizzo,tel,codicefiscale,baseretrib); bonus = 0; public void gratifica(double bonus) { if(bonus <= 0 ) throw new IstituzioneException( Argomento passato non valido, deve essere > 0 ); this.bonus = bonus; public double paga() { double pagamento = super.paga() + bonus; bonus = 0; return pagamento; public String tostring() { String riporta = super.tostring(); riporta += "\nnumero bonus: " + bonus; return riporta;

Soluzione (14) package istituzione; public class Staff{ Personale[] lista; public Staff() { try{ lista = new Personale[6]; lista[0] = new Dipendente ("Carlo Rossi", "Via dei Gracchi 0", 555-0469", "CRLRSS53B12F205T", 1923.07); lista[1] = new Dipendente ("Amintore Fanfani", "Piazza del Gesu' 15","555-0101", "MNRFNF11C13G243F", 846.15); lista[2] = new Impiegato ("Palmiro Togliatti", "Via Botteghe Oscure 1","555-0000", "PLRTGT17F05F205A", 769.23); ((Impiegato)(lista[2])).gratifica(50.00); lista[3] = new Giornaliero ("Pierino Porcospino", "Via Anfiteatro 4","555-0690", "PRNPRP65C10F205R", 18.55); ((Giornaliero)lista[3]).giorni(40); lista[4] = new Volontario ("San Camillo", "4 Ciclo", "555-8374"); lista[5] = new Volontario ("San Callisto", "5 Ciclo","555-7282"); catch(istituzioneexception e){ System.out.println( Catturata un eccezione IstituzioneException ); e.printstacktrace();

Soluzione (14-2) public void giornodipaga() { double totale; System.out.println(); System.out.println("*** calcolo delle paghe del personale ***"); System.out.println(); for (int i=0; i < lista.length; i++) { System.out.println (lista[i]); totale = lista[i].paga(); if (totale == 0.0) System.out.println ("Grazie per il vostro contributo!"); else System.out.println ("Pagamento totale dovuto: " + totale); System.out.println ("-----------------------------------");

Soluzione (15) package istituzione; import java.util.*; public class IstituzioneException extends Exception{ public IstituzioneException() { super(); public IstituzioneException(String s){ super(s);

Soluzione (16)

Esercizio 3

Esercizio 3 (2)

Soluzione (1)

Soluzione (2)

Soluzione (3)