|
JSem: 1.2 |
Lista della spesa: per iniziare servono un computer con un browser (Internet Explorer (IE) 5, Netscape 4.5, o superiori), il JDK (Java Development Kit), un editore di testo (il Notepad di Windows va bene), tanta pazienza e tanta voglia; se non avete ognuna di queste cose, lasciate perdere! Per vedere come installare il JDK e come, eventualmente, configurare
l'editore di testo UltraEdit, rimandiamo alla PIP
(Piccola Introduzione Pratica). Lì si vedrà anche come eseguire il test dell'applet
"Hello World".
Programmazione orientata oggetti: leggere la
piccola introduzione
alla oop ("object oriented programming") della PIP. I tre principi base della oop sono: Incapsulazione: Si può pensare all'incapsulazione come ad un involucro protettivo che
impedisce un accesso arbitrario al codice e ai dati da parte di altro codice
definito all'esterno dell'involucro. Per fare un esempio concreto pensiamo alla
trasmissione (cambio) di una macchina. Il meccanismo (codice) della trasmissione è
molto complesso e contiene svariati dati (accelerazione, pendenza della strada,
marcia usata, ecc...), noi possiamo interagire con questo programma in un solo
modo: tramite la leva del cambio. La leva del cambio è un'interfaccia tra
l'utente e la trasmissione; non c'è bisogno di sapere come funziona la trasmissione
per usare la leva del cambio (nello stesso modo il telecommando è un'interfaccia, non
c'è bisogno di conoscere tutti i circuiti all'interno del televisore per cambiare
canale, regolare il volume, ecc...). D'altra parte si può interagire con la trasmissione
solo con la leva del cambio (non con i freni, le frecce o altri comandi) e, viceversa,
le azioni sul cambio non influiscono altri meccanismi (non si accendono i fari
cambiando marcia). L'interfaccia "leva del cambio" incapsula il codice della
trasmissione, lo protegge da accessi ed utilizzi arbitrari esterni. Ereditarietà: Con l'ereditarietà, oggetti di una classe acquisiscono proprietà di oggetti di un'altra classe dalla quale derivano (superclass o classe genitrice). L'ereditarietà sostiene il principio della classificazione gerarchica (la classe dei pastori tedeschi è contenuta nella classe dei cani, la quale è contenuta nella classe dei mammiferi la quale, a sua volta, è contenuta in quella degli animali). Senza l'ereditarietà (e la gerarchia) ogni oggetto dovrebbe dichiarare in modo esplicito tutte le sue caratteristiche; invece per definire la classe dei cani basta prendere la classe dei mammiferi e definire solo quelle proprietà specifiche ai cani. Inoltre i cani ereditano tutte le proprietà dei mammiferi (la classe dei cani è una sottoclasse della classe dei mammiferi). Se una classe incapsula alcuni attributi, allora qualsiasi sottoclasse comprenderà questi attributi. L'ereditarietà facilita il riutillizzo del codice e diminuisce la complessità. Polimorfismo: Con il polimorfismo una stessa interfaccia può essere utilizzata per una serie di azioni diverse. Il polimorfismo riduce la complessità: sarà compito del compilatore (e non del programmatore) determinare l'azione (cioè il metodo) adatto alla situazione. Per esempio i costruttori di macchine offrono diversi sistemi frenanti: ABS, tradizionale ma l'interfaccia (pedali dei freni) è sempre la stessa. In conclusione una buona gerarchia di classi permette di riutilizzare del codice complesso e ben collaudato; l'incapsulazione protegge le varie parti del codice da interferenze indesiderate e il polimorfismo permette di avere un codice logico, leggibile e, allo stesso tempo, elastico. Java è fornito con una libreria di classi impressionante e in costante evoluzione (recentemente si sono aggiunti, per esempio, i pacchetti Swing, Java2D, ...), una buona conoscenza della libreria è molto importante perchè permette di usare, con minimo sforzo, codice complesso e ben collaudato. Iniziamo una prima esplorazione dei pacchetti più importanti. |
next content previous