2. Prima della OOP
Prima della programmazione orientata agli oggetti c’era un tipo di
programmazione non strutturata, il programma era costituito solo
da un blocco di codice detto main, i dati venivano manipolati in
maniera sequenziale ed erano rappresentati da variabili di tipo
globale, insomma era un tipo di programmazione limitata e piena di
svantaggi.
Successivamente si usava la programmazione procedurale
La programmazione modulare
E infine quella orientata ad oggetti
3. La OOP
La programmazione ad oggetti è un sistema complesso, viene visto
come un insieme di oggetti che interagiscono tra loro, questi sono
caratterizzati da attributi e metodi.
La classe serve a modellare un insieme di oggetti dello stesso tipo.
La programmazione orientata agli oggetti si basa su alcuni concetti
fondamentali:
Classe
Incapsulamento
Oggetto
Ereditarietà
Polimorfismo
4. CLASSE
E’ un raggruppamento degli oggetti con la stessa proprietà, cioè le
sue caratteristiche e gli stessi metodi, cioè le azioni che possono
compiere.
Una classe funge da tipo per un determinato oggetto ad essa
appartenente.
L’istanza è un determinato oggetto di una classe.
La classe è dotata da un interfaccia e un corpo.
Gli oggetti invece comunicano tra loro tramite la loro interfaccia
5. Incapsulamento
L'incapsulamento è un meccanismo che raccoglie i dati e i metodi
all'interno di una struttura nascondendo l'implementazione
dell'oggetto, cioè impedendo l'accesso ai dati con altri mezzi diversi
dai servizi proposti.
Permette di garantire l'integrità dei dati contenuti nell'oggetto.
Possiamo definire dei livelli di visibilità degli elementi della classe:
privato, pubblico e protetto; definiscono i diritti di accesso ai dati,
secondo la classe dalla quale si accede.
Privato: classi esterne non possono accedere
Pubblico: tutte le classi, anche esterne possono accedervi
Protetto; ci accedono le classi ereditarie
6. Costruttori e Distruttori
Costruttori: funzioni che creano un oggetto, devono essere
richiamati ogni volta che si vuole istanziare un oggetto.
Conversione();
Distruttori: distruggono un oggetto, ne elliminano l’allocazione di
memoria.
~Conversione();
7. Interazione tra oggetti
Un oggetto invoca il metodo di un altro oggetto quando vuole
avere delle informazioni sul secondo o quando vuole modificarne lo
stato, quindi quando vuole conoscere o modificare i suoi attributi.
8. Creazione di una classe
Per definire una classe usiamo la parola class, che ci permette di
definire l’interfaccia della classe, seguita dal nome della classe; poi
dichiariamo gli elementi protetti e privati:
class esempio{
public:
a;
b;
private:
c;
protected:
d;
}
9. Operatori
L’ operatore new: alloca la memoria necessaria all’instanziazione
dell’oggetto e ne ritorna la relativa locazione di memoria.
L’operatore delete: liberare la memoria utilizzata per l’oggetto, una
volta che non ci servirà più.
Per riferirci ai metodi e attributi di un oggetto, invece del punto
usiamo l’operatore freccia(->)
10. Classe Astratta
Le classi astratte sono le classi prive di corpo, da sola non può
essere istanziata, viene usata solo per svolgere la funzione di classe
base, da cui le classi derivate possono ereditarei metodi.
Dichiarazione: abstract class NomeClasse
tecnicamente non si possono creare oggetti della classe,
logicamente i suoi oggetti sono solo oggetti delle sottoclassi.
11. Overloading
È una funzionalità specifica del C++
Permette di poter usare lo stesso nome per una funzione più volte
all’interno dello stesso programma, a patto che gli argomenti forniti
siano diversi
12. I tipi di linguaggi
Linguaggi puri: ogni cosa è un oggetto
- Smalltalk
- Eiffel
Linguaggi ibridi: alcuni tipi di dati non sono oggetti
C++
Java
Visual basic