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;
}