Post on 01-May-2015
Torna alla prima pagina
Il linguaggio java
Esercitazioni del corso di Sistemi Informativi
Marina Mongiello
mongiello@poliba.it
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 aspetti dipendenti
dall’implementazione 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 JVMCreazione 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
HTML
page
L’applet Java consente di eseguire applet all’interno di
browser Web
client
server
HTML
sourceBrowser
Web
Java
Class
Java
interpreter
request
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
program.class
Java Virtual MachineEditor
CompilerDisk
Interpreter
Class
Loader
bytecode
applet
application
Shell Dos
javac program.java
java
program
Browser Web o appletviewer program.html
program.java
Primary Memory
applet
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
ModificatoreAccesso tipo_restituito nome_metodo (Lista argomenti)
{ // dichiarazioni e statement}
Sintassi per chiamare un metodo: 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
Gerarchia dell’ereditarietà: l’insieme delle classi che si estendono da una classe padre comune
EreditarietàClasse padre o
superclasse
Classe derivata o
sottoclasse
Le sottoclassi ereditano le funzionalità
delle superclassi hanno più funzionalità
delle superclassi I metodi delle classi esistenti
sono riutilizzabili o modificabili Nuovi campi o nuovi metodi
possono essere aggiunti per adattarli a situazioni nuove
Employee
Manager Secretary Programmer
Executive
Le classi possono essere costruite a partire da altre classi
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
Combinazione di dati e comportamenti in un unico package
Incapsulamento in java
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
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à
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
Polimorfismo in java
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
Object
Component
Container
Window
Frame
JFrame
Dialog
JDialog
JComponent
JButton
JMenuItem
JToggleButton
JCheckBox
JRadioButton
JLabel
JList
JMenuBar
JOptionPanel
JPanel
JScrollBar
JText
Component
Abstract
button
JTextField
JTextArea
JComboBox
Gerarchia dei componenti dell’interfaccia utente
Torna alla prima pagina
Altre caratteristiche di java
assenza di puntatori garbage collection automatica multithreading è case sensitive