19
T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 1 Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08 Laurea in Ingegneria Gestionale Progettazione del Software Anno Accademico 2007/08 Prof. Toni Mancini & Prof. Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma “La Sapienza” S.I.3 - Principi di base dell’orientazione agli oggetti

Progettazione del Software - Toni Mancini: Home pagetmancini.di.uniroma1.it/teaching/courses/2007-2008/prosw/materiale... · Progettazione del Software, Laurea in Ingegneria Gestionale,

  • Upload
    vancong

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 1

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Laurea in Ingegneria Gestionale

Progettazione del SoftwareAnno Accademico 2007/08

Prof. Toni Mancini & Prof. Monica ScannapiecoDipartimento di Informatica e Sistemistica

Università di Roma “La Sapienza”

S.I.3 - Principi di base dell’orientazione agli oggetti

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 2

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Funzioni od Oggetti ?funzioni

oggettimanipolati

orientazionealle funzioni

funzioni dimanipolazione

oggetti

orientazioneagli oggetti

Molte delle tecniche tradizionali sonobasate sull'idea di costruire un sistemaconcentrandosi sulle funzioni

Le tecniche Object-Oriented (OO)rovesciano questo rapporto: unsistema viene costruito partendodalla classificazione degli oggetti damanipolare

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 3

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

QuindiLa progettazione del SW con l'approccio OO è il metodo checonduce a concentrarsi sugli oggetti che il sistema devemanipolare piuttosto che sulle funzioni che deve realizzare.

Non chiederti cosa fa il sistema ma a cosa serve, di qualioggetti è composto, e come si opera su di essi!

a cosa

cosa

come

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 4

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Tecnica tradizionale: sviluppo funzionale

• Introduzione di funzioni troppo astratte/innaturali• Declassamento degli aspetti relativi ai dati• Attenzione agli aspetti meno stabili (metodi di manipolazione)

rispetto a quelli più stabili (informazioni da gestire)• Creazione di moduli validi solo in un contesto• Estendibilità e riusabilità (qualità esterne) difficili da raggiungere

A

C DB

FE HG

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 5

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Principi di base dell'approccio OO

• Modellare gli aspetti della realtà di interesse nelmodo più diretto ed astratto possibile (strutturazione),mediante le nozioni di oggetto, classi e relazioni

• Costruire il programma in termini di moduli, sullabase del principio che ogni classe è un modulo(modularità)

• Legare gli aspetti comportamentali a quelli strutturali• Proteggere le parti delicate del SW permettendo solo

un accesso controllato a dati e funzioni (concetto diinterfaccia)

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 6

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Fondamenti dell'approccio OOElementi di base

oggetti

classiproprietà

ereditarietà

Estensioni

metaclassi

metodi

information hiding oggetti complessi

polimorfismo

concorrenza

... altro ....

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 7

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Oggetti• Elemento che ha vita propria e che è caratterizzato

da un identificatore e da un insieme di proprietà(sia locali sia in relazione con altri oggetti)

DivComm : Libro

Titolo = “La divina commedia”

- DivComm è l’identificatore

- Titolo è una proprietà locale ed il valore associato a tale proprietà è una stringa

oggetto

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 8

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Oggetti• Elemento che ha vita propria e che è caratterizzato da un

identificatore e da un insieme di proprietà, sia locali(attributi) sia in relazione con altri oggetti

DivComm : Libro

Titolo = “La divina commedia”

dante : Persona

Nome = “Dante”

firenze : Città

Nome = “Firenze”

autorenato_a

Relazione traoggetti (link)

Relazione traoggetti (link)

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 9

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Classi• Rappresentano un naturale meccanismo umano di

astrazione che spinge a concentrarsi sulle proprietà comunidi oggetti (istanze della classe) differenti. Una classe e'descritta da:– un nome– un insieme di proprietà (astrazioni delle proprietà comuni degli

oggetti che sono istanze delle classi)

DivComm : Libro

Titolo = “La divina commedia”

Libro

Titolo: stringaInstance-of

oggetto classe

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 10

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Relazioni• Rappresentano il meccanismo per definire legami

