Programmazione a Oggetti Modulo B

Documenti analoghi
Modulo 4: Ereditarietà, interfacce e clonazione

Object Oriented Programming

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Concetto di Funzione e Procedura METODI in Java

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

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

Programmazione a Oggetti Lezione 10. Ereditarieta

Progettazione : Design Pattern Creazionali

Architettura MVC-2: i JavaBeans

Concetti di base di ingegneria del software

Funzioni in C. Violetta Lonati

Il calendario di Windows Vista

Aggiornamento v Integrazione al manuale d uso

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

Aggiornamento Titoli

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

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

CREA IL CATALOGO DEI TUOI PRODOTTI SU IPAD E IPHONE CON UN APP. ANZI, CON UPP!

Java: Compilatore e Interprete

Automazione Industriale (scheduling+mms) scheduling+mms.

Magazzino Virtuale Clienti

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

Programmazione in Java Parte I: Fondamenti

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

Access. P a r t e p r i m a

PROMOZIONI ISTRUZIONI DI UTILIZZO

Creare una nuova spedizione personalizzata.

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Guida all uso di Java Diagrammi ER

Oggetti Lezione 3. aspetti generali e definizione di classi I

Attività federale di marketing

la tua presenza e il tuo BUSINESS ON-LINE

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

manuale utente per Viabizzuno online

Aggiornamento v Integrazione al manuale d uso

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

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

Android. Implementare una interfaccia utente

Registratori di Cassa

CONTABILITÀ. Gestione Attività Multipunto. Release 5.20 Manuale Operativo

Gestione Risorse Umane Web

Esercitazione 1 del corso di Statistica 2 Prof. Domenico Vistocco

CONTABILITA ON LINE GUIDA ALL USO PER COMITATI PROVINCIALI E REGIONALI INSERIRE IN PRIMA NOTA I RICAVI

INSERIMENTO DATI BASILARI

7. Layer e proprietà degli oggetti

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

Manuale d'uso. Manuale d'uso Primo utilizzo Generale Gestione conti Indici di fatturazione Aliquote...

Guida ai prodotti DOP, IGT, etc. Proposta per la realizzazione di una App

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Database 1 biblioteca universitaria. Testo del quesito

I file di dati. Unità didattica D1 1

Corso di Informatica

Esercizi della lezione 5 di Java

Guida all uso. Esso sarà riportato nell intestazione. Vediamo:

Esercizio data base "Biblioteca"

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Collegamento remoto vending machines by do-dots

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

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

FABBISOGNO DI FINANZIAMENTO

Mac Application Manager 1.3 (SOLO PER TIGER)

Google AdWords. Corrispondenze Parole Chiave

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Inizializzazione, Assegnamento e Distruzione di Classi

CREAZIONE DI UN AZIENDA

Integrazione al Manuale Utente 1

USARE JOOMLA 1.7/2.5 per gestire il vostro sito.

Esercitazione n 4. Obiettivi

Mon Ami 3000 Cespiti Gestione cespiti e calcolo degli ammortamenti

Introduzione alla teoria dei database relazionali. Come progettare un database

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Strutturazione logica dei dati: i file

Programmi e Oggetti Software

La valutazione implicita dei titoli azionari

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Versione 7.0 Taglie e Colori. Negozio Facile

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Guida all uso del servizio

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Progettazione della componente applicativa

GESTIONE OPERATIVA E LOGISTICA DEGLI APPROVVIGIONAMENTI. Come aumentare l efficienza attraverso una nuova gestione del processo di approvvigionamento

Il Programma Operativo. Mentore. Rende ordinario quello che per gli altri è straordinario

Soluzione dell esercizio del 12 Febbraio 2004

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Organizzazione degli archivi

Per le società non quotate in mercati regolamentati

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

ALF0021M MANUALE UTENTE MODULO "SETUP"

Esercitazione di Basi di Dati

Programmazione Orientata agli Oggetti in Linguaggio Java

19. LA PROGRAMMAZIONE LATO SERVER

