La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Incapsulamento e information hiding

Presentazioni simili


Presentazione sul tema: "Incapsulamento e information hiding"— Transcript della presentazione:

1 Incapsulamento e information hiding

2 Information 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

3 Rappresentazione (a capsula) di un oggetto
Messaggio Metodo Attributo Attributo Attributo

4 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.

5 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

6 Information hiding Marca Colore Cilindrata StatoMotore MostraStato()
AvviaMotore() Rifornimento() AvviaMotore() Messaggi provenienti da oggetti chiamanti Metodi ed attributi dichiarati pubblici Serbatoio CapacitàMax SpiaOlio SpiaFreni TuttoOk() Metodi ed attributi dichiarati privati

7 Attributi e metodi di classe
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. 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

8 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 Calcolatrice INIZIO PUBBLICO STATICO Addiziona(Op1:REALE; Op2: REALE): REALE RITORNO( Op1 + Op2) FINE ….

9 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) EsciFalso MENTRE(NOT Esci) ESEGUI 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

10 Oggetti 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

11 Oggetti come attributi: aggregazioni tra oggetti
CLASSE Motocicletta INIZIO Motore: MTR Tl: Telaio RTA: RuotaAnteriore RTP : RuotaPosteriore …….. FINE

12 Oggetti come attributi: aggregazioni tra oggetti
1 relazione di aggregazione Motocicletta Processo di aggregazione Processo di scomposizione molteplicità 1 1 1 1 1 1 1 1 Motore Telaio RuotaAnteriore RuotaPosteriore

13 Oggetti 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

14 Vantaggi 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”

15 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


Scaricare ppt "Incapsulamento e information hiding"

Presentazioni simili


Annunci Google