Programmazione ad oggetti

Preview:

DESCRIPTION

OOP

Citation preview

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

Recommended