Concetti Oo Classe

22
SECONDA PARTE INTRODUZIONE AI CONCETTI DELLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI IL CONCETTO DI CLASSE II° Lezione per la IV A liceo tecnico – 17 ottobre 2008

description

 

Transcript of Concetti Oo Classe

Page 1: Concetti Oo Classe

SECONDA PARTE INTRODUZIONE AI CONCETTI DELLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTIIL CONCETTO DI CLASSE

II° Lezione per la IV A liceo tecnico – 17 ottobre 2008

Page 2: Concetti Oo Classe

LE CLASSI SONO STAMPINI DI OGGETTI La classe è uno stampino che crea oggetti Pertanto gli oggetti sono creati dalle classi Una classe è un tipo di dato di più alto livello

Page 3: Concetti Oo Classe

CREAZIONE DI OGGETTI CON LA CLASSE Per creare un numero intero o un numero

decimale: int x; float y;

Allo stesso modo per creare un oggetto usando una classe predefinita: Persona persona; new Persona();

Persona è la classe, persona (minuscola) è l’oggetto

Page 4: Concetti Oo Classe

ESEMPIO DI CLASSE PERSONA public class Persona{

private String nome;private String indirizzo;public String getNome(){

return nome;}public void setNome(String n){

nome=n;}

public String getIndirizzo(){return nome;

}public void setIndirizzo(String ind){

indirizzo=ind;}

}

Page 5: Concetti Oo Classe

LA CLASSE È UN NUOVO TIPO DI STRUTTURA La classe è una nuova struttura Dentro la classe si incapsulano gli attributi e le

funzioni Per ottenere questo risultato, questa struttura

ha una dichiarazione con la parola class seguita dal nome della classe Persona

Dopo la dichiarazione c’è il corpo della classe racchiuso tra una coppia di parentesi graffe {…}

Nel corpo della classe sono incapsulati: Tutti gli attributi della classe Tutti i metodi (ossia il comportamento della classe)

Page 6: Concetti Oo Classe

ATTRIBUTI DI UNA CLASSE Ogni classe definisce al suo interno gli

attributi che servono a memorizzare lo stato (ossia i valori specifici) di ciascun oggetto instanziato da questa classe.

Nell’esempio precedente, la classe Persona definisce gli attributi nome e indirizzo

Quando un oggetto persona viene creato a questi attributi viene assegnato un valore preciso

Ad esempio nome=“Mario”,indirizzo=“via del gelato”

Page 7: Concetti Oo Classe

VISIBILITÀ E ACCESSO AD UN ATTRIBUTO Quando un attributo è definito public, altri

oggetti possono immediatamente e direttamente accedere al suo valore

Quando invece un attributo è definito privato, gli altri oggetti non possono accedervi, ma solo l’oggetto che lo possiede può leggerne il valore e modificarlo

Page 8: Concetti Oo Classe

I METODI I metodi implementano il comportamento richiesto dalla

classe Ogni oggetto instanziato dalla sua classe ha i metodi

definiti nella classe I metodi possono implementare il comportamento che è

richiesto dai messaggi inviati da altri oggetti Oppure forniscono un fondamentale comportamento

interno alla classe medesima In questo caso i metodi sono privati e non sono accessibili da

altri oggetti. Nella classe Persona i comportamenti sono getNome(),

setNome(), getIndirizzo(), setIndirizzo(). Questi metodi permettono ad altri oggetti di ispezionare

e modificare i valori degli attributi degli oggetti In ogni caso, l’accesso ai valori degli attributi di un

oggetto deve essere controllato dall’oggetto medesimo Nessun oggetto dovrebbe direttamente modificare un

attributo di un altro.

Page 9: Concetti Oo Classe

I MESSAGGI I messaggi rappresentano il meccanismo di

comunicazione tra gli oggetti. Ad esempio, quando un oggetto A invoca un

metodo di un oggetto B, diciamo che l’oggetto A sta inviando un messaggio all’oggetto B.

La risposta dell’oggetto B è definita dal valore che restituisce.

Solo i metodi pubblici di un oggetto possono essere invocati da un altro oggetto

Ai metodi privati non si può inviare nessun messaggio

Page 10: Concetti Oo Classe

