Esercizio 1: listino prezzi

Documenti analoghi
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Object-Oriented Programming

Fondamenti di Informatica T-1

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

La classe java.lang.object

Introduzione alla programmazione Object Oriented. Luca Lista

Progettazione Object-Oriented

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Ingegneria del Software

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Array di array. E' possibile creare strutture a matrice (2D, 3D,..., ND), esempio: double [ ][ ] entrate = new double [NANNI][NMESI];

Classi astratte Interfacce

Il paradigma Object Oriented. Iolanda Salinari

TIPO DI DATO ASTRATTO

Esercitazione di Basi di Dati

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Un approccio possibile sarebbe creare un oggetto con un metodo adeguato per scandire collezioni o stampare i dati dell oggetto:

Programmazione Orientata agli Oggetti

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Esercitazione n 2. Obiettivi

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Tipi riferimento e stringhe

Sul pattern Strategy

Esercizio: Lista Circolare

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

Strutture lineari in Java

Prova d Esame Compito A

09357 MAN.USO NUOVA ALIQUOTA IVA 2013 CAMBIO ALIQUOTA DAL 21% AL 22%

Il Linguaggio Java. Le interfacce

Pattern GOF 2. Laboratorio di Ingegneria del Software. Andrea Bei

Transazioni con IFS reali:

A. Ferrari. oggetti & game. Python. Alberto Ferrari Informatica

Prima prova intercorso 29 Novembre 2005

PROTOCOLLO - Inserimento

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

15 MINUTI DEL TUO TEMPO PER VEDERE IL CICLO ATTIVO DI UN AZIENDA

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2017

Esercitazione n 2. Obiettivi

Introduzione alle classi e agli oggetti. Walter Didimo

Inizializzare oggetti

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Ingegneria del Software L-A

Sistemi Pordenone Udine Vicenza Srl unipersonale capitale i.v.

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP?

Classi Astratte vs Classi vs Interfacce

Design Pattern Comportamentali

Fondamenti di Informatica T-1. Classi e metodi astratti

Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 24 settembre 2015

Capitolo 2. Dall idea al codice con UML 2 Esercizi introduttivi

Corso di Algoritmi e Strutture Dati con Laboratorio. Tipi di dato pila e coda

Programmazione = decomposizione basata su astrazioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Laboratorio di programmazione

Programmi e Oggetti Software

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

Esercitazione n 2. Obiettivi

Array. // utente pippo $utente1 = array( username => pippo, password => pippo123, ruolo => amministratore );

Programmi e Oggetti Software

Laboratorio di Algoritmi e Strutture Dati

ORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI

GESTIONE DEGLI ERRORI

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Gli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Programmazione ad Oggetti

ESERCIZIO 1 ESERCIZIO 1

ereditarietà e polimorfismo

Il linguaggio Java. Le eccezioni

Esame Laboratorio di Programmazione

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

La progettazione concettuale

Progetto ed Implementazione di un Modello Multi-Dimensionale

Programmazione è gestione di eventi

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Titoli azionari. Fondamenti di Programmazione

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

Prima di andare avanti. Progettazione. La programmazione a oggetti. Progettazione di un applicazione. Progettazione. Ingegneria del software

Progettazione. Fase di progettazione di un applicazione Fase di implementazione. 2/11/2004 Laboratorio di Programmazione - Luca Tesei 1

Il TDA Map. Tabelle hash

Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica

Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

EasyAgent. Il software per gli Agenti di commercio. Multi-aziendale. Multi-piattaforma. Gestione dei Permessi. Gestione del borsellino.

Classi, Ereditarietà e Polimorfismo. Lezione 7

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Transcript:

Esercizio 1: listino prezzi Si progetti una applicazione che gestisce gli articoli in vendita presso un rivenditore mediante un listino. Il listino contiene tutti gli articoli in vendita e consente di eseguire diverse operazioni su di esso. Alcune operazioni vengono eseguite allo stesso modo sia durante i periodi ordinari che durante i periodi promozionali. Altre operazioni vengono invece eseguite in maniera differente durante i periodi promozionali. In particolare, durante i periodi promozionali viene applicato uno sconto. Di conseguenza, le operazioni che coinvolgono il ritrovamento del prezzo devono tenere conto dello sconto.

Esercizio 1: listino prezzi Ciascun articolo è descritto da: 1. nome 2. prezzo 3. tipologia di articolo (standard o superior) Sul listino si devono poter svolgere le seguenti operazioni: 1. inserimento di un articolo 2. ritrovamento di un articolo (sulla base del nome) 3. ritrovamento del prezzo di un articolo (sempre per nome) 4. stampa di tutto il listino con prezzi

Esercizio 1: listino prezzi Le operazioni 3 e 4 devono essere svolte in modo appropriato a seconda del periodo (promozionale o no). Qualora si applichi lo sconto, è necessario ritrovare sia il prezzo originale che quello scontato. Analogamente per la stampa di tutto il listino con prezzi. In particolare, lo sconto applicato varia a seconda della tipologia di articolo: per articoli standard, sconto del 30% per articoli superior, sconto del 10%

Esercizio 1: modellare il problema Cosa modello con l interfaccia? Interfaccia per i comportamenti Classi per le entità concrete Cosa modello con la classe astratta? Metodi astratti Implementati dalle sottoclassi Implementare l applicazione usando una interfaccia o una classe astratta. Perché si sceglie l una o l altra?

Esercizio 1: note Note per l implementazione: - Il ritrovamento dell articolo consiste nel restituire l oggetto così come è nel listino, quindi in maniera indipendente dagli sconti. - Il ritrovamento del prezzo, al contrario, prevede di visualizzare il prezzo da applicare all articolo qualora lo si venda (quindi con lo sconto, se c è). - La stampa del listino prevede di visualizzare tutte le informazioni sull articolo, incluso l eventuale prezzo scontato.

Esercizio 1: interfaccia listino Vediamo come si può risolvere il problema usando una interfaccia. Si definisca un oggetto Item (l articolo) con gli attributi visti prima. Si definisca l interfaccia PriceList, che gestisce un array di Item e dichiara i metodi visti prima: - inserimento di un articolo - ritrovamento articolo/prezzo - stampa listino Si implementi l interfaccia in due classi: PriceList_Impl e DiscountPriceList_Impl. La seconda implementa opportunamente i metodi che coinvolgono il prezzo in modo da visualizzare il prezzo scontato, senza alterare il prezzo nel listino.

Esercizio 1: classe astratta listino Vediamo ora come risolvere il medesimo problema usando una classe astratta. Definito l oggetto Item, si definisca la classe astratta PriceList che gestisce l array di Item ed implementa i metodi: - inserimento di un articolo - ritrovamento articolo (con prezzo originale) Gli altri metodi, invece, sono astratti (e rendono quindi la classe astratta). Si definiscano due sottoclassi di PriceList, OrdinaryPriceList e DiscountPriceList, che implementano opportunamente i metodi: - ritrovamento prezzo - stampa listino

Listino: interfaccia o classe astratta? Alcune domande: - Cosa succede se aggiungo un metodo all interfaccia? Ad esempio, un metodo che ordina gli articoli per nome. - E se lo aggiungo alla classe astratta? - Cosa succede se non implemento un metodo dell interfaccia? - E se non implemento un metodo della classe astratta? - Cosa succede se PriceList_Impl implementa anche un altra interfaccia? - E se voglio che OrdinaryPriceList erediti anche da un altra classe?