A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

20

Click here to load reader

Transcript of A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

Page 1: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti

Concetti fondamentali

Page 2: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Cosa e’ un oggetto?

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

Page 3: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Elaborazione e Interazione

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

Page 4: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

L’idea di oggetto ….

integra la “parte dati” e la “parte elaborazione”

promuove approcci di progettazione e sviluppo sia top-down sia bottom-up

cattura i principi fondamentali di una corretta strutturazione del software

introduce un information space molto ricco e orientato alla gestione della complessita’

Page 5: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Information space (object-ortiented)

Page 6: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Le proprieta’ di un oggetto

Un oggetto possiede stato, funzionamento e identita'.

Struttura e funzionamento di oggetti simili sono definiti nella loro classe comune (di cui sono istanze). – I termini istance ed object sono intercambiabili

Page 7: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Il concetto di classe

Una classe descrive la struttura interna e il funzionamento di un oggetto.

Gli oggetti di una stessa classe hanno la stessa rappresentazione interna, le stesse operazioni e lo stesso funzionamento

name

Attributes

Operations

Page 8: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti vs. algoritmi Gli algoritmi hanno un

funzionamento osservabile che non dipende dal tempo

Gli oggetti posseggono sia proprieta' trasformazionali sia proprieta' temporali.

Il funzionamento osservabile di un oggetto e' descritto da interaction histories che specificano i messaggi ricevuti e trasmessi

Page 9: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti vs. algoritmi Un algoritmo calcola

eseguendo una sequenza finita di azioni interne.

Un algoritmo e' un sistema off-line che specifica il flusso completo di una computazione prima che essa inizi

Un oggetto calcola attraverso un pattern di interazioni (interaction history) iniziate dall'esterno, al di fuori del controllo dell'oggetto.

Un oggetto e' un sistema on-line.

Page 10: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti vs. algoritmi Un algoritmo e' un sistema chiuso

non soggetto a interazioni con l'esterno durante il suo funzionamento

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'

Un oggetto e' un sistema aperto

Problemi interattivi come il problema della prenotazione dei posti aerei non hanno specifiche complete, ne' una definizione precisa di correttezza o di complessita'

Page 11: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti vs. algoritmi Un algoritmo determina la

trasformazione da un ingresso prespecificato (precondizioni) in una uscita (postcondizioni).

Il funzionamento di algoritmi puo' essere specificato da un "contratto" simile a un contratto di vendita.

I clienti forniscono un valore che soddisfa le precondizioni e si garantisce un risultato che soddisfa le postcondizioni.

Gli oggetti richiedono la specifica di un contratto che si prolunga nel tempo, come un contratto di matrimonio

Page 12: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Oggetti vs. algoritmi Gli algoritmi hanno come

requisito primario la correttezza e come requisito secondario l'efficienza

Gli algoritmi sono progettati mediante un raffinamento top-down delle specifiche

I sistemi software hanno come requisito primario il costo del ciclo di vita

Il progetto di un sistema ad oggetti parte da una descrizione bottom-up dell'ambiente di interazione

Page 13: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Relazioni tra oggetti

Sono il punto-chiave della progettazione “in grande”

Sono oggi codificate in “pattern”

Page 14: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Ereditarieta’

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.

Page 15: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Linguaggi ad oggetti

I linguaggi object oriented devono supportare incapsulamento ed ereditarieta', mentre quelli che supportano solo incapsulamento (come Ada, Modula2) sono da considerarsi object-based.

Page 16: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Sviluppo object oriented

Puo’ avvenire anche senza disporre a livello implementativo di un linguaggio ad oggetti?

SI: un buon punto di partenza e’ costituito da una riflessione sul concetto di tipo (astrazione) di dato e sul concetto di classe

Page 17: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Classi, moduli, ADT, tipi

Il costrutto class integra aspetti tipici dei costrutti per esprimere modularita' e dei costrutti per definire ADT

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

Page 18: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Quali criteri di suddivisione?

La ripartizione del codice sorgente in moduli e’ bene avvenga tenendo conto di alcuni principi fondamentali (propri della oop)

Page 19: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Invarianti

Un invariante e' una relazione logica (tra le parti che compongono un sistema) che e' sempre vera agli occhi di un osservatore esterno.

Page 20: A.Natali DL Maggio1999 Oggetti Concetti fondamentali.

A.Natali DL Maggio1999

Invariante di classe

una relazione sullo stato interno vera prima e dopo ogni operazione di un oggetto