java concetti a.natali marzo 19991 java dai concetti ai costrutti

27
Java concetti A.Natali Marzo 1999 1 Java Dai concetti ai costrutti

Upload: eligio-del-vecchio

Post on 01-May-2015

232 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

1

Java

Dai concetti ai costrutti

Page 2: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

2

Information space (object-ortiented)

Page 3: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 4: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 5: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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);

Page 6: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

6

… occorre anche dare struttura

c1

Conto corrente

cliente

servitore

c1.deposit( 10 ); //depositoc1.debit( 50 ); //prelievo

Page 7: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

7

Elementi strutturali: evoluzione

Blocchi– protezione (scope)

Moduli– incapsulamento, protezione– singole istanze di oggetti

Oggetti Classi

Page 8: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 9: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 10: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 11: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 12: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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'

Page 13: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 14: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 15: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 16: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

16

Dimensioni dell’information space

Oggetti Classi Tipi Astrazione / Incapsulamento Delegazione/ Ereditarieta'

Page 17: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 18: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 19: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 20: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 21: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 22: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 23: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 24: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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

Page 25: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

Java concetti A.Natali Marzo 1999

25

Delegazione

Una relazione tra oggetti

Page 26: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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.

Page 27: Java concetti A.Natali Marzo 19991 Java Dai concetti ai costrutti

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