A.Natali DL Maggio1999 Oggetti Concetti fondamentali
A.Natali DL Maggio1999 Cosa e un oggetto? u Un oggetto viene inteso come un centro di servizi capace di offrire agli altri oggetti (clienti) un insieme di attivita' (operazioni) senza che sia nota/accessibile l'organizzazione interna
A.Natali DL Maggio1999 Elaborazione e Interazione u Peter 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
A.Natali DL Maggio1999 Lidea di oggetto …. u integra la parte dati e la parte elaborazione u promuove approcci di progettazione e sviluppo sia top-down sia bottom-up u cattura i principi fondamentali di una corretta strutturazione del software u introduce un information space molto ricco e orientato alla gestione della complessita
A.Natali DL Maggio1999 Information space (object-ortiented)
A.Natali DL Maggio1999 Le proprieta di un oggetto 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
A.Natali DL Maggio1999 Il concetto di classe 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
A.Natali DL Maggio1999 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
A.Natali DL Maggio1999 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.
A.Natali DL Maggio1999 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'
A.Natali DL Maggio1999 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
A.Natali DL Maggio1999 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
A.Natali DL Maggio1999 Relazioni tra oggetti u Sono il punto-chiave della progettazione in grande u Sono oggi codificate in pattern
A.Natali DL Maggio1999 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.
A.Natali DL Maggio1999 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.
A.Natali DL Maggio1999 Sviluppo object oriented u Puo avvenire anche senza disporre a livello implementativo di un linguaggio ad oggetti? u SI: un buon punto di partenza e costituito da una riflessione sul concetto di tipo (astrazione) di dato e sul concetto di classe
A.Natali DL Maggio1999 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, incluse le modalita di costruzione degli oggetti
A.Natali DL Maggio1999 Quali criteri di suddivisione? u La ripartizione del codice sorgente in moduli e bene avvenga tenendo conto di alcuni principi fondamentali (propri della oop)
A.Natali DL Maggio1999 Invarianti u Un invariante e' una relazione logica (tra le parti che compongono un sistema) che e' sempre vera agli occhi di un osservatore esterno.
A.Natali DL Maggio1999 Invariante di classe u una relazione sullo stato interno vera prima e dopo ogni operazione di un oggetto