Corso di Java

Introduzione all’Object Oriented Programming

 

Eccoci all’inizio di questo corso su Java, uno dei linguaggi di programmazione più discusso degli ultimi tempi. Il mondo di Java è apparso sin dagli inizi, nell’ormai lontano 1995, un mondo completamente nuovo: permetteva di essere eseguito su una pagina del World Wide Web e prometteva di scavalcare i confini posti da sistemi operativi e architetture differenti.
Sin dalla nascita Java ha destato la curiosità di tutti, programmatori per primi, provocando ondate di entusiasmo, da un lato, e di scetticismo dall’altro.
In ogni caso, negli anni successivi, Java ha tenuto fede alle promesse ed è ormai una realtà indiscutibilmente affermata.
Quello che faremo in questo corso è scoprire, direttamente sulla nostra pelle, le cause e le ragioni di tanto clamore e, soprattutto, del successo di Java.

Prima di affrontare direttamente lo studio di questo linguaggio, diamo un’occhiata ai concetti che ne stanno alla base, e poiché Java è espressamente un linguaggio orientato agli oggetti, vediamo di capire cosa significa “programmare per oggetti”.
L’Object Oriented Programming (Programmazione Orientata agli Oggetti), in breve OOP, è una tecnica di programmazione sperimentata a partire dagli anni '70 coi linguaggi Simula67, SmallTalk, Lisp fino agli attuali C++ (dal quale Java eredita gran parte della sintassi), Delphi e Visual Basic.
Essa rappresenta una delle idee più interessanti introdotte ultimamente nel campo della programmazione, in grado di risolvere i problemi di complessità e ingovernabilità che si presentavano nei progetti di grandi dimensioni.

A differenza della programmazione “control-flow” (per intenderci, quella classica di C e Pascal), in cui un programma viene inteso come una sequenza di azioni, nell’OOP un programma è considerato come un insieme di oggetti che lavorano assieme in un modo prestabilito allo scopo di perseguire un determinato obiettivo.
Avete presente il LEGO?
Potete pensare agli oggetti di un linguaggio di programmazione come ai mattoncini del LEGO: piccoli pezzi di varia forma e colore che possono essere combinati tra loro per creare forme più grandi e più complesse.
Oppure pensate al motore della vostra auto (non importa che sia una 500 o una Ferrari Testarossa): perché tutto funzioni è necessario che ogni pezzo (oggetto) stia al suo posto, e non è inoltre possibile utilizzare un carburatore della 500 per la Ferrari (nemmeno il viceversa, in realtà).

Questo esempio ci mostra una condizione importante: sebbene un carburatore è tale sia che si tratti di quello di una 500, sia che si tratti di quello della Ferrari, è importante che esso si integri col resto del sistema, altrimenti non andremo da nessuna parte.
Dunque possiamo definire oggetto un elemento autonomo contenuto in un programma, dotato di proprie qualità (che chiameremo attributi) e di un proprio comportamento (attraverso i metodi).
Il resto del sistema, motore o programma che sia, deve solo sapere come interagire con quell’oggetto, ossia conoscerne il comportamento esterno, senza doversi preoccupare di come esso è fatto o di come funziona in dettaglio.
Di un carburatore mi interessa sapere solamente che, agendo su una particolare leva in un modo determinato, essa determinerà un aumento dell’afflusso di carburante al motore, e non mi importa sapere in che modo ciò viene realizzato al suo interno.

In questo modo posso anche in seguito modificare internamente un oggetto, ad es. per aumentarne le prestazioni o l’affidabilità, mantenendo inalterata la sua interfaccia di interazione con il sistema.
Non solo: se sono riuscito a costruire un oggetto con prestazioni straordinarie, posso riutilizzarlo in un altro sistema analogo, con la sicurezza che esso funzionerà esattamente come io mi aspetto.
Un vantaggio evidente della programmazione ad oggetti è che posso costruire componenti riutilizzabili, purché definisca in maniera chiara e precisa il suo comportamento esterno.
Per ottenere il massimo dall’OOP occorre progettare in maniera adeguata gli oggetti che si vogliono utilizzare, avendo cura di rispettare poche ma importanti regole.
Presto vedremo in che modo è possibile creare oggetti con Java e quali regole occorre tenere presenti nel farlo.
Nella prossima puntata conosceremo più da vicino questo favoloso linguaggio.

 

Torna all'indice Generale del corso di Corso di Java di Software Planet