Il linguaggio java
Esercitazioni del corso di
Sistemi Informativi
Marina Mongiello
[email protected]
Torna alla prima
pagina
Documentazione su java

Jdk(Java Development Kit)


versioni 1.0 e successive disponibili sul sito
internet: http://java.sun.com
Ambienti di sviluppo integrato (IDE):
 Inprise
J-builder
 Java Workshop
Torna alla prima
pagina
Java è:

Portabile: non prevede
dall’implementazione
aspetti
dipendenti
es. le dimensioni dei tipi predefiniti sono fisse



Indipendente dall’architettura: il compilatore
genera un bytecode interpretabile in processori
diversi
Robusto: il compilatore riscontra molti errori che
in altri linguaggi sono riscontrabili solo in
esecuzione
Sicuro: è destinato all’uso in ambienti distribuiti e
di rete
Torna alla prima
pagina
Programmi Java

Java consente di realizzare due tipi di
programmi:
 applet:
programmi memorizzati su un computer
remoto a cui l’utente può connettersi mediante un
browser web
 applicazioni: comuni programmi memorizzati ed
eseguiti sul computer locale

Il compilatore java genera un bytecode che verrà
successivamente interpretato dalla macchina
virtuale java
Torna alla prima
pagina
La java virtual machine JVM
Creazione ed esecuzione di un programma java

fase 1: creazione del programma sorgente con estensione
.java

fase 2: compilazione e creazione di un bytecode, un
codice intermedio portabile con estensione .class
 fase 3: caricamento del bytecode in memoria primaria

fase 4: verifica del bytecode.

fase 5: interpretazione del bytecode da parte della JVM
Torna alla prima
pagina
L’applet

Un documento HTML contiene un riferimento
all’applet; l’HTML dispone di tag per gestire applet
es. <applet code>


Il loader del browser web carica da un computer
remoto l’applet tramite la rete per eseguirla sul
computer locale
Il browser ha un interprete java che esegue le
istruzioni del bytecode

se si usa jdk dalla shell dos si può usare il comando:
• appletviewer program.html
per visualizzare l’applet sul computer locale
Torna alla prima
pagina
L’applet

Java consente di eseguire applet all’interno di
browser Web
Java
Class
client
HTML
page
server
Browser
Web
HTML
source
request
Java
interpreter
Torna alla prima
pagina
Applicazioni stand alone

Un’applicazione java è caricata in memoria
dall’interprete java che ha anche la funzione
eseguire il bytecode dell’applicazione

se si sta usando jdk dalla shell dos si esegue il comando:
• java program
Torna alla prima
pagina
Shell Dos
program.java
Java Virtual Machine
Editor
Disk
javac program.java
program.class
Browser Web o
appletviewer
program.html
java
program
Compiler
Primary
Memory
bytecode
Class
Loader
Interpreter
applet
applet
application
application
Torna alla prima
pagina
La programmazione OO

Elementi fondamentali
 Classi
e oggetti
 Metodi
 Messaggi
 Interfacce

Proprietà
 ereditarietà
(riuso del
software)
 incapsulamento
(information hiding)
 polimorfismo
Torna alla prima
pagina
Classi e Oggetti

Il programma è costituito da oggetti
 Classe:
modello o schema di un oggetto
 Oggetto: una istanza della classe



Le classi consentono la creazione di più oggetti
con lo stesso comportamento
Lo stato di un oggetto può cambiare nel tempo in
conseguenza dei messaggi inviati
Ogni oggetto ha un propria identità
Torna alla prima
pagina
Classi e Oggetti in java

Classe è l’unità fondamentale dei programmi java
 definisce
la struttura degli oggetti
 contiene campi e metodi

Sintassi per la definizione di una classe:

