Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina...

29
Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello [email protected]

Transcript of Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina...

Page 1: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

Torna alla prima pagina

Il linguaggio java

Esercitazioni del corso di Sistemi Informativi

Marina Mongiello

[email protected]

Page 2: 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

Page 3: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 4: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 5: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 6: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 7: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 8: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 9: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 10: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

Torna alla prima pagina

La programmazione OO

Elementi fondamentali Classi e oggetti Metodi Messaggi Interfacce

Proprietà ereditarietà (riuso del

software) incapsulamento

(information hiding) polimorfismo

Page 11: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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à

Page 12: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 13: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 14: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 15: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 16: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 17: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 18: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 19: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 20: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 21: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 22: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 23: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 24: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 25: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

Torna alla prima pagina

Interfacce del pacchetto java.awt.event

ActionListener Adjustment Listener ComponentListener ContainerListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener

Page 26: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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)

Page 27: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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)

Page 28: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

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

Page 29: Torna alla prima pagina Il linguaggio java Esercitazioni del corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it.

Torna alla prima pagina

Altre caratteristiche di java

assenza di puntatori garbage collection automatica multithreading è case sensitive