Upload
gianna-palma
View
217
Download
0
Embed Size (px)
Citation preview
ProgrammazioneProgrammazioneobject orientedobject oriented in C++ in C++
Le classiLe classi
Software di qualità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 classeLa 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++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:Esempio: una classe in C++ una classe in C++
class Punto{
public:
void Set();
void Print();
private:
float x, y;
};
Le classiLe 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 OggettiDichiarazione di Oggetti
Oggetto = istanza di una classePunto 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 accessoSpecificatori 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 accessoSpecificatori di accesso
Private
l’accesso è possibile soltanto attraverso le member function (specificatore di default)
Operatore::Operatore::
La definizione delle member function è associata alla classe di appartenenza mediante l’operatore di scope resolution “::” (operatore class resolution)
Esempio:Esempio: operatore ‘::’ operatore ‘::’
void Punto::Print()
{
cout<< “Ascisse”<<x<<‘\n’;
cout<< “Ordinate”<<y<<‘\n’;
}
Chiamate di member functionChiamate di member function
Avvengono mediante gli operatori ‘.’ e ‘->’
Es.Punto pt, *p_punto;
pt.Print();
p_punto->Set();
Member functionMember 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:Esempio: Sezione di interfaccia Sezione di interfaccia
class Punto{
public:
void Set();
void Print();
private:
float x, y;
};
Esempio:Esempio: Sezione di implementazioneSezione 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;
}
CostruttoreCostruttore
Member function particolare usato per l’inizializzazione dei datiStesso nome della classe di cui è membro e non possiede alcun valore di ritorno (nemmeno void)Richiamato direttamente al momento della dichiarazione di un oggetto
DistruttoreDistruttore
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:Esempio: costruttore e distruttorecostruttore e distruttore
class Punto{
public:
Punto(); //costruttore
~Punto(); //distruttore
void Set();
void Print();
private:
float x, y;
};
Esempio completoEsempio completo
Sezione di interfaccia
class Punto{
public:
Punto(); //costruttore
~Punto(); //distruttore
void Set();
void Print();
private:
float x, y;
};
Esempio completo Esempio completo (continua)(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 Esempio completo (continua)(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;
}