programmazione ad oggetti
DESCRIPTION
OOPTRANSCRIPT
OOPPROGRAMMAZIONE AD OGGETTI
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
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
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
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
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();
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.
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;
}
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(->)
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.
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
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