Object Oriented è un termine spesso usato impropriamente, nel passato per definire un approccio allo sviluppo di software basato sull’uso di linguaggi di programmazione orientati agli oggetti come Java e C++.
Oggi con lo stesso termine Object Oriented si intende un approccio più generale che copre tutti gli aspetti e tutte le fasi del processo di sviluppo del software.
Semplificando molto i concetti di base di OO sono:
- Classi, oggetti attributi e operazioni: Un classe è un tipo di dato astratto che per ciascun elemento definisce la struttura in termini di attributi e le operazioni possibili in termini di metodi e operazioni. Un oggetto è una specifica istanza di una classe.
- Data hiding: Per data hiding o incapsulamento si intende che l’oggetto stesso in capsula al suo interno i dati e le operazioni necessarie per manipolarlo.
- Ereditarietà: Consente di definire una classe come specializzazione di un’altra classe. La classe generica è la superclasse la più specializzata è la sottoclasse. La sottoclasse eredita attributi i metodi dalla superclasse.
- Polimorfismo: Assunto che l’ereditarietà è un meccanismo fondamentale della OO che aiuta a modellare la realtà e riutilizzare il codice, la sottoclasse eredita dalla superclasse ma può anche introdurre nuovi metodi o attributi, può ridefinire i metodi ereditati (override) per creare nuove implementazioni dello stesso metodo.
- Overloading: consente di definire in una stessa classe metodi con lo stesso nome ma differente signature (tipo e numero di parametri). Overriding ridefinisce un metodo in una sottoclasse, il metodo originale è quello vhe lo ridefinisce hanno la stessa signature e solo il tempo di esecuzione definisce quello che deve essere usato o no.
Giuseppe Giomo