Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoPetronel Brunetti Modificato 10 anni fa
1
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso protocolli di comunicazione standard in modo da poter scambiare posta elettronica scaricare dati e software (freeware o shareware) partecipare a newsgroups ricercare informazioni navigando in maniera ipertestuale nel World Wide Web
2
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 2 HTML e i browsers WWW HTML (HyperText Markup Language): linguaggio per la creazione di documenti di testo formattato, grafica, tabelle, immagini, con links ad altri documenti dello stesso tipo Un browser web come Mosaic o Netscape consente di accedere ai documenti ipertestuali tramite uninterfaccia grafica, gestendo in maniera trasparente la comunicazione con altri computer sulla rete (siti web) I documenti web scritti in HTML possono includere applicazioni chiamate Applet, che i browser consentono di scaricare ed eseguire localmente
3
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 3 JAVA e Internet PROBLEMI DELLE APPLICAZIONI PER INTERNET: SICUREZZA: prevenire accessi non autorizzati e assicurare lintegrità dei dati LINGUAGGI PER INTERNET: applicazioni scritte in C, Pascal etc. sono costrette a gestire manualmente i protocolli di comunicazione INTERATTIVITA: i linguaggi tradizionali non sono concepiti per gestire applicazioni interattive in cui lutente comunica attraverso elementi grafici PORTABILITA: il funzionamento delle applicazioni interattive è di solito basato sullambiente run-time dello specifico sistema operativo
4
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 4 Hello World in JAVA In JAVA è possibile scrivere 3 tipi di applicazioni: applicazioni stand-alone, applet, e servlet Lunità fondamentale per costruire programmi JAVA è la classe, da cui si possono creare oggetti come istanze della classe Una classe contiene essenzialmente campi, che rappresentano lo stato dello oggetto, e metodi, che sono sequenze di istruzioni che operano sullo stato Class HelloWorld { public static void main (String[ ] args) { System.out.println(Hello, world); }
5
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 5 Hello World in JAVA Come eseguire il programma hello world scritto in JAVA: - Scrivere il file sorgente HelloWorld.java con un qualsiasi editore di testo - Compilare il programma in bytecode con il comando: javac HelloWorld.java -Eseguire il bytecode sulla macchina virtuale JAVA con il comando: java HelloWorld.class
6
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 6 Variabili, tipi primitivi, aritmetica di base Class Fibonacci { /** Stampa la sequenza di Fibonacci per valori < 50 */ public static void main (String[ ] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(lo); hi = lo + hi; lo = hi - lo; } notare overloading
7
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 7 I tipi primitivi predefiniti in JAVA boolean valori di verità true e false char caratteri Unicode a 16 bit byte interi a 8 bit con segno short interi a 16 bit con segno int interi a 32 bit con segno long interi a 64 bit con segno float floating-point a 32 bit (IEEE 754-1985) double floating-point a 64 bit (IEEE 754-1985)
8
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 8 Costanti con nome Class Cerchio { static final double = 3.1416; } Dare un nome a una costante ha due vantaggi: Il nome della costante è una forma di documentazione La costante è definita in un unico posto nel codice, e modificarne il valore è molto facile, senza rischio di inconsistenza
9
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 9 Classi e oggetti Class Point { public double x, y; } Tutto il codice che ha accesso alla classe Point può accedere ai campi x e y direttamente.
10
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 10 Classi e oggetti Gli oggetti sono creati col meccanismo dellistanziazione, e laccesso ad essi avviene tramite riferimenti (analogia con le strutture a puntatori). Point angoloBasso = new Point(); Point angoloAlto = new Point(); Point medio = new Point(); angoloBasso.x = 0.0; angoloAlto.x = 5.2; medio.x = (angoloBasso.x + angoloAlto.x) / 2;
11
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 11 Campi statici (o di classe) Class Point { public static Point origine = new Point (); public double x, y; } Il codice che ha accesso alla classe Point può accedere alloggetto origine con il riferimento Point.origine. Esiste un unico oggetto Point.origine indipendentemente da quante istanze di Point vengono create.
12
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 12 Il Garbage Collector Le istanze vengono create con new, che consente di invocare un costruttore di una data classe. Daltra parte, non esiste in JAVA la nozione di distruttore né lanalogo della istruzione free di C. Per liberarsi di un oggetto non più in uso, basta eliminare ogni riferimento ad esso. Il garbage collector si occupa di recuperare automaticamente lo spazio di memoria occupato dagli oggetti non più in uso, cioè quelli non più referenziati.
13
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 13 Metodi e parametri Class Point { public static Point origine = new Point (); public double x, y; public void clear () { x = 0; y = 0; ) } I metodi hanno zero o più parametri. Il nome del metodo, il numero e il tipo dei suoi parametri, il tipo del valore restituito, costituiscono la signature (firma) del metodo, che assieme alla sua semantica sono tutto cò che bisogna conoscere per usare il metodo stesso. OVERLOADING: moltecipli signature dello stesso metodo sono ammesse
14
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 14 La referenza this La referenza this è lequivalente in JAVA della variabile speciale self Class Point { public static Point origine = new Point (); public double x, y; public void clear () { x = 0; y = 0; } public void move (double x, double y) { this.x = x; this.y = y; }
15
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 15 Metodi statici Metodi la cui esecuzione prescinde da qualunque istanza della classe esempio: il metodo main() di una classe Metodi che accedono o modificano i campi statici della classe Class ContoCorrente { public static int ultimo_usato = 0; public int num_conto; public int saldo; public String titolare; public static int nuovoNumero() { ultimo_usato++; return ultimo_usato; } public ContoCorrente (int sal, String tit) { saldo = sal; titolare = tit; num_conto = nuovoNumero(); }
16
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 16 Ereditarietà: estendere una classe Class Pixel extends Point { public Color colore; public void clear() { super.clear(); colore = null; } Un oggetto di tipo Pixel è un Point, quindi ovunque è previsto un riferimento a Point va bene anche un Pixel. Tutto il codice scritto per Point funziona anche su Pixel POLIMORFISMO
17
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 17 La classe Object Una classe che non ne estende esplicitamente nessuna altra, estende implicitamente la classe predefinita Object, che di conseguenza è la radice di qualunque gerarchia di classi. Grazie al polimorfismo, tutti gli oggetti appartengono alla classe Object Object è pertanto un tipo generico di riferimenti che possono puntare a oggetti di qualsiasi classe Object gen_rif = new Pixel(); gen_rif = Questa invece è una stringa;
18
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 18 Le Interfacce Una interfaccia contiene la dichiarazione di un insieme di metodi, come una classe, ma non ne contiene la realizzazione Linterfaccia definisce solo il contratto dei metodi, stabilendone la forma ed il comportamento, ma non i dettagli dellimplementazione interface Lookup { /** Restituisce il valore associato al nome, * oppure null se il nome non è presente */ Object find(String nome); }
19
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 19 Le Interfacce (continua 1) Ora è possibile scrivere codice che fa riferimento ad oggetti di tipo Lookup e al metodo find, e rimandare a un secondo tempo la loro implementazione void processValues (String[ ] nomi, Lookup table) { for (int i = 0; i < nomi.length; i++) { Object valore = table.find(nomi[i]); if (valore != null) elabora(nomi[i], valore); }
20
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 20 Le Interfacce (continua 2) Implementazione di Lookup class SimpleLookup implements Lookup { private String[ ] Nomi; private Object[ ] Valori; Object find(String nome) { for (int i = 0; i < Nomi.length; i++) { if (Nomi[i].equals(nome)) return Valori[i]; } return null; } // altri metodi per inserire/togliere elementi }
21
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 21 Le Interfacce (continua 3) Ovviamente per poter utilizzare il metodo processValues() è necessario passargli un argomento di tipo Lookup, ma da una interfaccia non si possono creare istanze. Fortunatamente, grazie al polimorfismo, possiamo creare unistanza di SimpleLookup ed usarla al posto dove è richiesto un Lookup ……… Lookup tabella = new SimpleLookup(); processValues(elenco, tabella); ……
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.