Sei sulla pagina 1di 14

02/07/2007

JAVA: Introduzione
Caratteristiche di JAVA Introduzione al linguaggio Java: classi, oggetti Messaggi e metodi La classe String g

Il linguaggio JAVA
Java e un linguaggio di programmazione orientato e agli oggetti
Completamente a oggetti: tutto in Java un oggetto

Diverse analogie con il C++ E molto pi facile produrre un codice privo di bug
Non possibile allocare e deallocare memoria manualmente E stata introdotta una garbage collection E stata eliminata laritmetica dei puntatori Problema dellassegnazione in condizioni logiche E stata eliminata leredit multipla

02/07/2007

Caratteristiche di JAVA - 1
Semplice
La sintassi una versione ripulita di quella del C++
Nessun file header, aritmetica dei puntatori, ridefinizione degli operatori, ecc

A oggetti
Concetti OO simili al C++
Eliminata leriditariet multipla

Serializzazione degli oggetti (oggetti persistenti)

Robusto
Consente di scrivere programmi molto affidabili

Caratteristiche di JAVA - 2
Distribuito
Ampia libreria per gestire i protocolli TCP/IP Facilit di creazione di script lato server e di comunicazione tra oggetti distribuiti

Sicuro
Java destinato allimpiego in ambienti client/server all impiego
Gli autori hanno dato grande enfasi alla sicurezza

Indipendente dallarchitettura
La compilazione genera un byte-code non codice eseguibile
Necessaria la Java Virtual Machine per eseguire il byte-code

02/07/2007

Caratteristiche di JAVA - 3
Portabile
Non sono previsti aspetti dipendenti dallimplementazione
Le dimensioni dei tipi di dati primitivi sono specifiche

Multithreaded
Possibilit di assegnare le operazioni a uno o pi thread
Possibilit di gestire sistemi multi-processore g p

Dinamico
Studiato per un ambiente in evoluzione
Facile espansione delle librerie

Caratteristiche dellOOP
Ogni cosa un oggetti g gg Un programma un insieme di oggetti che si ordinano reciprocamente che cosa fare (scambiandosi messaggi) Ogni oggetto possiede una memoria eventualmente composta da altri oggetti Ogni oggetto possiede un tipo Tutti gli oggetti dello stesso tipo possono ricevere gli stessi messaggi Un oggetto possiede uno stato, un comportamento e unidentit (Booch)

02/07/2007

Un semplice programma JAVA


Insieme di oggetti che si scambiano messaggi gg gg Java case-sensitive
Distinzione tra caratteri maiuscoli e minuscoli

Tutto in Java deve trovarsi in una classe Il nome di file del codice sorgente deve essere uguale al nome della classe pubblica
public class FirstSample { public static void main(String[] args) { System.out.println(Hello world!); } }

Parametri metodo main: Definizione della classe: Modificatore di accesso: Invio messaggio: rappresenta ci che lutente generalmente il nome della definisce chipu accedere il ricevente System.out classe inizia con lettera immette nella riga di il messaggio println al codice maiuscola comando

Classi, metodi e oggetti - 1


Classe
Definisce il comportamento degli oggetti che da essa saranno istanziati Una collezione di metodi

Oggetto
Istanza di una classe Gli oggetti di una stessa classe condividono gli stessi metodi

02/07/2007

Classi, metodi e oggetti - 2


Una classe identificata dal nome
Ogni classe Java deve avere un nome Ogni classe ha un solo nome

Un oggetto identificato da un riferimento


Un riferimento (reference) una frase che si riferisce ad un oggetto
Simile ai puntatori in C++

E possibile avere pi riferimenti ad uno stesso oggetto

La classe System
Rappresenta il sistema fisico (hardware) Comprende diversi attributi
InputStream in PrintStream out

Conoscere una classe equivale a conoscere i suoi metodi


public class System { InputStream in; PrintStream out; }

02/07/2007

La classe PrintStream
Consente di inviare informazioni ad un dispositivo di output
Alcuni metodi
println() println(stringa) print(stringa)

System.out
Un riferimento ad un oggetto predefinito Istanza della classe PrintStream

Messaggi e metodi
Il comportamento di un oggetto attivato dalla ricezione di un messaggio Le classi determinano il comportamento degli oggetti definendo quali sono i messaggi leciti
I messaggi leciti sono definiti attraverso i metodi
U a se o e d cod ce a Una sezione di codice allinterno di una classe che implementa un parte o d u a c asse c e p e e ta u pa ticolare comportamento Sono individuati da un nome del metodo

02/07/2007

Forma dei messaggi


Forma
nome-del-metodo(argomenti)

Un messaggio deve specificare


Il riferimento alloggetto (ricevente) Il nome del metodo da invocare (comportamento desiderato) Gli eventuali argomenti (altre informazioni)

Esempio
Riferimento alloggetto Nome del metodo Argomenti
System.out.println(Hello world!);

Signature di un metodo
Signature
Identifica un metodo Data dal nome del metodo e dalla descrizione degli argomenti

println() e println(stringa) non sono lo stesso metodo


Stesso nome ma argomenti diversi Comportamento diverso

Overloading
Possibilit di avere una classe che definisca metodi differenti con lo stesso nome
Diversa signature

Prototipo
Signature del metodo + la descrizione del valore ritornato

