I paradigmi della programmazione ad oggetti

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

  • Incapsulamento
  • Ereditarietà
  • Polimorfismo

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

Nel presente e nel prossimo modulo introdurremo i tre paradigmi in questione. Segnaliamo al lettore che non tutti i testi parlano di tre paradigmi. In effetti si dovrebbero considerare paradigmi della programmazione ad oggetti anche l’astrazione ed il riuso. Questi due sono spesso considerati secondari rispetto agli altri su elencati, non per minor potenza ed utilità, ma per il supporto alla definizione di linguaggio orientato agli oggetti. Infatti, l’astrazione ed il riuso, sono concetti che appartengono anche alla programmazione procedurale.

- Astrazione e riuso:

L’astrazione potrebbe definirsi come "l’arte di saperci concentrare solo sui dettagli veramente essenziali nella descrizione di un’entità". In pratica l’astrazione è un concetto chiarissimo a tutti noi, dal momento che lo utilizziamo in ogni istante della nostra vita. Per esempio, mentre state leggendo questo manuale, vi state concentrando sull’apprenderne correttamente i contenuti, senza badare troppo alla forma, ai colori, allo stile, e tutti particolari fisici e teorici che compongono la pagina che state visualizzando (o almeno lo speriamo!). Potremmo parlare di almeno tre livelli di astrazione per quanto riguarda la sua implementazione nella programmazione ad oggetti:

  • astrazione funzionale
  • astrazione dei dati
  • astrazione del sistema

Adoperiamo l’astrazione funzionale ogni volta che implementiamo un metodo. Infatti, tramite un metodo, riusciamo a portare all’interno di un’applicazione un concetto dinamico, sinonimo di azione, funzione. Per scrivere un metodo ci dovremmo limitare alla sua implementazione più robusta e chiara possibile. In questo modo avremo la possibilità di invocare quel metodo ottenendo il risultato voluto, senza dover tener presente l’implementazione del metodo stesso. Lo stesso concetto sussisteva anche nella programmazione procedurale grazie alle funzioni.

Adoperiamo l’astrazione dei dati ogni volta che definiamo una classe, raccogliendo in essa solo le caratteristiche e funzionalità essenziali degli oggetti che essa deve definire nel contesto in cui ci si trova. Potremmo dire che l’astrazione dei dati "contiene" l’astrazione funzionale.

Adoperiamo l’astrazione del sistema ogni volta che definiamo un’applicazione, in termini delle classi essenziali che devono soddisfare agli scopi dell’applicazione stessa. Questo assomiglia molto da vicina a quello che nella programmazione procedurale veniva chiamato metodo "Top down". Potremmo anche affermare che l’astrazione del sistema "contiene" l’astrazione dei dati, e, per la proprietà transitiva, l’astrazione funzionale.

Il riuso è invece da considerarsi una conseguenza degli altri paradigmi della programmazione ad oggetti. Notiamo anche come esso era una conseguenza dell’astrazione funzionale e del metodo "Top down" nella programmazione procedurale.



 

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Staff
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!