Programmazione
object oriented in C++
Le classi
Software di qualità
Robustezza
 capacità di un programma di funzionare
correttamente anche in condizioni anomale
Estensibilità
 facilità con la quale un software si può modificare
in relazione a variazioni delle specifiche
Compatibilità
 facilità con la quale un software si può
interfacciare con altri prodotti software
La classe
Rappresenta uno dei
concetti (IDEA)
dell’applicazione, e
deve essere il più
astratto e generale
possibile.
Nuovo tipo di variabile
con facile meccanismo
di protezione dei dati
(incapsulamento)
La classe in C++
Simile nella forma ad
una struttura C
Contiene oltre ai dati,
anche le funzioni che
permettono di
controllare l’accesso ai
dati
Esempio:
una classe in C++
class Punto{
public:
void Set();
void Print();
private:
float x, y;
};
Le classi
Member function o
metodi:
 le funzioni di una classe
Una classe può
nascondere all’utente la
sua struttura interna e
consentire l’accesso ai
dati solo mediante le
member function.
Dichiarazione di Oggetti
Oggetto = istanza di una classe
Punto pt;
 oggetto di tipo Punto il cui identificatore è pt
Una classe non è un oggetto ma solo
una sua descrizione
 non riserva un’area di memoria
Specificatori di accesso
Public
 i membri della classe sono accessibili in tutto lo
spazio di visibilità dell’oggetto di quella classe
 permettono al programmatore di accedere alle
altre componenti dell’oggetto
Specificatori di accesso
Private
 l’accesso è possibile
soltanto attraverso le
member function
(specificatore di default)
Operatore::
La definizione delle
member function è
associata alla classe di
appartenenza mediante
l’operatore di scope
resolution “::”
(operatore class
resolution)
Esempio:
operatore ‘::’
void Punto::Print()
{
cout<< “Ascisse”<<x<<‘\n’;
cout<< “Ordinate”<<y<<‘\n’;
}
Chiamate di member function
Avvengono mediante gli operatori ‘.’ e ‘->’
Es.
Punto pt, *p_punto;
pt.Print();
p_punto->Set();
Member function
Sezione di interfaccia
 sono descritte le member function
 header file (Punto.h)
Sezione di implementazione
 sono definite le member function
 file sorgente (Punto.cpp)
Esempio:
Sezione di interfaccia
class Punto{
public:
void Set();
void Print();
private:
float x, y;
};
Esempio: Sezione di implementazione
void Punto::Print()
{
cout<< “Ascisse”<<x<<‘\n’;
cout<< “Ordinate”<<y<<‘\n’;
}
void Punto::Set()
{
cout << “Valore delle ascisse”;
cin >> x;
cout << “Valore delle ordinate”;
cin >> y;
}
Costruttore
Member function particolare usato per
l’inizializzazione dei dati
Stesso nome della classe di cui è
membro e non possiede alcun valore
di ritorno (nemmeno void)
Richiamato direttamente al momento
della dichiarazione di un oggetto
Distruttore
Member function particolare
 usato per il rilascio della memoria allocata dinamicamente
Stesso nome della classe preceduto dal
simbolo ‘~’, non può avere argomenti e
non possiede alcun valore di ritorno
(nemmeno void)
Chiamato automaticamente quando un
oggetto esce dal proprio spazio di visibilità
Esempio:
costruttore e distruttore
class Punto{
public:
Punto();
~Punto();
void Set();
void Print();
private:
float x, y;
};
//costruttore
//distruttore
Esempio completo
Sezione di interfaccia
class Punto{
public:
Punto();
~Punto();
void Set();
void Print();
private:
float x, y;
};
//costruttore
//distruttore
Esempio completo (continua)
Sezione di interfaccia
//definizione costruttore classe Punto
Punto::Punto()
{
x=y=0;
}
//definizione distruttore classe Punto
Punto::~Punto()
{
cout>>”Oggetto distrutto”>>’\n’;
}
Esempio completo (continua)
Sezione di interfaccia (continua)
void Punto::Print() //def. member function Print
{
cout<< “Ascisse”<<x<<‘\n’;
cout<< “Ordinate”<<y<<‘\n’;
}
void Punto::Set() //def. member function Set
{
cout << “Valore delle ascisse”; cin >> x;
cout << “Valore delle ordinate”; cin >> y;
}
Scarica

Programmazione object oriented in C++