02/07/2007

Invio di un messaggio - 1
Processo
Esecuzione sequenziale fino a raggiungere unistruzione di invio di un messaggio Sospensione dellesecuzione del sender Invio del messaggio al receiver
Invocazione di uno dei metodi del receiver

Esecuzione del codice relativo al metodo invocato


Eventualmente invio di altri messaggi ad altri oggetti

Terminazione del metodo invocato


Il controllo, con eventuali informazioni aggiuntive, vengono restituite al sender (return) Ripresa dellordine sequenziale

Invio di un messaggio - 2
Processo Oggetto Sender
statement1 statement2 statement3 statement4 Receiver.message() statement6 statement7 statement8 statement9

Oggetto Receiver
statement1 statement2 statement3 t t t3 statement4 statement5

02/07/2007

La classe String
Classe predefinita che modella una stringa Il tipo stringa: sequenze di caratteri
Le stringhe in JAVA
Riferimento ad un oggetto di tipo String Ogni stringa racchiusa tra virgolette unistanza di String
String e = ; // Questa una stringa vuota

String greeting = Hello;

Operazioni con le stringhe - 1


Concatenamento
Utilizzo delloperatore +
String name = Pippo; int age = 32; System.out.println(Welcome + name); System.out.println(name + ha + age + anni);

Conversione automatica al tipo String


La variabile age viene convertita al tipo String

02/07/2007

Operazioni con le stringhe - 2


Sottostringhe
Estrazione di una stringa da una pi lunga Utilizzo del metodo substring della classe String
Primo argomento: indice del primo carattere da copiare Secondo argomento: indice del primo carattere da non copiare
String String String String name = Pippo; initial = name substring(0 1); name.substring(0, threeChar = name.substring(0, 3); threeChar = name.substring(3); // Conterr P // Conterr Pip // Conterr po

Le posizioni dei caratteri sono numerate a partire da 0


0 P 1 i 2 p 3 p 4 o

Operazioni con le stringhe - 3


Lunghezza di una stringa
Utilizzo del metodo length della classe String

Verifica delluguaglianza
Utilizzo del metodo equals della classe String
Applicabile sia a variabili sia a costanti Evoluzione: equalsIgnoreCase() q g () Attenzione programmatori C/C++
Non utilizzare == per luguaglianza tra stringhe
s.equals(t); s.equals(Hello); Hello.equals(s);

10

02/07/2007

Propriet delle stringhe


Immutabilit
Una volta creato un oggetto String non pu cambiare
Non posso cambiare li-esimo carattere di una stringa

Esempio Linvio di un messaggio substring comporta la creazione di un nuovo oggetto String

Stringa vuota
Lunghezza 0 Nessun carattere Reference:

Invio multiplo di messaggi


Dato
String w, x, y, z, s; w x y z = = = = ab; cd; ef; gh;

Assegnare ad s la concatenazione delle stringhe refe referenziate da w, x, y, z


abcdefgh

11

02/07/2007

Cascata di messaggi
s = w.concat(x).concat(y).concat(z)
Il mesaggio concat(x) inviato a w
Lespressione w.concat(x) fa riferimento alla stringa risultante w.concat(x)
abcdedgh abcdef abcd

Il mesaggio concat(y) inviato alla nuova stringa abcd


Lespressione w.concat(x).concat(y) fa riferimento alla stringa risultante w.concat(x).concat(y)

Il mesaggio concat(z) i i alla nuova stringa b d f i ( ) inviato ll i abcdef


Lespressione w.concat(x)concat(y).concat(z) fa riferimento alla stringa risultante w.concat(x).concat(y).concat(z)

Composizione di messaggi
s = w.concat(x.concat(y.concat(z)))
Il messaggio concat(z) inviato a y
y.concat(z) fa riferimento alla stringa risultante y.concat(z)
abcdedgh cdedgh edgh ggg

Un messaggio concat con tale nuovo oggetto come argomento inviato a x


x.concat(y.concat(z)) x.concat(y.concat(z)) fa riferimento alla stringa risultante

Un messaggio concat con tale nuovo oggetto come argomento inviato a w


w.concat(x.concat(y.concat(z))) fa riferimento alla stringa risultante w.concat(x.concat(y.concat(z)))

12

02/07/2007

Oggetti intelligenti e utili


Per trovare una sottostringa di una data stringa si inin via un messaggio alla stringa
E la stringa stessa a trovare la sua sottostringa

E necessario progettare le classi in modo da rendere gli oggetti utili e intelligenti


Su richiesta loggetto deve eseguire le operazioni Esempio
Il metodo subtring dimostra che i progettisti Java hanno seguito tale principio

Variabili e oggetti
Una variabile di riferimento si riferisce ad un solo ogog getto alla volta
Un oggetto pu essere referenziato da pi variabili simultaneamente
Propriet dellindipendenza
String s, t; s s = Mario; Mario t = s; t t = Rossi
oggetto String

Rossi
oggetto String

13

02/07/2007

Leggere da standard input


package miopackage; import java.io.*; public class MyReader { public static void main(String[] args) throws IOException { System.out.print("Inserisci una stringa: "); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s = in.readLine(); if (s != null && s.length() != 0) System.out.println("Hai inserito " + s); } }

14