tra classi (a cui corrispondono legami tra glioggetti che sono istanze delle classi)

Libro

Titolo: stringa

Persona

Nome: stringaautore

Relazione

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 11

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Livello degli oggetti e livello delle classi• Oggetti e classi appartengono a livelli diversi:

– Livello estensionale (degli oggetti, o delle istanze)– Livello intensionale (livello delle classi)

Libro

Titolo: stringa

Persona

Nome: stringaautore

Città

Nome: stringanato_a

DivComm: Libro

Titolo = “La divina commedia”

dante: Persona

Nome = “Dante”autore

firenze: Città

Nome = “Firenze”nato_a

Instance-of Instance-of Instance-of

Livellointensionale

Livelloestensionale

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 12

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Livello delle relazioni e livello dei link• Analogamente a classi e oggetti, relazioni e link

appartengono a livelli diversi:– Livello estensionale (dei link, ovvero istanze delle relazioni)– Livello intensionale (livello delle relazioni)

Libro

Titolo: stringa

Persona

Nome: stringaautore

Città

Nome: stringanato_a

DivComm: Libro

Titolo = “La divina commedia”

dante: Persona

Nome = “Dante”autore

firenze: Città

Nome = “Firenze”nato_a

Instance-of Instance-of Instance-of

Livellointensionale

Livelloestensionale

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 13

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Derivazione ed EreditarietàPuò succedere che tra due classi sussista una relazionespeciale, e cioè che ogni istanza di una sia anche istanzadell’altra. In questo caso la relazione si chiama “is-a”, e siindica come una freccia dalla classe sottoinsieme (dettaanche classe derivata) alla classe superinsieme.

Libro

Titolo: stringa

Persona

Nome: stringaautore

LibroStorico

Relazioneis-a

Classederivata

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 14

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Derivazione ed EreditarietàLa classe sottoinsieme eredita tutte le proprietàdella classe soprainsieme, e può avere ulterioriproprietà.

Libro

Titolo: stringa

Persona

Nome: stringaautore

LibroStorico

Epoca:ulterioreproprietà

Epoca: stringa

Titolo:ereditato da

Libro

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 15

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

PolimorfismoPossibilità per un oggetto diassumere più forme.

Nota: deriva direttamente dalla ereditarietà

Libro

Titolo: stringa

LibroStorico

Epoca: stringa

Romanzo

Classepolimorfa

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 16

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Metodi

• Proprietà di una classe:– Statiche: attributi, relazioni– Dinamiche: metodi (un metodo può essere utilizzato percalcolare in modo dinamico una proprietà e anche per catturaredegli aspetti comportamentali degli istanze della classe – adesempio il metodo ISCRIZIONE per la classe STUDENTE).

public class Persona { public String nome; private Data dataNascita;

public int Eta(Data oggi) { return oggi – dataNascita; } }

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 17

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Incapsulamento

• Con tale termine si intende l'assemblaggio di datied operazioni in una unica entità.

• La classe è il costrutto primario per tale proprietà:tramite il costrutto di classe è infatti possibilespecificare la struttura di un insieme di oggettiunitamente al loro comportamento dinamico.

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 18

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

Visibilità delle proprietà

• Pubblico– la proprietà è visibile da tutte le altre classi

• Privato– la proprietà è visibile solo all'interno della classe in cui

e' definita• Protetto

– la proprietà è visibile solo all'interno della classe in cuie' definita ed in tutte le classi che da lei ereditano

T. Mancini & M. Scannapieco S.I.3 – Pincipi di base dell’OO – January 10, 2008 19

Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08

ESTERNE Correttezza

AffidabilitàRobustezzaSicurezzaInnocuitàUsabilitàEstendibilità favorita dalla ereditarietà

Riusabilità favorita dal concetto di classe e di ereditarietà

Interoperabilità

INTERNE

EfficienzaStrutturazione favorita dal concetto di incapsulamento e dalla ereditarietà

Modularità favorita dal concetto di classe

Comprensibilità favorita dalla struttura vicina al

modo in cui vediamo la realtà

VerificabilitàManutenibilitàPortabilità

Fattori di qualità influenzati dall'approccio OO