Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un...

21
Programmazione Programmazione object oriented object oriented in C++ in C++ Le classi Le classi

Transcript of Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un...

Page 1: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

ProgrammazioneProgrammazioneobject orientedobject oriented in C++ in C++

Le classiLe classi

Page 2: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

Page 3: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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)

Page 4: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

Page 5: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Esempio:Esempio: una classe in C++ una classe in C++

class Punto{

public:

void Set();

void Print();

private:

float x, y;

};

Page 6: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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.

Page 7: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

Page 8: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

Page 9: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Specificatori di accessoSpecificatori di accesso

Private

l’accesso è possibile soltanto attraverso le member function (specificatore di default)

Page 10: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Operatore::Operatore::

La definizione delle member function è associata alla classe di appartenenza mediante l’operatore di scope resolution “::” (operatore class resolution)

Page 11: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Esempio:Esempio: operatore ‘::’ operatore ‘::’

void Punto::Print()

{

cout<< “Ascisse”<<x<<‘\n’;

cout<< “Ordinate”<<y<<‘\n’;

}

Page 12: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Chiamate di member functionChiamate di member function

Avvengono mediante gli operatori ‘.’ e ‘->’

Es.Punto pt, *p_punto;

pt.Print();

p_punto->Set();

Page 13: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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)

Page 14: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Esempio:Esempio: Sezione di interfaccia Sezione di interfaccia

class Punto{

public:

void Set();

void Print();

private:

float x, y;

};

Page 15: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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;

}

Page 16: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

Page 17: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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à

Page 18: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Esempio:Esempio: costruttore e distruttorecostruttore e distruttore

class Punto{

public:

Punto(); //costruttore

~Punto(); //distruttore

void Set();

void Print();

private:

float x, y;

};

Page 19: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

Esempio completoEsempio completo

Sezione di interfaccia

class Punto{

public:

Punto(); //costruttore

~Punto(); //distruttore

void Set();

void Print();

private:

float x, y;

};

Page 20: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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

}

Page 21: Programmazione object oriented in C++ Le classi Software di qualità Robustezza capacità di un programma di funzionare correttamente anche in condizioni.

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;

}