Java concetti A.Natali Marzo Java Dai concetti ai costrutti
Java concetti A.Natali Marzo Information space (object-ortiented)
Java concetti A.Natali Marzo Progettazione u Top down (per analisi) –dal problema al sistema che lo risolve u Bottom up (per sintesi) –dai componenti disponibili alla soluzione del problema
Java concetti A.Natali Marzo I componenti di base u Variabili –contenitori di informazione (e non sinonimi di dati) u Funzioni –enti dotati di interfacce che possono essere composti u Oggetti –elementi di sintesi
Java concetti A.Natali Marzo Non basta risolvere... int conto conto = conto + 10; //deposito … conto = conto - 50;//prelievo conto = debit (deposit (conto, 10), 20);
Java concetti A.Natali Marzo … occorre anche dare struttura c1 Conto corrente cliente servitore c1.deposit( 10 ); //deposito c1.debit( 50 );//prelievo
Java concetti A.Natali Marzo Elementi strutturali: evoluzione u Blocchi –protezione (scope) u Moduli –incapsulamento, protezione –singole istanze di oggetti u Oggetti Classi
Java concetti A.Natali Marzo Oggetti u Un oggetto viene inteso come un centro di servizi capace di offrire agli altri oggetti (clienti) un insieme di attivita' (operazioni u i clienti non devono conoscere dettagli irrilevanti, come ad esempio l'organizzazione interna del centro di servizio stesso
Java concetti A.Natali Marzo Oggetti u Wegner: –gli oggetti sono la classe piu' usata di interaction machines –la tecnologia object based e' divenuta dominante perche' e' interattiva e quindi piu' espressiva di una specifica algoritmica
Java concetti A.Natali Marzo Oggetti vs. algoritmi u Gli algoritmi hanno un funzionamento osservabile che non dipende dal tempo u Gli oggetti posseggono sia proprieta' trasformazionali sia proprieta' temporali. u Il funzionamento osservabile di un oggetto e' descritto da interaction histories che specificano i messaggi ricevuti e trasmessi
Java concetti A.Natali Marzo Oggetti vs. algoritmi u Un algoritmo calcola eseguendo una sequenza finita di azioni interne. u Un algoritmo e' un sistema off- line che specifica il flusso completo di una computazione prima che essa inizi u Un oggetto calcola attraverso un pattern di interazioni (interaction history) iniziate dall'esterno, al di fuori del controllo dell'oggetto. u Un oggetto e' un sistema on-line.
Java concetti A.Natali Marzo Oggetti vs. algoritmi u Un algoritmo e' un sistema chiuso non soggetto a interazioni con l'esterno durante il suo funzionamento u Problemi di natura algoritmica possono essere definiti da specifiche formali, sono implementati da programmi la cui correttezza puo' essere dimostrata in linea di principio e hanno una precisa nozione di complessita' u Un oggetto e' un sistema aperto u Problemi interattivi come il problema della prenotazione dei posti aerei non hanno specifiche complete, ne' una definizione precisa di correttezza o di complessita'
Java concetti A.Natali Marzo Oggetti vs. algoritmi u Un algoritmo determina la trasformazione da un ingresso prespecificato (precondizioni) in una uscita (postcondizioni). u Il funzionamento di algoritmi puo' essere specificato da un "contratto" simile a un contratto di vendita. u I clienti forniscono un valore che soddisfa le precondizioni e si garantisce un risultato che soddisfa le postcondizioni. u Gli oggetti richiedono la specifica di un contratto che si prolunga nel tempo, come un contratto di matrimonio
Java concetti A.Natali Marzo Oggetti vs. algoritmi u Gli algoritmi hanno come requisito primario la correttezza e come requisito secondario l'efficienza u Gli algoritmi sono progettati mediante un raffinamento top- down delle specifiche u I sistemi software hanno come requisito primario il costo del ciclo di vita u Il progetto di un sistema ad oggetti parte da una descrizione bottom-up dell'ambiente di interazione
Java concetti A.Natali Marzo Linguaggi ad oggetti u I linguaggi object oriented devono supportare incapsulamento ed ereditarieta', mentre quelli che supportano solo incapsulamento (come Ada, Modula2) sono da considerarsi object-based.
Java concetti A.Natali Marzo Dimensioni dellinformation space u Oggetti u Classi u Tipi u Astrazione / Incapsulamento u Delegazione/ Ereditarieta'
Java concetti A.Natali Marzo Oggetti u Un oggetto possiede stato, funzionamento e identita'. u Struttura e funzionamento di oggetti simili sono definiti nella loro classe comune (di cui sono istanze). –I termini istance ed object sono intercambiabili
Java concetti A.Natali Marzo Classi u Una classe descrive la struttura interna e il funzionamento di un oggetto. u Gli oggetti di una stessa classe hanno la stessa rappresentazione interna, le stesse operazioni e lo stesso funzionamento name Attributes Operations
Java concetti A.Natali Marzo Classi, moduli, ADT, tipi u Il costrutto class integra aspetti tipici dei costrutti per esprimere modularita' e dei costrutti per definire ADT u Il concetto di classe non coincide con il concetto di tipo –La classe puo' essere intesa come la specifica implementazione di un tipo
Java concetti A.Natali Marzo Tipi u Sono meccanismi per la classificazione delle operazioni. u Nel caso di un type system statico, la determinazione del tipo deve essere fatta a tempo di compilazione e il run time system puo' non avere alcuna informazione sul tipo.
Java concetti A.Natali Marzo Tipi u L'esistenza di informazione sui tipi a tempo di esecuzione (type system dinamico) puo' rendere superflua la presenza delle classi. –Poiche' un tipo puo' essere visto come una descrizione astratta del funzionamento di un oggetto, la nozione di sottoclasse puo' essere sostituita da quella di sottotipo.
Java concetti A.Natali Marzo Astrazione u si focalizza sul funzionamento osservabile di un oggetto e "helps people to think about what they are doing –Qualunque sia l'implementazione scelta per una classe di oggetti, essa e' inessenziale agli occhi del cliente, una volta che assicuri il rispetto del contratto tra il cliente e un oggetto di quella classe stabilito dall'interfaccia.
Java concetti A.Natali Marzo Incapsulamento u si focalizza sull'implementazione e "allows program changes to be reliably made with limited effort". u Astrazione e incapsulamento sono concetti complementari.
Java concetti A.Natali Marzo Interfaccia e implementazione u L'interfaccia di un oggetto esprime una vista astratta degli oggetti nascondendone l'organizzazione interna e i dettagli del funzionamento. u L'implementazione di un oggetto esprime la rappresentazione dello stato interno e il codice delle operazioni
Java concetti A.Natali Marzo Delegazione u Una relazione tra oggetti
Java concetti A.Natali Marzo Ereditarieta u una relazione tra classi in cui una classe condivide la struttura e/o il funzionamento definito in un'altra classe (ereditarieta' singola) o in varie altre classi (ereditarieta' multipla) –L'idea di ereditarieta' scaturisce dall'esigenza di introdurre un meccanismo per condividere (parti di) una descrizione, cioe' per riusare codice gia' scritto e provato.
Java concetti A.Natali Marzo Idiomi, framework u Classi astratte ( tipi astratti e tipi concreti ) Envelope letter ( un cliente manipola un oggetto (letter, body) attraverso speciali contenitori (envelopes, handlers) che contengono un puntatore all'oggetto ) u Delegazione implicita ( demandare l'accesso a un oggetto a un altro oggetto - smart pointers C++ ) u Callback u MVC