Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web...
-
Upload
petronel-brunetti -
Category
Documents
-
view
212 -
download
0
Transcript of Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web...
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 dicomunicazione 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
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 un’interfaccia 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
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 l’integrità 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 l’utente comunica attraverso elementi grafici
• PORTABILITA’: il funzionamento delle applicazioni interattive è di solito
basato sull’ambiente run-time dello specifico sistema operativo
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
L’unità 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 dellooggetto, e metodi, che sono sequenze di istruzioni che operano sullo stato
Class HelloWorld {public static void main (String[ ] args) {
System.out.println(“Hello, world”);}
}
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
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
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)
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
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.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3
10
Classi e oggetti
Gli oggetti sono creati col meccanismo dell’istanziazione, e l’accesso
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;
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 all’oggetto
origine con il riferimento Point.origine. Esiste un unico oggetto
Point.origine indipendentemente da quante istanze di Point vengono
create.
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.
D’altra parte, non esiste in JAVA la nozione di distruttore né l’analogo
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.
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 deisuoi parametri, il tipo del valore restituito, costituiscono la signature (firma) delmetodo, che assieme alla sua semantica sono tutto cò che bisogna conoscere per usare il metodo stesso.
OVERLOADING: moltecipli signature dello stesso metodo sono ammesse
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3
14
La referenza this
La referenza this è l’equivalente 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;
}}
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3
15
Metodi statici
Metodi la cui esecuzione prescinde da qualunque istanza della classeesempio: 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();
}}
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
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”;
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
L’interfaccia definisce solo il contratto dei metodi, stabilendone la forma ed il comportamento, ma non i dettagli dell’implementazione
interface Lookup {/** Restituisce il valore associato al nome, * oppure null se il nome non è presente */Object find(String nome);
}
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);
}
}
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
}
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3
21
Le Interfacce (continua 3)
Ovviamente per poter utilizzare il metodo processValues() è necessariopassargli un argomento di tipo Lookup, ma da una interfaccia non si possono creare istanze.
Fortunatamente, grazie al polimorfismo, possiamo creare un’istanza di SimpleLookup ed usarla al posto dove è richiesto un Lookup
………………Lookup tabella = new SimpleLookup();processValues(elenco, tabella);…………