Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web...

21
Gestione dei Progetti Softwar e 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web net: milioni di computer collegati fra di loro attraverso pro comunicazione standard in modo da poter ambiare posta elettronica aricare dati e software (freeware o shareware) rtecipare a newsgroups cercare informazioni navigando in maniera ipertestuale nel Wo de Web

Transcript of Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web...

Page 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.

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

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

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

Page 3: 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.

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

Page 4: 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.

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”);}

}

Page 5: 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.

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

Page 6: 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.

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

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

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)

Page 8: 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.

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

Page 9: 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.

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.

Page 10: 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.

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;

Page 11: 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.

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.

Page 12: 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.

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.

Page 13: 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.

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

Page 14: 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.

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;

}}

Page 15: 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.

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();

}}

Page 16: 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.

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

Page 17: 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.

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”;

Page 18: 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.

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);

}

Page 19: 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.

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);

}

}

Page 20: 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.

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

}

Page 21: 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.

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);…………