ModificatoreAccesso class Nomeclasse
{//definizione dei campi
// definizione dei metodi }


Creazione di un oggetto  creazione di un’istanza
della classe
Sintassi per la creazione di un oggetto

NomeClasse oggetto = new CostruttoreClasse();
Metodo costruttore
Torna alla prima
pagina
Metodi e Messaggi

I metodi:
 Definiscono
le operazioni che la classe può
effettuare
 Operano sui campi della classe

La comunicazione tra oggetti avviene mediante
messaggi: chiamate di metodi


sono una generalizzazione delle chiamate tra funzioni:
se un oggetto deve eseguire un’operazione non prevista
dalle proprie responsabilità, ha necessità di chiedere ad un
secondo oggetto di eseguire l’operazione inviando un
messaggio
Torna alla prima
pagina
Metodi in java

Sintassi per definire un metodo


Sintassi per chiamare un metodo:


ModificatoreAccesso tipo_restituito nome_metodo (Lista argomenti)
{ // dichiarazioni e statement}
oggetto.metodo(argomenti)
Metodi costruttori




usati per inizializzare gli oggetti di una classe
new costruttore permette di creare un nuovo oggetto nella
classe
hanno lo stesso nome della classe
se il codice della classe non specifica alcun costruttore java
fornisce costruttori predefiniti - senza argomenti - che
inizializzano i valori a quelli predefinti
Torna alla prima
pagina
Ereditarietà
Le classi possono essere
costruite a partire da altre classi

Classe padre o
superclasse
Classe derivata o
Le sottoclassi
sottoclasse
 ereditano le
funzionalità
delle superclassi
 hanno
più funzionalità I metodi delle classi esistenti
delle superclassi
sono riutilizzabili o modificabili

Nuovi campi o nuovi metodi
Employee
possono essere aggiunti per
adattarli a situazioni nuove
Manager
Executive
Secretary
Programmer
Gerarchia dell’ereditarietà:
l’insieme delle classi
che si estendono da una classe
padre comune
Torna alla prima
pagina
Ereditarietà in java





Java fornisce un insieme di classi e metodi predefiniti
disponibili in librerie di classi Java API
Le librerie di classi sono organizzate in packages
 La parola chiave extends indica che si sta creando una
nuova classe derivante da una esistente
 In java tutte le classi estendono una classe base Object
 la parola chiave import indica dove è localizzata la classe
che si sta importando
Una classe che ne estende un’altra possiede inzialmente tutti i
metodi della classe parent ma può fornirne di nuovi
Si usa il modificatore d’accesso final per disabilitare
l’ereditarietà
Java non gestisce l’ereditarietà multipla ossia la situazione in
cui una classe deve riflettere il comportamento di due o più
classi padre
Torna alla prima
pagina
Incapsulamento



I dettagli implementativi sono nascosti all’interno
di una classe
Non deve essere consentito agli oggetti di
manipolare dati interni ad altri oggetti
La comunicazione deve avvenire solo tramite
messaggi
Incapsulamento in java

Combinazione di dati e comportamenti in un unico
package
Torna alla prima
pagina
Polimorfismo


Rende il software facilmente estensibile e ne aumenta la
manutenibilità
Capacità di un oggetto di decidere quale metodo
applicare a se stesso in base alla posizione nella
gerarchia dell’ereditarietà
Polimorfismo in java

Overloading: se più metodi hanno lo stesso nome ma
argomenti diversi l’interprete java sceglie quale metodo
chiamare

anche per i metodi costruttori è consentito
l’overloading: è possibile scrivere più metodi
costruttori per una classe
Torna alla prima
pagina
Interfacce

Java non gestisce l’ereditarietà multipla:
 una
classe può avere una sola superclasse
 le interfacce sono utilizzate per fronteggiare
situazioni in cui è necessario che una classe
rifletta il comportamento di due o più classi padre

L’interfaccia può essere implementata da una
classe:
 la
classe definisce le modalità di funzionamento
dei metodi propri dell’interfaccia
 la parola chiave implements indica che una classe
implementa un’interfaccia
Torna alla prima
pagina
Modificatori di accesso

Specificano da chi può essere usato il metodo o
la classe





public: visibile ovunque
private: visibile alla sola classe di appartenenza
protected: visibili dal package e dalle sue sottoclassi
Metodi static non sono legati ad alcuna particolare istanza
della classe e sono
Un campo static è tale che tutte le istanze della classe
condividono un’unica copia del campo
Torna alla prima
pagina
Esempi di codice java
// applicazione
public class example {
public static void main (String []args) {
System.out.println(“example”); }
}
// applet
public class example extends Applet {
public void paint(Graphics g) {}
}
//interfaccia
public interface Comparable { public incompareTo(Object b);}
class Tile extends Rectangle implements Comparable {}
Esercizi svolti sono disponibili
Torna alla prima
pagina
Java API packages






java.applet: contiene la classe Applet e le interfacce per abilitare
la creazione di applet e l’interazione tra applet e browser
java.awt: contiene le classi e le interfacce necessarie per creare
e manipolare interfacce grafiche Abstract Windowing Toolkit
java.io: contiene le classi per abilitare l’input e l’output di dati
java.lang: è importato automaticamente dal compilatore java;
contiene le classi e e le interfacce richieste da molti programmi
java.net: contiene le classi per abilitare la comunicazione via
Internet o Intranet
java.sql:classi e interfacce per gestire l’interazione con
database
Torna alla prima
pagina
Programmazione grafica


Da Java 1.0 le librerie grafiche sono contenute
nel package AWT che utilizza un approccio
basato sui peer, delegando la creazione e il
comportamento delle interfacce al toolkit GUI
nativo delle piattaforme di destinazione
Java 2.0 introduce i componenti SWING non
basato su peer in cui gli elementi grafici assumo
la stesso comportamento su qualsiasi piattaforma
Torna alla prima
pagina
Gestione degli eventi
Eventi: pressione di tasti o clic del mouse gestibili
con interfacce grafiche
 Il sistema operativo rileva eventi di questo tipo e li
segnala ai programmi
 java definisce
 sorgenti
di eventi:
 rilevatori di eventi (event listener)

Le informazioni sugli eventi sono incapsulate in
oggetto evento
Torna alla prima
pagina
Interfacce del pacchetto
java.awt.event











ActionListener
Adjustment Listener
ComponentListener
ContainerListener
FocusListener
ItemListener
KeyListener
MouseListener
MouseMotionListener
TextListener
WindowListener
Torna alla prima
pagina
Il package javax.swing
Le classi swing si trovano nel package javax.swing,
non un package appartenente al nucleo del
linguaggio, ma un’estensione di java 1.1
Tutti i componenti awt possiedono il corrispondente
swing ( es. Frame Jframe)
Torna alla prima
pagina
Componenti dell’interfaccia utente



Pulsanti Button (JButton)
Pannelli Panel (JPanel)
Input di testo








campi di testo (JtextField)
aree di testo (JTextArea)
Etichette Label (JLabel)
Caselle di controllo : Checkbox
Pulsanti di scelta: RadioButton
Elenchi : List (JList)
Caselle combinate: ComboBox
Barre di scorrimento: ScrollBar (JScrollBar)
Torna alla prima
pagina
Gerarchia dei
componenti
dell’interfaccia utente
Abstract
button
JComboBox
Object
JLabel
Component
JList
Container
JMenuBar
Window
JComponent
JButton
JMenuItem
JCheckBox
JToggleButton
JRadioButton
JOptionPanel
JPanel
Frame
JFrame
Dialog
JDialog
JScrollBar
JTextField
JText
Component
JTextArea
Torna alla prima
pagina
Altre caratteristiche di java




assenza di puntatori
garbage collection automatica
multithreading
è case sensitive
Torna alla prima
pagina