Il paradigma Object-Oriented
Negli ultimi decenni sono
stati sviluppati diversi paradigmi di programmazione:
-
Programmazione Imperativa
-
Programmazione Dichiarativa
(funzionale, logica, algebrica)
-
Programmazione Orientata
agli Oggetti (Object-Oriented)
La programmazione imperativa
(storicamente la prima, e ancora la piu' diffusa) corrisponde grosso modo
al sottoinsieme di Java che abbiamo visto finora (espressioni, comandi,
metodi, ...).
La programmazione
funzionale
vi e' stata introdotta nel corso di Programmazione I con
il linguaggio ML.
La programmazione
Object-Oriented
(OO) si e' dimostrata la piu' adatta per lo sviluppo di sistemi software
complessi (es: interfacce grafiche). La tecnologia OO ha come concetto
chiave quello di oggetto, che e' una metafora del concetto di oggetto
del mondo reale.
Ad ogni oggetto sono
associate delle informazioni e delle funzionalita', e gli oggetti possono
interagire gli uni con gli altri. L'uso di questo concetto a livello di
programmazione consiste nel progettare un insieme di ``oggetti software"
che modellano il problema che si vuole risolvere.
Il vantaggio principale
di questo approccio e' quello di rendere il disegno di un programma piu'
naturale (cioe' piu' vicino al modo di pensare della gente comune) e quindi
piu' facile da capire e da sviluppare senza errori.
Java e' un linguaggio
OO, nel senso che fornisce i meccanismi necessari per la definizione e
l'uso di oggetti (come vedremo di seguito). Altri linguaggi OO sono Smalltalk,
C++, Eiffel... Comunque si puo' programmare secondo il paradigma OO anche
con linguaggi non OO, ma il peso della gestione degli oggetti ricade sul
programmatore. Ad esempio, le prime interfacce grafiche erano scritte in
linguaggi imperativi, ma con tecnologia OO.
Nel seguito descriveremo
come Java realizza alcuni concetti della programmazione OO, in particolare
i concetti di classe e di oggetto.