I principi fondamentali della programmazione ad oggetti

Il termine programmazione ad oggetti o Object Oriented Programming (O.O.P.) indica un paradigma di programmazione in base al quale una applicazione risulta costituita da un insieme di oggetti che interagiscono tra loro, scambiandosi dei messaggi.

Tali oggetti sono creati sulla base di modelli astratti che prendono il nome di classe.

Uno degli aspetti più importanti della programmazione ad oggetti è la possibilità di creare nuovi modelli astratti aggiungendo caratteristiche e funzionalità ai modelli preesistenti, senza la necessità di riscriverne nuovamente il codice, ma riutilizzando ed estendendo quanto già creato in precedenza.

La programmazione ad oggetti rappresenta, quindi, a tutti gli effetti, una evoluzione della programmazione modulare e strutturata, in cui si evidenzia l'importanza della progettazione nella costruzione di strumenti con caratteristiche e funzionalità ben definite, facilmente estendibili e modificabili, con impatto minimo sul resto dell'applicazione.

Quanto detto conduce all'individuazione di una serie di vantaggi derivanti dalla programmazione ad oggetti, tra cui:

  • la possibilità di concentrarsi, in ogni fase dello sviluppo di un'applicazione, sulle caratteristiche e funzionalità di una determinata entità della realtà di interesse e sulle sue interazioni con le altre entità
  • ogni entità agisce in uno spazio isolato e risulta, quindi, di più semplice comprensione e modifica o manutenzione
  • la possibilità di riutilizzo di modelli già definiti, per la definizione di nuovi modelli con caratteristiche e funzionalità simili, indirizzando gli sforzi sull'individuazione delle caratteristiche e funzionalità aggiuntive o differenti
  • la maggiore chiarezza e manutenibilità del codice risultante
  • la minore probabilità di introdurre bachi o malfunzionamenti, a seguito di modifiche al codice esistente

La programmazione ad oggetti si basa su una serie di concetti o principi base tra i quali:

  • l'astrazione
  • la classe
  • gli oggetti
  • gli attributi
  • i metodi
  • l'incapsulamento
  • l'information hiding
  • l'ereditarietà
  • il polimorfismo

Una sintesi grafica di quanto detto è rappresentata nell'immagine seguente:

Classe e oggetti

Nelle sezioni che seguono, andremo ad approfondire nel dettaglio ciascuno dei principi introdotti.