Il primo argomento affrontato durante il corso è
stato quello della programmazione ad oggetti. I linguaggi di programmazione
ad oggetti appartengono ad un modello di computazione un po' particolare
in quanto trasversale alle categorie in cui si classificano i linguaggi
stessi: imperativi, funzionali e logici. Trasversale
perché di linguaggi ad oggetti ne esistono di tutte e tre le categorie.
In particolare è stato illustrato il linguaggio
Java.
La peculiarità di Java è la portabilità, ovvero la
possibilità di trasportare su una macchina qualunque il codice scritto
in questo linguaggio. Cio' è reso possibile dal fatto che
Java non è un linguaggio compilato, ma interpretato. In realtà
esiste una fase di compilazione che produce a partire dal codice iniziale
un codice intermedio detto bytecode che poi viene interpretato (l'interprete
del bytecode è detto JVM Java Virtual Machine). A
questa caratteristica si accompagna il fatto che i browser per la navigazione
di pagine html supportano Java, ovvero contengono l'interprete Java. Inserendo
appositi tag su una pagina html è possibile realizzare un programma
la cui esecuzione è lanciata direttamente all'apertura di quella
pagina, poiché il browser legge il tag, reperisce il codice e lo
esegue. Dunque è possibile per esempio pubblicare su internet un
proprio programma Java (applet) su una pagina web. L'applet verrà
eseguita sulla macchina del navigatore (client) sulla quale infatti il
browser caricherà non solo la pagina html, ma anche i bytecode Java.
Dal punto di vista della sicurezza i browser non consentono all'applet
di accedere al file system locale. Quindi per consentire la manipolazione
di un file system da parte di un'applet è necessaria una procedura
di autenticazione.
Questa presentazione in formato html mostrerà
un esempio di applet che consente l'utilizzo dell'interprete.
Java offre una serie di classi predefinite organizzate
in package (directory). Queste classi possono essere usate direttamente
dall'utente. In questo modo l'utente può sfruttare del codice preesistente
(modularità). In particolare Java fornisce una serie di classi per
la costruzione dell'interfaccia grafica e per la gestione degli eventi:
è il package swing (questo è disponibile in Java 1.2,
mentre nella versione precedente si usa il package AWT).
L'interprete elaborato in questo progetto è
utilizzabile grazie ad un'interfaccia grafica
realizzata proprio tramite le classi Swing. In particolare sono messe a
disposizione aree di testo in cui immettere il codice o leggere messaggi
e bottoni tramite cui è possibile richiedere l'esecuzione delle
varie operazioni.