Vi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al

Transcript:

Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011

Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione ed esecuzione Aderenza ai principi della PO Funzionalità Inviare sorgenti progetto a roncato@dsi.unive.it 2

Negozio Scrivere un'applicazione Java per la gestione di una Negozio L'applicazione dovrà consentire: Al proprietario di inserire nuovi prodotti, registrare il ricevimento della merce, le vendite e i resi Il negozio vende vari tipi di prodotti che hanno gestioni differenti (es. scadenza, i.v.a. etc. diverese) Ulteriori dettagli emergeranno via via nel corso delle lezioni 3

Caratteristiche Non interessano aspetti grafici o di animazione, stretto necessario per poter utilizzare il codice scritto. Ecco un esempio di come potrebbe apparire una particolare funzionalità. 4

Esempio aspetto E' preferibile che i controlli siano attivati/disattivati in funzione della possibilità o meno di fare quell'attività 5

Come iniziare Nel Modulo B vedremo degli esempi (Design Patterns) che aiuteranno a progettare il codice seguendo i paradigmi della programmazione a oggetti. Inizieremo oggi cercando di capire come dividere il codice nei vari oggetti. IMPORTANTE: prima di scrivere codice Bisogna capire cosa e come scriverlo 6

A cosa serve la progettazione Nei casi reali prima di realizzare un qualsiasi manufatto è buona norma fare un progetto. Il progetto serve a: 1) idea del risultato finale (+ modello in scala) 2) stimare tempi e costi 3) controllare che le varie componenti siano compatibili tra di loro 4) dividere il lavoro tra più persone 5) etc. 7

A cosa serve la progettazione Prima di realizzare una qualsiasi applicazione è buona norma fare un progetto. Il progetto serve a: 1) idea del risultato finale (+ prototipo GUI) 2) stimare tempi e costi 3) controllare che le varie componenti siano compatibili tra di loro 4) dividere il lavoro tra più persone 5) etc. 8

Quanti oggetti? Se intendiamo gestire tutta la nostra applicazione con un unico oggetto, il risultato sarà molto simile all'approccio non orientato agli oggetti. Un unico spazio e tutto il codice e i dati presenti in questo spazio saranno strettamente dipendenti. 9

Svantaggi unico oggetto Non ho nessun vantaggio PO Difficile riuso Interdipendenza codice altissima Difficile debug Difficile manutenzione Difficile da suddividere l'implementazione con più persone NON SCRIVERE CODICE E DIVIDERE POI! 10

Quanti oggetti? Altra soluzione: un oggetto Java per ogni oggetto reale : Un oggetto Negozio Un oggetto Utente per ogni utente Un oggetto Prodotto per ogni prodotto Un oggetto Scontrino per ogni Vendita etc. ELENCARE TUTTI GLI OGGETTI 11

Vantaggi Facilmente divisibili tra i vari sviluppatori Ogni singolo componente è facilmente debuggabile, riusabile e mantenibile Lo spazio di dipendenza interna del codice è ridotto in quanto il codice è diviso in più parti C'é però interdipendenza esterna anche tra gli spazi: come limitarla? 12

Quanti oggetti? Visto che passando da un oggetto a tanti, abbiamo ottenuto dei vantaggi, perché non spingersi oltre e suddividere ulteriormente gli oggetti in modo da avere più oggetti Java di quelli del mondo reale? Aumenta la dipendenza esterna tra oggetti È più difficile da suddividere il lavoro tra programmatori 13

Quante classi? Tipi diversi di oggetti hanno bisogno di classi diverse, quindi il numero di classi corrisponde al numero di oggetti diversi (questo vale per tutti i linguaggi a oggetti fortemente tipati). Delle volte non è così semplice capire se due oggetti hanno bisogno di due classi diverse oppure se possono essere gestiti dalla stessa classe 14

