Vending Machine Problemi?
|
|
- Leonzia Marinelli
- 5 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Vending Machine Problemi? La riconfigurabilità della vending machine in termini di componenti usati, è solo parziale È possibile riconfigurare i singoli componenti ma NON sostituirli integralmente Al posto di un SimpleKeyboard non ci si può mettere OtherKeyboard: non c è compatibilità di tipo! Adattare la vending machine e ricompilare tutto! 2
2 Vending Machine Problemi? Un cambiamento completo è possibile solo cambiando il codice dei componenti stessi Ancora: adattare la vending machine e ricompilare tutto! Può essere comodo estendere i componenti attuali piuttosto che averne di completamente nuovi Può essere comodo avere componenti veramente intercambiabili Quindi? 3 Vending Machine Soluzioni Occorre trovare il modo per separare completamente i concetti dalle loro implementazioni Occorre separare la vista esterna dal come è fatto Occorre stabilire un contratto di funzionamento che deve essere rispettato da tutti i componenti che vogliono entrare in gioco Interfacce! 4
3 Astrazione, come!? Tramite interfacce, si definiscono i servizi che ogni componente fornisce Chiunque voglia realizzare un nuovo componente deve implementare l interfaccia corrispondente Naturalmente, dal punto di vista di chi usa l interfaccia (la vending machine il coordinamento), il comportamento deve essere equivalente 5 Comportamento Equivalente Per comportamento equivalente si intende che, a livello di componente, esistono degli invarianti semantici che vanno rispettati Si prenda a riferimento il caso della tastiera (SimpleKeyboard nel vecchio progetto) se si stabilisce che il comportamento del metodo di lettura del componente debba essere bloccante e sincrono (rimane in attesa che sia disponibile un risultato), tutti i componenti dello stesso tipo (che realizzano una tastiera) devono comportarsi nello stesso modo se così non fosse, la vending machine, che suppone un comportamento di quel tipo, non potrebbe più funzionare! 6
4 Soluzione? Partendo dall attuale Vending Machine, quali passi occorre compiere? Ricordare quali azioni/passi sono stati compiuti durante l estensione del Phone Plan con le Opzioni 7 Soluzione Passo 1 Da ogni componente, estrarre l interfaccia (interface) Fare in modo che ogni componente implementi l interfaccia da esso estratta (implements) Fare in modo che il coordinatore del funzionamento (VendingMachine) non usi più riferimenti ad oggetti concreti, ma riferimenti ad interfacce 8
5 Package? Come organizzare i package? Occorre fare in modo che Le classi siano organizzate con dipendenze sensate (astrazioni vs entità concrete) COME?! L estensione (aggiunta di funzionalità/dispositivi) sia semplice COME?! Mettere tutto insieme? Vantaggi, Svantaggi? 9 Package Passo 1 vendingmachine: è il root package contiene classi di uso generale La classe che contiene il main vendingmachine.devices: contiene le definizioni delle interfacce dei dispositivi componenti vendingmachine.devices.standard: contiene le classi che implementano i dispositivi per usare lo standard input e lo standard output per l I/O 10
6 Renaming Le interfacce prendono il nome del dispositivo: Display, Keyboard, CoinScanner, CashRegister, Dispenser Le classi che realizzano le interfacce prendono un nome opportuno con suffisso il nome dell interfaccia (non è sempre vero, dipende dal contesto v. interfacce general purpose come Comparable) 11 Naming In generale Distinguere fra le interfacce che esprimono un abilità (Comparable, Serializable, Iterable ) In questo caso non ha senso includere nel nome della classe che implementa l interfaccia anche il nome dell interfaccia stessa Un Dispenser può essere Comparable ma è pur sempre un Dispenser dalle interfacce che modellano un entità (CoinScanner, Dispenser ) In questo caso, la classe che implementa l interfaccia, realizza l entità, di conseguenza il naming: GraphicalCoinScanner, StandardDispenser, 12
7 Package Diagram Passo 1 13 Class Diagram Passo 1 14
8 Problemi Passo 1 Il diagramma è decisamente troppo connesso In particolare, il main ha troppe responsabilità: creazione, configurazione, esecuzione In generale, occorrerebbe un sistema di creazione e configurazione che fosse flessibile e riusabile Flessibile: configurare diverse vending machine con diversi TIPI di componenti Riusabile: configurare diversi TIPI di vending machine con diversi TIPI di componenti 15 1 Soluzioni configurare diverse vending machine con diversi TIPI di componenti Necessità di una factory FATTA COME? Serve qualcosa di più flessibile rispetto alle factory viste finora 2 configurare diversi TIPI di vending machine con diversi TIPI di componenti Anche VendingMachine deve essere astratta da un interfaccia! 16
9 Soluzioni 1. La creazione dei componenti e la loro configurazione può essere fatta dalla stessa factory che crea VendingMachine a. Le configurazioni possono essere diverse a seconda delle situazioni b. Una factory per configurazione Anche la factory deve essere in qualche modo astratta (interfaccia!) c. Gerarchia di factory d. e la factory della factory? 2. Le vending machine possono essere di tipo diverso a. VendingMachine viene astratta da un interfaccia b. La factory restituisce un oggetto che realizza tale interfaccia 17 Renaming L interfaccia che rappresenta la vending machine, si chiama VendingMachine Le classi che la implementano prendono un nome opportuno con suffisso il nome dell interfaccia (v. precedente considerazione) Nello specifico, la vending machine sequenziale (operazioni solo in ordine preciso) è realizzata dalla classe SequentialVendingMachine e implementa l interfaccia VendingMachine 18
10 La Factory di VendingMachine VendingMachineFactory occupa della creazione di una VendingMachine Quale e come sia configurata lo sa solo la factory! Le uniche dipendenze evidenti sono quelle con le astrazioni Un metodo protetto per ogni dispositivo da creare. La factory si occupa anche della configurazione! 19 Package Passo 2 vendingmachine.control.factories: contiene la (le?) factory concreta della vending machine vendingmachine.control contiene anche l interfaccia VendingMachine 20
11 Package Passo 2 La costruzione di vending machine e dispositivi delegata alla factory 21 Codice Astrazioni package vendingmachine.control; public interface VendingMachine public void run(); 22
12 Codice Astrazioni package vendingmachine.devices; public interface CashRegister public int getcurrentbalance(); public void acceptcredit(int amountin); public int getcredit(); public boolean candotransaction(int cost); public boolean dotransaction(int cost); public void abort(); 23 Codice Astrazioni package vendingmachine.devices; public interface CoinScanner public InputType acceptinput(); public int getlastcoin(); public InputType getlastinputtype(); 24
13 Codice Astrazioni package vendingmachine.devices; public interface Dispenser public int getcode(); public int getcount(); public int getproductcost(); public String getproductname(); public boolean makesale(); 25 Codice Astrazioni package vendingmachine.devices; public interface Display public void show(string s); public void clear(); 26
14 Codice Astrazioni package vendingmachine.devices; public interface Keyboard public int readvalue(); 27 La creazione Come è fatta la factory di vending machine? È una classe contenente soli metodi statici Contiene un metodo pubblico che restituisce una VendingMachine Contiene tanti metodi protetti quanti sono i dispositivi da creare Realizza una costruzione per passi: Costruzione e configurazione dei componenti Costruzione e configurazione della vending machine 28
15 Quale vending machine? VendingMachine è ora un interfaccia SequentialVendingMachine è la vending machine sequenziale La VendingMachineFactory è scritta in modo che venga restituita una SequentialVendingMachine con i componenti di tipo standard che utilizzano la console. 29 VendingMachineFactory package vendingmachine.control.factories; public class VendingMachineFactory public static VendingMachine createvendingmachine() Dispenser[] dispensers = createdispensers(); CashRegister cashregister = createcashregister(); Display display = createdisplay(); Keyboard keyboard = createkeyboard(); CoinScanner coinscanner = createcoinscanner(); return new SequentialVendingMachine(dispensers, cashregister, display, keyboard, coinscanner); 30
16 VendingMachineFactory protected static CashRegister createcashregister() return new StandardCashRegister(); protected static CoinScanner createcoinscanner() return new StandardCoinScanner( new int[] 5, 10, 20, 50, 100 ); 31 VendingMachineFactory protected static Dispenser[] createdispensers() return new Dispenser[] new StandardDispenser(11, 20, 50, "A-Candy"), new StandardDispenser(12, 10, 100, "Mr Bon"), new StandardDispenser(13, 2, 10, "Sugar Fuel"), new StandardDispenser(21, 30, 80, "Gluco Abuse"), new StandardDispenser(22, 20, 60, "Hall of Taste") ; 32
17 VendingMachineFactory protected static Display createdisplay() return new StandardDisplay(); protected static KeyBoard createkeyboard() return new StandardKeyBoard(); 33 Componenti Grafici? Supponiamo entrino in gioco dei componenti grafici funzionalmente equivalenti a quelli standard Dove va cambiata la factory? 34
18 VendingMachineFactory protected static CoinScanner createcoinscanner() return new GraphicCoinScanner( new int[] 5, 10, 20, 50, 100 ); protected static Display createdisplay() return new GraphicDisplay(); protected static Keyboard createkeyboard() return new GraphicKeyboard(); 35 Il diavolo sta nei dettagli Si supponga di inventare un nuovo tipo di vending machine che funzioni ad eventi piuttosto che in maniera sequenziale (EventsVendingMachine) come si colloca rispetto al resto del mondo? I componenti adatti alla macchina sequenziale (quelli studiati finora), sono anche adatti alla macchina ad eventi? Per la sola configurazione dei dispenser per una certa vending machine, deve essere per forza necessario cambiare il codice della factory? Per supportare la configurazione, come deve cambiare la factory? 36
19 Morale della favola Meccanismi Interfacce e classi astratte Ereditarietà e polimorfismo Sostituibilità in generale Package 37 Politiche Pratiche Morale della favola L interfaccia è l astrazione di più alto livello: in generale, è bene astrarre le entità riusabili tramite un interfaccia, concentrare la creazione in una factory e fare in modo che quest ultima sia l unica a dipendere dalle classi concrete piuttosto che sparpagliare creazioni e dipendenze per tutto il sistema Organizzazione dei package, in generale: Insieme le astrazioni correlate (dispositivi astratti, vending machine, ) Insieme le classi correlate (dispositivi concreti di un certo tipo) Suddividere in ulteriori package quando la complessità aumenta USARE IL BUON SENSO! 38
Vending Machine. Vending Machine Parti. Vending Machine - Responsabilità. Vending Machine Coordinamento. Fondamenti di Informatica T2 Modulo 2
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Un problema concreto Modellazione della
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli17 - Classi parzialmente definite: Classi Astratte e Interfacce
17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliOLTRE LE CLASSI OLTRE LE CLASSI
OLTRE LE CLASSI Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati,
DettagliOLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe
Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati, protetti, o
DettagliInterfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
DettagliOCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione Corso di Laurea in Informatica Astrarre sui dati Valeria Carofiglio (Questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) Obiettivi tipi di dato astratti
DettagliEspressioni: da dove si parte. Critiche al modello. Critiche al modello. Critiche al modello. Risultato. Fondamenti di Informatica T2 Modulo 2
Università degli Studi di Bologna Facoltà di Ingegneria Espressioni: da dove si parte Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 La struttura
DettagliEspressioni: da dove si parte
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Espressioni: da dove si parte La struttura
DettagliCalcolatrice in Java: esempi di DP
Calcolatrice in Java: esempi di DP In questo articolo vedremo come realizzare una piccola calcolatrice in Java, che ci permetterà di mettere in evidenza alcuni design pattern molto utili quando si programma.
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliFondamenti di Informatica
Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi
DettagliUML I diagrammi implementativi
Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - UML I diagrammi implementativi E. TINELLI I diagrammi implementativi In UML 2.x esistono 3 tipi di
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliIl pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione
Il pattern Factory Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione degli oggetti e delle problematiche
DettagliLaboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.
Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare
DettagliProgrammazione orientata agli oggetti Oggetti Composti. Oggetti composti
Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi
DettagliProgrammazione ad oggetti Modulo A Prova scritta 4 Settembre 2013
Programmazione ad oggetti Modulo A Prova scritta 4 Settembre 2013 Nome: Matricola: Istruzioni Scrivete il vostro nome sul primo foglio. Scrivete le soluzioni nello spazio riservato a ciascun esercizio.
DettagliPoiché è necessario che le selezioni si aggiornino automaticamente, occorre che queste siano notificate di ogni cambiamento pattern observer! Altro?
Processo di Sviluppo Design Requisiti del cliente Analisi del Dominio Analisi dei Rischi (Parziale) Analisi dei Requisiti Casi d uso Scenari Diagramma statico delle classi Design Ingegneria del Software
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
DettagliUML2. Package di Analisi. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino
UML2 Package di Analisi Andrea Polini Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino (Laboratorio di Ingegneria del Software) UML 2 Package di Analisi
DettagliClient - Interfaccia - Implementazione
Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliClassi astratte Interfacce
Classi astratte Interfacce Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Ereditarietà Abbiamo visto come L ereditarietà permette di costruire nuove classi utilizzando
DettagliCorso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010
Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno
Dettaglipublic protected private private package
Java nascondere l implementazione G. Prencipe prencipe@di.unipi.it Introduzione Un fattore importante nella OOP è la separazione tra le cose che possono cambiare e quelle che non devono cambiare Questo
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliNON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!
NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/
DettagliProgrammazione orientata agli oggetti Oggetti Composti. Oggetti composti
Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliPrincipi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2017-2018 Fondamenti di Java Ing. Obiettivi della lezione Introduzione alla programmazione Object Oriented Ereditarietà Polimorfismo Interfacce Eccezioni 2 1
DettagliFondamenti di Informatica L-A. Esercitazione 6
Fondamenti di Informatica L-A Esercitazione 6 Passaggio dei Parametri nelle Funzioni Ordinamento di Vettori Paolo Torroni Università degli Studi di Bologna Laurea in Ingegneria Elettronica e delle Telecomunicazioni
DettagliTipi riferimento e stringhe
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 8 Tipi riferimento e stringhe A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Tipi riferimento e stringhe 1
DettagliRICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica
Università degli Studi di Trieste Corso di Laurea Magistrale in INGEGNERIA CLINICA RICHIAMI DI PROGRAMMAZIONE A OGGETTI Corso di Informatica Medica Docente Sara Renata Francesca MARCEGLIA Dipartimento
DettagliUn tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo
TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti
DettagliUML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13
UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi
DettagliEreditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti
DettagliIl Linguaggio Java. Le interfacce
Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione
DettagliCLASS DIAGRAM PARTE 1
Istituto di Scienza e Tecnologie dell'informazione A. Faedo Software Engineering Laboratory CLASS DIAGRAM PARTE 1 UML The Unified Modeling Language Guglielmo De Angelis guglielmo.deangelis@isti.cnr.it
DettagliClassi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura
Classi astratte Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Rettangolo getarea() Quadrato getarea() getarea() Cerchio
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
DettagliAstrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari
Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliFondamenti di Informatica
Relazioni tra classi Fondamenti di Informatica 27. Standard UML 2. parte Generalizzazione: (ereditarietà) relazione in cui una classe (sottoclasse) eredita gli attributi e le operazioni di una superclasse:
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Incapsulamento versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 8 (proposta) Remote Procedure Call (RPC) Luca Foschini Anno accademico 2013/2014 Esercitazione 8 1 Specifica
DettagliInformatica Ereditarietà Java. Ereditarietà
Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi
DettagliInformatica per Statistica Riassunto della lezione del 21/10/2011
Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion
DettagliOggetti Composti (1) Oggetti Composti (2)
Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 26 novembre 2008 Considerate le seguenti definizioni di classi e interfacce in Java: class P {public static void print(string s){system.out.println(s);
DettagliPrincipi di Progettazione del Software. Principi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2016-2017 Fondamenti di Java Ing. Principi di Progettazione del Software https://twitter.com/rvergallo 2 1 Obiettivi della lezione Introduzione alla programmazione
DettagliMetodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi
Metodologie di Programmazione ovvero, Principi e Tecniche per la costruzione di programmi 1 In questo corso Sviluppo in piccolo: Tempi: mesi/uomo v.s. anni/uomo Strumenti: personal v.s. professional Programmazione
DettagliORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI
ORDINAMENTO PER SELEZIONE Per l analisi delle prestazioni di tale algoritmo di ordinamento, si considerano i due cicli for annidati: poiché i confronti avvengono nel ciclo interno si ha che n 2 i= 0 (
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Classi e oggetti(1) Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2018/2019 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 14 CLASSE: definizione Costrutto linguistico
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliCorso di Informatica
Corso di Informatica Modulo T1 C1 Incapsulamento e tecniche OOP 1 Prerequisiti Tecnica elementare della programmazione Principi di programmazione OOP Metodologie di progettazione software 2 1 Introduzione
DettagliCatia Trubiani. Laboratorio di Ingegneria del Software a.a
Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
DettagliSistemi Operativi. Processi e thread
Sistemi Operativi Processi e thread A.A. 2018-2019 Processi (e thread) Modello concettuale Creazione di processi 1. System initialization 2. Execution of a process-creation system call by a running process
DettagliProgettazione del Software Anno Accademico 2007/08
Laurea in Ingegneria Gestionale Progettazione del Software Anno Accademico 2007/08 Prof. Toni Mancini & Prof. Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato in funzione
DettagliImplementation diagram Component diagram - mostrano la struttura del codice Deployment diagram - mostrano la struttura del sistema run-time
Implementation diagram Component diagram - mostrano la struttura del codice Deployment diagram - mostrano la struttura del sistema run-time 1 Component diagrams evidenzia l'organizzazione e le dipendenze
DettagliLezione 13 Programmazione ad Oggetti
Programmazione Orientata agli Oggetti La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato in funzione
DettagliProgettazione Object-Oriented
Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia
DettagliObiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.
Obiettivi Unità B2 Gli oggetti: concetti avanzati Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione Ereditarietà L ereditarietà permette
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Classi e metodi astratti Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 15 Classa astratta: definizione
DettagliEsempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti
Dettagliereditarietà e polimorfismo
ereditarietà e polimorfismo Java ereditarietà o l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza o la nuova classe viene definita esprimendo solamente le differenze
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliEsame di Ingegneria del software (360II, 374II) Appello del 15 gennaio 2013
Esame di Ingegneria del software (360II, 374II) Appello del 5 gennaio 203 Nome e cognome: Matricola: Codice esame: 360II 374II Il punteggio relativo a ciascuna domanda, indicato fra parentesi, è in trentesimi.
DettagliRiuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili
Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne
DettagliProgrammazione Java Avanzata PATTERN
Programmazione Java Avanzata PATTERN Anno 2011/2012 Pattern Una soluzione progettuale generale a un problema ricorrente Elementi per il riuso di software ad oggetti Vantaggiosi e obbligatori da usare Pattern
DettagliInterfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable?
Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Interfaccia Comparable class Contatore implements Comparable
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Incapsulamento versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliFondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array
Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Interfaccia Comparable L altra volta abbiamo
DettagliAgenda Contatti - Requisiti. I Dati. Agenda Contatti. Detail. Detail. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A.
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Agenda Contatti - Requisiti Si desidera
DettagliIL CONCETTO DI CLASSE
IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliOOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
DettagliEreditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
DettagliInterfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato
Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione
DettagliInterfacce. Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi.
Interfacce Interfacce Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi tralasciando tutti gli aspetti di implementazione Interfacce interface
Dettagli