Problema dei Contratti Telefonici

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Puntatori Linguaggio C.
Sottoprogrammi: funzioni e procedure
Oggetti Java.
Costruttori e Distruttori
Package Utilizzo classi.
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Si consideri il seguente programma: class Up extends Object { public static int x; public int y; public static void metodo(Up o) {Up w=o.metodo1(x); o.y=w.y+6;}
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Overriding.
Grafico di funzione Disegna la Matematica.
Soluzione Esercizio - Classe Vettore
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Lezione XI Laboratorio di Programmazione. Ereditarieta Fondamentale proprieta dei linguaggi OO. Permette di specificare un nuova classe derivata da unaltra.
Java base IV: Java e la programmazione O.O.
CLASSI ASTRATTE L’ereditarietà porta riflettere sul
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
Diagramma di flusso del problema del Supermercato.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Programmazione concorrente
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Corso di Programmazione in Java – Esercizio n° 001
Diagramma di flusso del problema dello stipendio del rappresentante.
1 Applet ed HTML Fondamenti di Informatica Corso D.
Lezione n° 07 - Esercitazione
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Corso JAVA Lezione n° 02 Istituto Statale di Istruzione Superiore “F. Enriques”
Corso JAVA Lezione n° 10 Istituto Statale di Istruzione Superiore “F. Enriques”
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Timer Animazioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Gestione dei thread in Java
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Metodologie di Programmazione Esercizi sulla semantica di Java.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
Esercizio 2. Si mostri l’evoluzione dello stato (ambiente di classi, heap, pila) durante la valutazione delle seguenti dichiarazioni di classe nei punti.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Esercitazione sull’ ordinamento 20 maggio 2003
1 Java primo contatto Quando le classi fanno la differenza …
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

Problema dei Contratti Telefonici Corso di Programmazione in Java – Esercizio n° 007 Esercizio n° 7 Problema dei Contratti Telefonici Istituto Statale di Istruzione Superiore “F. Enriques”

Gli attributi che devono essere per forza presenti sono i seguenti: Corso di Programmazione in Java – Esercizio n° 007 Una nota compagnia telefonica vi richiede di fornirgli un programma per stampare le bollette da inviare ai propri utenti comprensive di altre informazioni quale ad esempio il numero di telefonate effettuate. La compagnia fornisce ai propri clienti due tipi di contratti: quello per la telefonia fissa e quello per la telefonia mobile. I due contratti non sono proprio identici: per quanto riguarda il costo delle telefonate, il contratto di telefonia mobile prevede sempre un costo fisso alla risposta, mentre il contratto di telefonia fissa ne è esente. Per quanto riguarda i dati identificativi del contratto, in quello di telefonia fissa deve essere specificato anche l’indirizzo in cui viene erogato il servizio. Capite bene quindi che ci sono caratteristiche in comune tra i due contratti ma anche alcune differenze… Gli attributi che devono essere per forza presenti sono i seguenti: Numero telefonico, Nome Utente, Costo telefonate, Numero telefonate effettuate. Si deve inoltre fissare una costante Costo_al_secondo che indica il costo delle telefonate per secondo di conversazione. Istituto Statale di Istruzione Superiore “F. Enriques”

dammiBolletta(): che restituisce il costo delle telefonate. Corso di Programmazione in Java – Esercizio n° 007 Per ogni tipo di contratto devono essere implementati i seguenti metodi: datiUtenza() : che restituisce una stringa da stampare contenente i dati dell’utenza telefonica. aggiornaBolletta(int numSecondi): che prende in input un numero di secondi ed aggiorna il costo totale della bolletta in base ai secondi di conversazione. aggiungiCostiFissi(float importo): che prende in input un importo e lo aggiunge al totale della bolletta. dammiBolletta(): che restituisce il costo delle telefonate. dammiNumTelefonate(): che restituisce il numero di telefonate effettuate. In seguito creare un semplice programmino che dati due utenti di tipologie di contratti diversi ne stampa l’importo della bolletta ed il numero di telefonate effettuate, Utilizzare la classe Random di Java.util.Random per impostare i numeri di secondi di durata delle conversazioni. Consiglio: fare una classe generica da cui far derivare due classi, una per tipologia di contratto, e poi fare overriding e overloading dove necessario… Istituto Statale di Istruzione Superiore “F. Enriques”

public class ContrattoTelefonico { Corso di Programmazione in Java – Esercizio n° 007 public class ContrattoTelefonico { private int numeroTel; private String utente; private float costoTelefonate; private int numTelefonate; private static final double COSTO_AL_SECONDO = 0.05; public ContrattoTelefonico(String nomeUt, int numero) { utente = nomeUt; numeroTel = numero; costoTelefonate = 0; numTelefonate = 0; } public String datiUtenza() { return "Utente: " + utente + "; numero tel.: " + numeroTel; } public void aggiornaBolletta(int numSecondi) { costoTelefonate += COSTO_AL_SECONDO * numSecondi; numTelefonate++; } public void aggiungiCostiFissi(float importo) { costoTelefonate += importo; } public float dammiBolletta() { return costoTelefonate; } public int dammiNumTelefonate() { return numTelefonate; } Istituto Statale di Istruzione Superiore “F. Enriques”

public class ContrattoFisso extends ContrattoTelefonico { Corso di Programmazione in Java – Esercizio n° 007 public class ContrattoFisso extends ContrattoTelefonico { private String indirizzo; // indirizzo dell'utente. public ContrattoFisso(String nome, int numero, String datiIndir) { super(nome, numero); // chiama il costruttore della superclasse. indirizzo = datiIndir; } public String datiUtenza() { return super.datiUtenza() + "\nindirizzo: " + indirizzo; } } //Overriding del metodo datiUtenza() definito nella classe genitrice. public class ContrattoMobile extends ContrattoTelefonico { private static final double COSTO_RISPOSTA = 5.10; // costo alla risposta. public ContrattoMobile(String nome, int numero) { super(nome, numero); } public void aggiornaBolletta(int nSecondi) { super.aggiornaBolletta(nSecondi); super.aggiungiCosti(COSTO_RISPOSTA); } } //Overriding del metodo aggiornaBolletta() definito nella classe genitrice. Istituto Statale di Istruzione Superiore “F. Enriques”

import java.util.Random; // per generare numeri casuali Corso di Programmazione in Java – Esercizio n° 007 import java.util.Random; // per generare numeri casuali public class Main { public static void main(String[] arg) { Random generatoreRandom = new Random(); ContrattoFisso utente1 = new ContrattoFisso("Ugo", 12345, "via Dotto 1"); ContrattoMobile utente2 = new ContrattoMobile("Ada", 6789123); // i due utenti fanno 10 telefonate di durata casuale (tra 1 e 100 sec) for (int i = 1; i <= 10; i++) { int tempoConversazione = generatoreRandom.nextInt(100) + 1; utente1.aggiornaBolletta(tempoConversazione); tempoConversazione = generatoreRandom.nextInt(100) + 1; utente2.aggiornaBolletta(tempoConversazione); } … Istituto Statale di Istruzione Superiore “F. Enriques”

System.out.println("* * * * * * * * * * * * * * * * * * * * *"); Corso di Programmazione in Java – Esercizio n° 007 System.out.println("* * * * * * * * * * * * * * * * * * * * *"); System.out.println("Bolletta del primo utente:"); System.out.println(utente1.datiUtenza() + "\nnum. telefonate: " + utente1.dammiNumTelefonate() + "\ncosto telefonate: " + utente1.dammiBolletta()); System.out.println(); System.out.println("Bolletta del secondo utente:"); System.out.println(utente2.datiUtenza() + "\nnum. telefonate: " + utente2.dammiNumTelefonate() + "\ncosto telefonate: " + utente2.dammiBolletta()); System.out.println(); } Istituto Statale di Istruzione Superiore “F. Enriques”