I paradigmi della programmazione ad oggetti

Ciò che caratterizza un linguaggio orientato aglioggetti, è il supporto che esso offre ai cosiddetti"paradigmi della programmazione ad oggetti" , chedi seguito elenchiamo:

  • Incapsulamento
  • Ereditarietà
  • Polimorfismo

A differenza di altri linguaggi di programmazione orientatiagli oggetti, Java utilizza in modo estremamente chiaro,bensì complesso, i concetti appena accennati. Ancheprogrammatori che si ritengono esperti di altri linguaggiorientati agli oggetti come il C++, studiando Java,potrebbero scoprire significati profondi in alcuni concettiche prima si ritenevano chiari.

Nel presente e nel prossimo modulo introdurremo i treparadigmi in questione. Segnaliamo al lettore che non tutti itesti parlano di tre paradigmi. In effetti si dovrebberoconsiderare paradigmi della programmazione ad oggetti anchel’astrazione ed il riuso. Questi due sono spessoconsiderati secondari rispetto agli altri su elencati, nonper minor potenza ed utilità, ma per il supporto alladefinizione di linguaggio orientato agli oggetti. Infatti,l’astrazione ed il riuso, sono concetti cheappartengono anche alla programmazione procedurale.

- Astrazione e riuso:

L’astrazione potrebbe definirsi come "l’artedi saperci concentrare solo sui dettagli veramente essenzialinella descrizione di un’entità". In pratical’astrazione è un concetto chiarissimo a tuttinoi, dal momento che lo utilizziamo in ogni istante dellanostra vita. Per esempio, mentre state leggendo questomanuale, vi state concentrando sull’apprendernecorrettamente i contenuti, senza badare troppo alla forma, aicolori, allo stile, e tutti particolari fisici e teorici checompongono la pagina che state visualizzando (o almeno losperiamo!). Potremmo parlare di almeno tre livelli diastrazione per quanto riguarda la sua implementazione nellaprogrammazione ad oggetti:

  • astrazione funzionale
  • astrazione dei dati
  • astrazione del sistema

Adoperiamo l’astrazione funzionale ogni volta cheimplementiamo un metodo. Infatti, tramite un metodo,riusciamo a portare all’interno diun’applicazione un concetto dinamico, sinonimo diazione, funzione. Per scrivere un metodo ci dovremmo limitarealla sua implementazione più robusta e chiarapossibile. In questo modo avremo la possibilità diinvocare quel metodo ottenendo il risultato voluto, senzadover tener presente l’implementazione del metodostesso. Lo stesso concetto sussisteva anche nellaprogrammazione procedurale grazie alle funzioni.

Adoperiamo l’astrazione dei dati ogni volta chedefiniamo una classe, raccogliendo in essa solo lecaratteristiche e funzionalità essenziali deglioggetti che essa deve definire nel contesto in cui ci sitrova. Potremmo dire che l’astrazione dei dati"contiene" l’astrazione funzionale.

Adoperiamo l’astrazione del sistema ogni volta chedefiniamo un’applicazione, in termini delle classiessenziali che devono soddisfare agli scopidell’applicazione stessa. Questo assomiglia molto davicina a quello che nella programmazione procedurale venivachiamato metodo "Top down". Potremmo ancheaffermare che l’astrazione del sistema"contiene" l’astrazione dei dati, e, per laproprietà transitiva, l’astrazione funzionale.

Il riuso è invece da considerarsi una conseguenzadegli altri paradigmi della programmazione ad oggetti.Notiamo anche come esso era una conseguenzadell’astrazione funzionale e del metodo "Topdown" nella programmazione procedurale.