Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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