La programmazione OOP definita anche programmazione orientata agli oggetti è la natuale evoluzione che si è resa necessaria rispetto al vecchio tipo di sviluppo procedurale del codice.

Fino a pochi anni fà infatti si era abituati ad eseguire in modo procedurare le operazioni, rendendo difficile sia la manutenzione e sia l’eventuale implementazioni future del progetto.

Ormai il concetto OOP è divenuto parte integrante di tutti i più importanti linguaggi di programmazione, che man mano hanno reso disponibili metodi sempre più completi e funzionali.

In sostanza nell’OOP si prevede di raggruppare in un’unica entità (la classe) sia le strutture dati che le procedure che operano su di esse, creando per l’appunto un “oggetto” software dotato di proprietà (dati) e metodi (procedure) che operano sui dati dell’oggetto stesso.

La scalabilità di un programma viene realizzata progettando e realizzando il codice sotto forma di classi che interagiscono tra di loro. Un programma ideale, realizzato applicando i criteri dell’OOP, sarebbe completamente costituito da oggetti software (istanze di classi) che interagiscono gli uni con gli altri.

FUNZIONAMENTO

La logica base di funzionamento definisce che ogni oggetto possiede tutti gli attributi definiti nella classe, ed essi hanno un valore, che può mutare durante l’esecuzione del programma come quello di qualsiasi variabile, per accedere agli attributi dell’istanza è necessario invocare dei metodi su quello stesso oggetto (operazione nota come information hiding).

Sintatticamente, i metodi di una classe vengono invocati “su” un particolare oggetto, e ricevono come parametro implicito l’oggetto su cui sono stati invocati. Questo parametro normalmente può essere referenziato esplicitamente; per esempio nel linguaggio C++ e in PHP si utilizza this, mentre in Smalltalk, in Objective-C, Python e in Ruby si usa la parola-chiave self.

L’OOP prevede un meccanismo molto importante, l’ereditarietà, che permette di derivare nuove classi a partire da classi già definite. L’ereditarietà permette di aggiungere membri ad una classe, e di modificare il comportamento dei metodi, in modo da adattarli alla nuova struttura della classe.

Da una stessa classe è possibile costruire diverse classi derivate. Da una classe derivata è possibile derivarne un’altra con lo stesso meccanismo.

Sintatticamente, una classe può essere definita come derivata da un’altra classe esistente. In molti linguaggi la classe derivata, o sottoclasse, eredita tutti i metodi e gli attributi della classe “genitrice”, e può aggiungere membri alla classe, sia attributi che metodi, e/o ridefinire il codice di alcuni metodi.

Uno dei punti forti dell’OOP è l’ereditarietà, la quale può essere usata come meccanismo per gestire l’evoluzione ed il riuso del software: il codice disponibile definisce delle classi, se sono necessarie modifiche, vengono definite delle sottoclassi che adattano la classe esistente alle nuove esigenze (utile spesso per le implementazioni) .

Visto che l’argomento è molto ampio 3sulblog.com pubblicherà nei pressimi giorni un articolo in più uscite con un’esempio di OOP in ambiente VB.Net