Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione...
-
Upload
daniela-gallo -
Category
Documents
-
view
218 -
download
0
Transcript of Incapsulamento e information hiding. Information hiding e Incapsulamento Interfaccia –Definizione...
Incapsulamento e information hidingIncapsulamento e information hiding
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
MessaggioMessaggio
Messaggio
Metodo
Metodo
MetodoAttributo
Attributo
Attributo
Rappresentazione (a capsula) di un oggettoRappresentazione (a capsula) di un oggetto
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.
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
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()
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
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
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
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
Oggetti come attributi: aggregazioni tra oggettiOggetti come attributi: aggregazioni tra oggetti
• CLASSE Motocicletta
• INIZIO
• Motore: MTR
• Tl: Telaio
• RTA: RuotaAnteriore
• RTP : RuotaPosteriore
• ……..
• FINE
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
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
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”
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