Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione...

15
Incapsulamento e information hiding

Transcript of Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione...

Page 1: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Incapsulamento e information hidingIncapsulamento e information hiding

Page 2: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Information hiding e IncapsulamentoInformation hiding e Incapsulamento

• Interfaccia– Definizione dei messaggi (metodi) possibili

– Unico punto di accesso per l’utente all’oggetto

• Implementazione– Realizzazione dell’azione corrispondente a un

messaggio

– Nascosta all’utente

– Dichiarazione di variabili private (attributi) che definiscono lo stato dell’oggetto

Page 3: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

MessaggioMessaggio

Messaggio

Metodo

Metodo

MetodoAttributo

Attributo

Attributo

Rappresentazione (a capsula) di un oggettoRappresentazione (a capsula) di un oggetto

Page 4: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Livelli di visibilità per gli attributi

Attraverso la visibilità si stabilisce se l’attributo è accessibile da altre classi:

publico l’attributo è accessibile da qualsiasi altra classe;

privato l’attributo è visibile solo all’interno della classe, quindi nessun’altra può variarne il valore;

protected (Java) l’attributo è accessibile dalle classi che appartengono alla stessa libreria e dalle sottoclassi.

Page 5: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Livelli di visibilità dei metodi

Per la visibilità dei metodi valgono le stesse regole poste per gli attributi

publico il metodo può essere richiamato da qualsiasi altra classe;

privato il metodo può essere richiamato solo all’interno della classe in cui è stato definito ;

protected (Java) il metodo è visibile solo dalle sottoclassi.

Solitamente i metodi vengono definiti publici

Page 6: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Information hidingInformation hiding

Metodi ed attributi dichiarati pubblici

Metodi ed attributi dichiarati privati

Messaggi provenienti da oggetti chiamanti

Marca Colore Cilindrata StatoMotore

MostraStato()AvviaMotore() Rifornimento()AvviaMotore()

Serbatoio CapacitàMax SpiaOlioSpiaFreni

TuttoOk()

Page 7: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Definendo un attributo STATICO si avrà una copia sola di quell’attributo per tutti gli oggetti di quella classe.Solitamente gli attributi non vengono dichiarati statici, quindi si ha per ogni oggetto una copia.

Un attributo statico, per cui, viene condiviso da tutte le istanze della classe.

Attributi e metodi di classe

Esempi:Nella classe Motocicletta quando si vuole indicare che tutte le motociclette hanno 2 ruote.

STATICO NumRuote 2

Nella classe Cerchio, il valore di Pigreco (3,14…) è unico in tutte le istanze.STATICO PI 3,14

Page 8: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Attributi e metodi di classe

I metodi statici vengono richiamati senza dover creare un oggetto di classe, infatti per invocarlo basta utilizzare il nome della classe e non dell’oggetto

<NomeClasse>.<MetodoStatico>

Esempio:Nella classe calcolatrice i metodi Addizione(), Sottrai(), Moltiplica() e Dividi()CLASSE CalcolatriceINIZIO PUBBLICO STATICO Addiziona(Op1:REALE; Op2: REALE): REALE INIZIO RITORNO( Op1 + Op2) FINE….FINE

Page 9: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Attributi e metodi di classe

MAIN() Op1, Op2: REALE Scelta: INTERO Esci : BOOLEANO INIZIO SCRIVI("-------MENU-------") SCRIVI("Inserisci il primo operando") LEGGI(Op1) SCRIVI("Inserisci il secondo operando") LEGGI(Op2) EsciFalso MENTRE(NOT Esci) ESEGUI INIZIO SCRIVI("MENU SCELTA OPERAZIONI") SCRIVI("Digita 1 per effettuare l’addizione ") SCRIVI("Digita 2 per effettuare la differenza ") SCRIVI("Digita 3 per effettuare la moltiplicazione ") SCRIVI("Digita 4 per effettuare la divisione ") SCRIVI("Digita 5 per terminare") LEGGI(Scelta)

NEL CASO CHE Scelta SIA 1:Calcolatrice.Addiziona(Op1, Op2) 2:Calcolatrice.Sottrai(Op1, Op2) 3:Calcolatrice.Moltiplica(Op1, Op2) 4:Calcolatrice.Dividi(Op1, Op2) 5:Esci Vero FINECASO

FINEMENTRE FINE

Page 10: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Oggetti come attributi: aggregazioni tra oggettiOggetti come attributi: aggregazioni tra oggetti

• Esiste un tipo di relazione tra classi: la relazione di “aggregazione”.

• E’ questa una relazione tra oggetti poichè serve per rappresentare gerarchie di oggetti relativi alle classi in relazione. In tali gerarchie ogni oggetto si presenta come aggregazione nel senso di “composizione” di altri oggetti.

• Una classe può “contenere” come attributi oggetti di altre classi

Page 11: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Oggetti come attributi: aggregazioni tra oggettiOggetti come attributi: aggregazioni tra oggetti

• CLASSE Motocicletta

• INIZIO

• Motore: MTR

• Tl: Telaio

• RTA: RuotaAnteriore

• RTP : RuotaPosteriore

• ……..

• FINE

Page 12: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Oggetti come attributi: aggregazioni tra oggettiOggetti come attributi: aggregazioni tra oggetti

Processo di aggregazione Processo di

scomposizione

relazione di aggregazione

molteplicità

1

1

1

1

1

1

Motore Telaio RuotaAnteriore RuotaPosteriore

Motocicletta

1

1 1

Page 13: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Oggetti come parametriOggetti come parametri

• Vediamo il costruttore della classe Motocicletta

• Motocicletta(pMTR: Motore, pTelaio:Telaio, pRTA:RuotaAnteriore, pRTP:RuotaPosteriore )

• INIZIO

• MTR Nuovo Motore()

• TL Nuovo Telaio()

• RTA Nuovo RuotaAnteriore()

• RTP Nuovo RuotaPosteriore()

• FINE

Page 14: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Vantaggi dei programmi a oggettiVantaggi dei programmi a oggetti

• La programmazione ad oggetti consente di:– Ridurre la dipendenza del codice di alto livello

dalla rappresentazione dei dati• l’accesso ai dati è mediato da un’interfaccia

– Riutilizzare del codice di alto livello• definendo opportune classi astratte

– Sviluppare moduli indipendenti l’uno dall’altro• I clienti che dipendono da interfacce che

non dipendono dalla loro implementazione• Le dipendenze da classi astratte sono

più “leggere”

Page 15: Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione dei messaggi (metodi) possibili –Unico punto di accesso.

Difetti del software non mantenibile Difetti del software non mantenibile

• Rigidità

– Non può essere cambiato con facilità

– Non può essere stimato l’impatto di una modifica

• Fragilità

– Una modifica singola causa una cascata di modifiche successive

– I bachi sorgono in aree concettualmente separate dalle aree dove sono avvenute le modifiche

• Non riusabilità

– Esistono molte interdipendenze, quindi non è possibile estrarre parti che potrebbero essere comuni