Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Corso Di Programmazione Ad Oggetti
Corso Di Programmazione Ad Oggetti
a.a. 2008/2009
Claudio De Stefano
La programmazione modulare
MODULO
interfaccia
(Visibile dall'esterno)
corpo
(Nascosto all'esterno e
protetto)
La programmazione modulare
La programmazione ad oggetti
Nei linguaggi OOP esiste un nuovo tipo di dato, la classe. Questo tipo di dato
serve appunto a modellare un insieme di oggetti dello stesso tipo.
Un esempio di oggetto
Orco
Cavaliere
Linguaggi ad oggetti
Queste regole non fanno per parte del linguaggio e il loro uso non pu essere
forzato n verificato dal compilatore.
Classi e oggetti
Nei linguaggi a oggetti, il costrutto class consente di definire nuovi tipi di dato e le
relative operazioni.
Nel gergo dei linguaggi OO una variabile definita di un certo tipo (classe)
rappresenta un'istanza della classe.
10
11
Il linguaggio C++
12
L'incapsulamento
13
Le classi in C++
14
Inter
faccia
class Contatore {
public:
void Incrementa();
// operazione incremento
void Decrementa();
// operazione decremento
unsigned int give_value(); // restituisce il valore
// corrente
private:
unsigned int value;
// valore corrente
const unsigned int max; // valore massimo
Implem
entazione
};
15
classe
client
SERVER
16
Utente.cpp
// Modulo utilizzatore
del modulo
// Contatore
#include Contatore.h
unsigned int i;
Contatore cont1, cont2;
.
.
.
cont1.incrementa();
cont2.decrementa();
i = cont1.get_value();
Contatore.h
Contatore.cpp
// Interfaccia del
// modulo Contatore
// Implementazione del
modulo Contatore
class Contatore {
.
.
.
};
#include Contatore.h
Contatore::incrementa()
{
.
.
}
Contatore::decrementa()
{
.
.
}
17
Ereditariet e polimorfismo
18
Ereditariet
19
Ereditariet
Generalizzazione
Specializzazione
20
Ereditariet: un esempio
Oggetto
Veicolo
Veicolo Senza
Motore
Veicolo
A Motore
Motocicletta
Automobile
Aereo
Taxi
Per descrivere un sistema sono possibili tassonomie diverse, a seconda degli obiettivi
Automobile Automobile
Benzina
Berlina
Diesel
Station Wagon
Claudio De Stefano - Corso di Programmazione ad Oggetti - a.a. 2008/2009
21
Ereditariet: vantaggi
Esiste per anche un altro motivo, di ordine pratico, per cui conviene usare
l'ereditariet, oltre quello di descrivere un sistema secondo un modello gerarchico;
questo secondo motivo legato esclusivamente al concetto di riuso del software.
22
Ereditariet
23
Polimorfismo
24
Polimorfismo: un esempio
Triangolo
Rettangolo
Quadrato
+disegna()
+disegna()
+disegna()
Sia ad es. A un vettore di N oggetti della classe Figura, composto di oggetti delle
sottoclassi Triangolo, Rettangolo, Quadrato:
Figura A[N]
(ad es.: A[0] un quadrato, A[1] un triangolo, A[2] un rettangolo, etc.)
25
Polimorfismo: un esempio
L'esecuzione del ciclo richiede che sia possibile determinare dinamicamente (cio
a tempo d'esecuzione) l'implementazione della operazione disegna() da eseguire,
in funzione del tipo corrente dell'oggetto A[i].
26
27
28