Classi del progetto 1 oggetto di tipo Negozio => 1 classe Negozio Tanti oggetti di tipo Scaffale => 1 classe Tanti oggetti Utenti => 1 classe Tanti oggetti di tipo Prodotto => 1 classe Prodotto oppure 1 classe/interfaccia e più sottoclassi ( Alimentari, Riviste, Elettrodomestici, Casalinghi)? 15

Cos'è la dipendenza esterna? (*) C'è dipendenza esterna quando una classe ha a che fare con un'altra classe, cioè: 1) Una classe estende un'altra classe 2) Gli oggetti di una classe hanno una relazione con oggetti di un'altra 3) Un metodo di una classe usa un oggetto di un'altra classe 16

Esempio di dipendenza Estensione: la classe Elettrodomestico estende la classe Prodotto Relazione: un oggetto Scontrino è relativo a un Prodotto Uso: probabilmente il metodo che calcolatotale di un oggetto Carrello/Spesa avrà bisogno di accedere all'oggetto Prodotto per recuperare il prezzo. 17

Perché ridurre dipendenza? Una modifica (per debug, manutenzione, riuso etc.) ad una classe implica una possibile modifica alle classi dipendenti Quindi se due classi NON sono dipendenti, ho libertà di modificarle senza problemi 18

Come ridurre la dipendenza Riducendo la parte visibile dalle classi. L'incapsulamento dei linguaggi ad oggetti permette al compilatore di controllare la dipendenza tra classi La parte visibile è costituita dagli attribiti pubblici 19

Incapsulamento Incapsulamento codice = funzioni e procedure Incapsulamento dati = strutture (es. strutc del C) Incapsulamento di codice (metodi) + dati (variabili) + controllo visibilità = oggetti 20

A cosa serve? L'incapsulamento permette di controllare le dipendenze esterne rendendo invisibili alcune parti (che chiameremo interne o private) Oltre che al controllo della dipendenza, permette anche di evitare l'accesso non controllato rendendo più affidabile l'uso delle classi stesse 21

Analogia con il mondo reale Gli oggetti di uso più comune (lavatrice, radio etc.) vengono incapsulati per rendere inaccessibili la parte interna. L'involucro (oltre a una funzione estetica che non ci interessa) permette di aumentare la semplicità d'uso dell'oggetto stesso e ne impedisce un uso improprio. 22

In pratica? public class PRodott{ private String nome; private boolean isscaduto(){... }... public String getnome(){...} public double getprezzo(){...}... } Dipendenza 23

Java Bean Convenzione Java non ci sono campi (variabili d'istanza) pubblici; public Type getnome() proprietà in lettura nome di tipo Type public void setnome(type a) proprietà in scrittura nome di tipo Type (se il tipo è boolean get diventa is) public Oggetto () definito il costruttore di default 24

Ridurre dipendenza public class Prodotto{ String nome; Lotto lotto; public String getnome(){return nome;} public void setnome(string n) {nome=n;} public boolean isscaduto() {return now().after(lotto.getscadenza()); }... } 25

Come riduce dipendenza? Contrariamente a quanto previsto, si scopre che la data di scadenza non è la stessa per tutti i prodotti dello stesso lotto. Per questa ragione viene aggiunta anche la data di scadenza al singolo prodotto. 26

Come riduce dipendenza? public class Prodotto{ String nome; Calendar scadenza; public String getnome(){return nome;} public void setnome(string n) {nome=n;} public boolean isscaduto() {return now().after(scadenza);}... } 27

Come riduce dipendenza? Anche se l'implementazione della classe è cambiata (aggiunta di un attributo e modifica di un metodo), dato che la parte pubblica (interfaccia) non è cambiata, le altre classi non vengono influenzate da questa modifica. 28

Quali classi? Serve una classe per gli Scaffali Che vantaggi e svantaggi ci sono? E per i Clienti Hanno bisogno di una classe o basta una Stringa? Primo passo del progetto è elencare tutte le classi Secondo è stabilire le relazioni tra classi 29

Tipi di relazioni (*) Estensione (IS-A) Associazioni Dipendenze (uso di attributi) 30