Programmazione orientata agli oggetti in Java.


Java Sun

Earthweb
(ex Gamelan)

Jars

Java Boutique

Java Center

PIP






 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:

  • L'incapsulazione
  • L'ereditarietà
  • Il polimorfismo

  • 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.
    In Java la base dell'incapsulazione è la classe. Una classe definisce la struttura e il comportamento (metodi) che verranno condivisi da una serie di oggetti. I dati che servono a costruire una classe sono le variabili membro (o variabili di istanza).
    Ogni metodo o variabile di una classe può essere dichiarato pubblico o privato. Al di fuori della classe si può accedere solo ai dati pubblici, essi rappresentano tutto quello che utenti esterni possono o devono sapere sulla classe; alle variabili e metodi privati possono accedere solo membri della classe. Questi metodi e variabili sono incapsulati nella classe.


    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