java concetti a.natali marzo 19991 java dai concetti ai costrutti
TRANSCRIPT
Java concetti A.Natali Marzo 1999
1
Java
Dai concetti ai costrutti
Java concetti A.Natali Marzo 1999
2
Information space (object-ortiented)
Java concetti A.Natali Marzo 1999
3
Progettazione
Top down (per analisi)– dal problema al sistema che lo risolve
Bottom up (per sintesi)– dai componenti disponibili alla soluzione del
problema
Java concetti A.Natali Marzo 1999
4
I componenti di base
Variabili– contenitori di informazione (e non sinonimi di
dati) Funzioni
– enti dotati di interfacce che possono essere composti
Oggetti– elementi di sintesi
Java concetti A.Natali Marzo 1999
5
Non basta risolvere ...int conto
conto = conto + 10; //deposito…conto = conto - 50; //prelievo
conto = debit (deposit (conto , 10), 20);
Java concetti A.Natali Marzo 1999
6
… occorre anche dare struttura
c1
Conto corrente
cliente
servitore
c1.deposit( 10 ); //depositoc1.debit( 50 ); //prelievo
Java concetti A.Natali Marzo 1999
7
Elementi strutturali: evoluzione
Blocchi– protezione (scope)
Moduli– incapsulamento, protezione– singole istanze di oggetti
Oggetti Classi
Java concetti A.Natali Marzo 1999
8
Oggetti
Un oggetto viene inteso come un centro di servizi capace di offrire agli altri oggetti (clienti) un insieme di attivita' (operazioni
i clienti non devono conoscere dettagli irrilevanti, come ad esempio l'organizzazione interna del centro di servizio stesso
Java concetti A.Natali Marzo 1999
9
Oggetti
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 1999
10
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
Java concetti A.Natali Marzo 1999
11
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.
Java concetti A.Natali Marzo 1999
12
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'
Java concetti A.Natali Marzo 1999
13
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
Java concetti A.Natali Marzo 1999
14
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
Java concetti A.Natali Marzo 1999
15
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.
Java concetti A.Natali Marzo 1999
16
Dimensioni dell’information space
Oggetti Classi Tipi Astrazione / Incapsulamento Delegazione/ Ereditarieta'
Java concetti A.Natali Marzo 1999
17
Oggetti
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
Java concetti A.Natali Marzo 1999
18
Classi
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
Java concetti A.Natali Marzo 1999
19
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
Java concetti A.Natali Marzo 1999
20
Tipi
Sono meccanismi per la classificazione delle operazioni.
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 1999
21
Tipi
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 1999
22
Astrazione
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 1999
23
Incapsulamento
si focalizza sull'implementazione e "allows program changes to be reliably made with limited effort".
Astrazione e incapsulamento sono concetti complementari.
Java concetti A.Natali Marzo 1999
24
Interfaccia e implementazione
L'interfaccia di un oggetto esprime una vista astratta degli oggetti nascondendone l'organizzazione interna e i dettagli del funzionamento.
L'implementazione di un oggetto esprime la rappresentazione dello stato interno e il codice delle operazioni
Java concetti A.Natali Marzo 1999
25
Delegazione
Una relazione tra oggetti
Java concetti A.Natali Marzo 1999
26
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.
Java concetti A.Natali Marzo 1999
27
Idiomi, framework
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 ) Delegazione implicita (demandare l'accesso a un
oggetto a un altro oggetto - smart pointers C++) Callback MVC