ESEMPIO DI MESSAGGIO public class Pagatore{

String nome;public void messaggiPagatore(){ Persona p=new Persona(); p.setNome(“Giovanni”); String nome=p.getNome();

} :Pagatorep :Personanew Persona()

setNome(“Giovanni”)getNome()

Page 11: Concetti Oo Classe

UML PER MODELLIZZARE UNA CLASSE Unified Modeling Language Una classe è un rettangolo con tre scomparti

Nel primo in alto c’è il nome della classe In quello intermedio ci sono gli attributi In basso ci sono i metodi della classe

Page 12: Concetti Oo Classe

INCAPSULAMENTO E DATA HIDING Un oggetto non deve rivelare tutti i suoi

attributi e tutti i suoi comportamenti Deve solo mastrare quell’interfaccia che gli

altri oggetti devono usare per interagire con lui Tutti quei dettagli che non sono pertinenti

all’uso dell’oggetto devono essere nascosti agli altri

L’incapsulamento significa che un oggetto contiene sia i suoi attributi che i suoi comportamenti.

Il nascondere dei dati fa parte dell’incapsulamento

Page 13: Concetti Oo Classe

ESEMPIO INCAPSULAMENTO Un oggetto che calcola il quadrato di un

numero deve fornire un’interfaccia affinchè altri oggetti possano ottenere il risultato del suo calcolo

Tuttavia non è necessario che siano resi disponibili, all’oggetto che richiede il risultato dell’operazione, gli attributi interni e l’algoritmo usato per calcolare il quadrato

a fondamento dell’incapsulamento sono i concetti: Interfaccia Implementazione

Page 14: Concetti Oo Classe

INTERFACCIA L’interfaccia definisce i mezzi fondamentali per

la comunicazione tra oggetti Ogni classe specifica le opportune interfacce per

la instanziazione e l’operazione degli oggetti Ogni operazione che l’oggetto fornisce deve

essere richiesta con un messaggio inviato ad una delle interfacce che ha reso disponibili

Un interfaccia deve completamente descrivere come gli utenti di quella classe possono e devono interagire con essa

I metodi dell’interfaccia devono essere definiti public

Page 15: Concetti Oo Classe

INTERFACCIA: DATA HIDING Per attivare la protezione dei dati (data

hiding), i loro attributi devono essere definiti private.

Pertanto gli attributi non sono mai parte dell’interfaccia

Solo i metodi pubblici fanno parte dell’interfaccia

Dichiarare un attributo pubblico frantuma il concetto di data hiding

Page 16: Concetti Oo Classe

ESEMPIO DI INTERFACCIA Il calcolo del quadrato di un numero L’interfaccia è fatta da due pezzi:

Come instanziare un oggetto Quadrato Come inviare un valore numerico a questo

oggetto ed ottenere in risposta il valore del suo quadrato

Page 17: Concetti Oo Classe

ACCESSO AL VALORE DI UN ATTRIBUTO PRIVATO Se un oggetto vuole accedere ad un

attributo, viene scritto un metodo (getter) che restituisce il valore di quell’attributo

In questo modo l’oggetto che contiene quell’attributo ne controlla l’accesso

Per la sicurezza non vogliamo che un codice non controllato possa modificare o conoscere dei dati quali passord ed informazioni personali

Page 18: Concetti Oo Classe

IMPLEMENTAZIONE L’interfaccia sono gli attributi e i metodi pubblici Gli altri oggetti non devono vedere nessuna parte

dell’implementazione Un oggetto può, deve interagire con un altro oggetto

solo il tramite delle interfacce della classe In molti casi ci sono dei metodi che devono essere

nascosti dichiarandoli private e pertanto questi non appartengono all’interfaccia

Nell’esempio del calcolo del quadrato, all’utente (un oggetto) non necessita sapere come è stato calcolato, ma di avere il risultato corretto

Pertanto l’implementazione può cambiare, ma se l’interfaccia non cambia, per l’oggetto utente non fa differenza alcuna e non deve modificare il suo codice

Ad esempio l’azienda che produce la calcolatrice può cambiare l’algoritmo del calcolo per renderlo più efficiente senza alterare il modo con cui è presentato nel display

Page 19: Concetti Oo Classe

IL PARADIGMA INTERFACCIA/IMPLEMENTAZIONE Il toast per funzionare richiede l’elettricità Per ottenerla il suo cavo di alimentazione deve essere

adattato alla presa elettrica La presa elettrica è l’interfaccia Ogni dispositivo per ottenere l’elettricità deve usare un cavo

con un attacco che soddisfi le specifiche della presa elettrica Questa è l’interfaccia tra la compagnia elettrica ed il toast !

Page 20: Concetti Oo Classe

UN MODELLO DEL PARADIGMA INTERFACCIA/IMPLEMENTAZIONE Scriviamo una classe cha calcola i quadrati

dei numeri interi Nel disegno della classe, il segno (+) significa

pubblico, quello (-) privato Pertanto identifichiamo l’interfaccia dai

metodi prefissi con il segno (+)

Page 21: Concetti Oo Classe

ESEMPIO CALCOLO DEI QUADRATI DEI NUMERI INTERI Bisogna fornire una interfaccia ed una separata implementazione Occorre cioè fornire un modo all’utente di richiedere ed ottenere

l’operazione del quadrato Si deve anche scrivere l’implementazione cha calcola il quadrato,

ma l’utente non deve saper nulla della sua specifica implementazione

public class intQuadrato{private int quadratoValore// interfacciapublic int getQuadrato(int value){

quadratoValore=calcolaQuadrato(value);return quadratoValore;

}// implementazione privataprivate int calcolaQuadrato(int value){

return value*value;}

}

Page 22: Concetti Oo Classe

I QUATTRO CONCETTI PIÙ IMPORTANTI DELLA OBJECT ORIENTED PROGRAMMING Encapsulation (incapsulamento) Inheritance (ereditarietà) Polymorphism (polimorfismo) Composition (composizione)

Questi sono i concetti che devono essere assimilati prima di intraprendere uno studio dettagliato delle tecnologie di OOA, OOD, OOP