Programmazione Orientata agli Oggetti (OOP)

Da Bioingegneria Elettronica e Informatica.

Introduzione

La programmazione orientata agli oggetti (OOP) consiste in un paradigma di programmazione basato sugli oggetti, ognuno delle quali è un'istanza di una classe, e queste classi sono tutte parte di una gerarchia di entità unite fra di loro da una relazione di ereditarietà. Ricapitolando:

  1. OOP utilizza un insieme di oggetti;
  2. ogni oggetto è istanza di una classe;
  3. ogni classe è legata alle altre attraverso una relazione detta eredità.

Nell'ambito della programmazione orientata agli oggetti, è necessario definire tre importanti proprietà:

  1. Incapsulamento – si basa sul principio dell’information hiding e permette di nascondere all’utente i dettagli implementativi di una classe; quindi l’utente interagisce con gli oggetti di una determinata classe attraverso le interfacce messe a disposizione dall’oggetto stesso.
  2. Ereditarietà – la possibilità per un oggetto di acquisire le caratteristiche di un’altra classe; tramite le relazioni di generalizzazione/specializzazione, una superclasse definisce un concetto generale, che viene poi specializzato dalle sottoclassi.
  3. Polimorfismo – la possibilità di utilizzare uno stesso nome per definire metodi diversi permettendo di avere accesso a diverse implementazioni di una funzione attraverso un solo nome (un’interfaccia, più metodi).

Le Classi

Alla base della programmazione ad oggetti c’è il concetto di "classe". Una classe è un costrutto utilizzato per la modellazione di entità, quindi per la creazione (istanziazione) di oggetti; quindi, un'istanza della classe si definisce “oggetto”. All'interno di una classe si possono distinguere i seguenti elementi:

  • Attributo/i;
  • Metodo/i.

Gli "attributi", o variabili membro, definiti all’interno di una classe, costituiscono lo stato della classe stessa. Un "metodo" di una classe, invece, definisce una funzionalità della classe; i metodi servono a specificare il comportamento dell’entità (ovvero l’oggetto) di cui la classe è rappresentazione. Trattandosi di funzioni, un metodo può ritornare valori, oppure nulla (come le procedure o “funzioni void”).


Ereditarietà

Polimorfismo