Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina...

64
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 06 Programmazione Java Alfonso Miola Ottobre 2011

Transcript of Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina...

Page 1: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1

Corso di Laurea Ingegneria Informatica

Fondamenti di Informatica

Dispensa 06

Programmazione Java

Alfonso Miola

Ottobre 2011

Page 2: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 2

Contenuti

Il linguaggio Java

Applicazioni Java e il metodo main

Esempi di applicazioni

Scrittore sullo schermo

Radice quadrata

Esempi di classi e oggetti Java

Gli oggetti String, i loro metodi e le possibili

applicazioni

Page 3: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 3

Prerequisiti

Questo capitolo presuppone la conoscenza

degli argomenti già trattati nelle

precedenti lezioni di questo corso e

riportati nelle rispettive dispense, con

particolare riferimento al capitolo 1 e al

capitolo 2 del libro di testo

Page 4: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 4

Il linguaggio di programmazione Java

Java è

un linguaggio di programmazione

• un linguaggio di programmazione orientato agli oggetti

indipendente dalla piattaforma

• realizzato per tipi diversi di calcolatori

– write once, run everywhere

realizzato per le reti di calcolatori

• supportato dai principali browser Web

• sviluppato dalla Sun Microsystems, e rilasciato nel 1995

Page 5: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 5

Java è un linguaggio di programmazione

Ogni linguaggio di programmazione, e quindi anche

Java, è caratterizzato da:

la sintassi - l’insieme delle regole grammaticali

per scrivere i programmi con quel linguaggio

la semantica - l’insieme delle regole che

stabiliscono il significato dei programmi, ovvero

il modo in cui i programmi devono essere

interpretati ed eseguiti dal calcolatore

Una successiva dispensa tratterà questi argomenti in dettaglio

Page 6: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 6

Java è orientato agli oggetti . . .

Nel paradigma di programmazione orientato

agli oggetti

l’esecuzione di un programma consiste nella

cooperazione di un insieme di oggetti

un programma è la descrizione di un insieme di

oggetti

Il progetto (la descrizione) di un oggetto è

definito da una classe

Page 7: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 7

. . . Java è orientato agli oggetti

In Java, l’unità fondamentale di

programmazione è la classe

Java permette di definire classi

una classe può essere il progetto di un singolo

oggetto (un oggetto classe) o di oggetti (oggetti

istanza) di una certa tipologia

una classe implementa il comportamento e lo stato

di una certa tipologia di oggetti

• le operazioni sono implementate da metodi

• le proprietà sono rappresentate da variabili

Page 8: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 8

Programmi Java

In Java, ogni programma è un oggetto: esistono due tipi di programmi Java applicazioni Java

• un programma a sé stante, che viene eseguito da un interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

applet Java• un programma immerso in una pagina web, che viene

eseguito dalla JVM di un browser web

Un programma Java consiste nella definizione di un insieme di classi una classe che modella il programma (applicazione)

una classe per ciascuna tipologia di oggetti necessari per l’esecuzione del programma

Page 9: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 9

Applicazioni Java

Una applicazione è una classe applicazione

che definisce un oggetto classe e che sa eseguire

esclusivamente l’operazione speciale main

In una applicazione Java

l’applicazione è rappresentata da un oggetto classe

l’utente dell’applicazione può interagire solo con alcuni degli

oggetti coinvolti dall’applicazione

l’utente dell’applicazione può sicuramente interagire con

l’oggetto classe che rappresenta l’applicazione

l’utente dell’applicazione può richiedere all’oggetto classe

che rappresenta l’applicazione solo di eseguire l’operazione

speciale main

Page 10: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 10

API di Java . . .

L’ambiente di sviluppo per Java è corredato

da un numeroso insieme di classi e oggetti

predefiniti - le API (Application Programming

Interface) di Java

le API sono in insieme di elementi standard di

programmazione per la gestione di aspetti

applicativi di carattere generale — input-output,

stringhe, grafica, ...

• le classi delle API sono raggruppate in ―librerie‖ —

chiamate package

Page 11: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 11

. . . API di Java

Le API rappresentano quindi un supporto al

programmatore che gli permettono di

concentrarsi sullo sviluppo di classi e oggetti

relativi alle applicazioni di interesse

Gli oggetti e le classi delle API di Java

possono essere utilizzati conoscendone

l’interfaccia

l’interfaccia degli elementi delle API di Java è

documentata da un insieme di pagine web

disponibile al programmatore

Page 12: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 12

Programmazione in Java . . .

La programmazione in Java coinvolge i

seguenti aspetti

conoscenza del linguaggio Java

• ovvero, conoscenza della sintassi e della semantica di

Java

uso di oggetti e classi predefiniti (ad esempio,

definiti nelle API di Java o in altri package a

disposizione) di cui si conoscano le interfacce

definizione di nuove classi Java

• per implementare programmi, oggetti classe o tipologie di

oggetti istanza necessari alla soluzione del problema

Page 13: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 13

. . . Programmazione in Java

Viene ora mostrata una panoramica sulla

programmazione in Java

Come nell’apprendimento dei linguaggi

naturali anche qui si incomincia imparando a

―leggere‖

viene mostrato come leggere alcuni programmi

Java, di complessità via via crescente

Solo successivamente impareremo a

―scrivere‖ e quindi a . . . ―parlare Java‖

alla progettazione e scrittura di programmi Java

sono dedicati molti dei successivi capitoli

Page 14: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 14

Scrittore sullo schermo

Si vuole scrivere una applicazione Java che

visualizza sullo schermo le seguenti frasi

Questo corso

introduce i concetti di

base dell'informatica

Più precisamente, si vuole definire una classe

che è il progetto di un oggetto classe che

è una classe applicazione

sa eseguire una operazione il cui effetto è quello di

visualizzare quelle tre frasi sullo schermo

Page 15: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 15

System.out

L’applicazione ha bisogno di visualizzare una

frase sullo schermo

l’applicazione può utilizzare l’oggetto System.out

System.out è un oggetto definito dalle API di Java

System.out modella lo schermo del calcolatore

System.out sa eseguire una operazione println

che visualizza una frase (che è il parametro

dell’operazione)

System.out

Page 16: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 16

L’applicazione ScrittoreSulloSchermo

/* Applicazione che visualizza una frase

sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println(“base dell'informatica");

}

}

Page 17: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 17

ScrittoreSulloSchermo è una classe

/* Applicazione che visualizza una frase

sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println(“base dell'informatica");

}

}

La definizione di una classe

• è introdotta dalla parola class

• è seguita dal nome della classe — ScrittoreSulloSchermo

La classe ScrittoreSulloSchermo è una classe

applicazione e quindi è una classe statica

Page 18: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 18

Commenti

/* Applicazione che visualizza una frase

sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println(“base dell'informatica");

}

}

La frase delimitata da /* e */ è un commento

i commenti non sono operazioni e quindi non hanno nessuna

influenza sul significato dei programmi - ma sono molto utili per

documentare i programmi – quindi più ce ne sono e meglio è !

Page 19: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 19

Definizione di una classe

/* Applicazione che visualizza una frase

sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println(“base dell'informatica");

}

}

I dettagli della definizione di una classe sono chiamati

il corpo della classe

il corpo della classe è delimitato da parentesi graffe { e } ed è

scritto dopo il nome della classe

Page 20: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 20

Corpo della classe

Il corpo della definizione di una classe contiene, tra le

altre cose, i metodi della classe per implementare le

operazioni

La classe ScrittoreSulloSchermo definisce un unico

metodo - di nome main - che è un metodo speciale : è

l’unica operazione la cui esecuzione può essere

richiesta dall’utente di una classe applicazione

/* Applicazione che visualizza una frase sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println("base dell'informatica");

}

}

Page 21: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 21

Il metodo main . . .

Nella definizione di un metodo

c’è il nome del metodo — main

ci sono alcune parole (misteriose, per ora) che precedono e

che seguono il nome del metodo

• ad esempio, la parola static indica che il metodo è un metodo di classe

i dettagli della definizione di un metodo sono chiamati il corpodel metodo e sono delimitati da parentesi graffe { e }

/* Applicazione che visualizza una frase sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println("base dell'informatica");

}

}

Page 22: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 22

. . . Il metodo main

Il corpo del metodo main è composto da un blocco che è una sequenza di istruzioni,

separate da punto e virgola ; e delimitata da parentesi graffe { e }

ciascuna istruzione del metodo specifica una azione che l’oggetto ScrittoreSulloSchermo deve svolgere

quando l’oggetto ScrittoreSulloSchermo riceve il messaggio main(...), deve eseguire il metodo main, ovvero deve eseguire le istruzioni scritte nel corpo del metodo main

/* Applicazione che visualizza una frase sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println("base dell'informatica");

}

}

Page 23: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 23

Istruzioni

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println("base dell'informatica");

Le tre istruzioni nel corpo del metodo main hanno una

struttura simile

ad esempio, nella prima istruzione

• System.out è il nome dell’oggetto (predefinito) che modella lo

schermo del calcolatore

• println("Questo corso") è il messaggio che si vuole inviare a

System.out

• il punto, il punto e virgola, le parentesi e le virgolette hanno il

ruolo di separare le varie parti dell’istruzione

ciascuna di queste tre istruzioni è una istruzione di invio di

un messaggio a un oggetto (o invocazione di metodo)

Page 24: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 24

Esecuzione di istruzioni e azioni

System.out.println("Questo corso");

. . .

L’esecuzione di una istruzione consiste nello

svolgimento di una o più azioni da parte dell’oggetto

che esegue l’istruzione

ad esempio, l’esecuzione della prima istruzione consiste

nell’invio del messaggio println("Questo corso") dall’oggetto

che esegue l’istruzione (ScrittoreSulloSchermo) all’oggetto

System.out

in corrispondenza della ricezione di questo messaggio,

l’oggetto System.out (lo schermo) visualizza la frase Questo

corso su se stesso

Page 25: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 25

Esecuzione di un metodo

L’esecuzione di un metodo consiste nell’esecuzione delle istruzioni scritte nel corpo del metodo, una alla volta e in sequenza

Quindi, l’esecuzione del metodo main consiste nell’invio, all’oggetto System.out, di tre messaggi, in sequenza in corrispondenza alla ricezione dei tre messaggi, lo

schermo System.out visualizzerà successivamente su se stesso le tre frasi

Questo corso

introduce i concetti di

base dell’informatica

Page 26: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 26

Interazione fra oggetti

Questo ―Diagramma di collaborazione‖, nel linguaggio UML, descrive i messaggi scambiati quando un utente richiede al calcolatore di eseguire l’applicazione ScrittoreSulloSchermo

rappresenta

Page 27: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 27

Esercizio

Commentare la definizione della seguente

classe

/* Applicazione che visualizza sullo schermo

* la poesia Mattino di Giuseppe Ungaretti. */

class Mattino {

public static void main(String[] args) {

System.out.println("M'illumino");

System.out.println("d'immenso");

}

}

Page 28: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 28

Esercizio

Ora che abbiamo imparato a leggere proviamo anche

a ―scrivere‖ in Java !

Una lunga tradizione vuole che il primo programma

scritto da un programmatore sia quello che visualizza

sullo schermo la frase Hello, world (che significa

―Ciao, mondo‖)

Definire l’applicazione Java CiaoMondo che visualizza

sullo schermo la frase Hello, world

Ovviamente possiamo anche scrivere altro a piacere

Page 29: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 29

Errori di programmazione

Durante la scrittura di classi è possibile commettere

degli errori di programmazione – ad esempio

la frase scritta non è corretta nel linguaggio di

programmazione (errori grammaticali)

la frase scritta è corretta nel linguaggio di programmazione,

ma il suo significato è diverso da quanto ci si era prefissi

(errori non grammaticali)

Va inoltre osservato che

l’individuazione degli errori grammaticali è solitamente

supportata dagli strumenti di programmazione (in particolare,

dal compilatore)

viceversa, l’individuazione degli errori non grammaticali non

è supportata dagli strumenti di programmazione, ed è quindi

necessario ricorrere a opportune metodologie

Page 30: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 30

Esempi di errori possibili

/* Applicazione che visualizza sullo

* schermo la poesia Mattino

* di Giuseppe Ungaretti. */

Class Mattino {

public static viod Main(String[] args)

{

System.out.println("M'illumino“];

System.out.println("di mmenso");

}

}

Page 31: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 31

Errori comuni

Alcuni possibili errori di programmazione• omissione o uso errato della punteggiatura

– ad esempio, omettere i punti e virgola — sono solitamente errori

grammaticali, ma non sempre

• uso errato delle parentesi

– ad esempio, dimenticare di chiudere una parentesi graffa

• uso errato delle lettere maiuscole e minuscole

– ad esempio, scrivere Class anziché class (errore grammaticale) —

oppure Main anziché main (errore non grammaticale)

• errori di battitura

– ad esempio, scrivere viod anziché void

• dimenticare parole

• inserire spazi erronei

– ad esempio, scrivere Scrittore Sullo Schermo

• invertire l’ordine delle parole o delle istruzioni

Page 32: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 32

Calcolo di una radice quadrata

Si vuole scrivere una applicazione Java che

calcola e visualizza la radice quadrata di 144

l’esecuzione di questo programma dovrà

visualizzare sullo schermo il numero 12

L’applicazione farà uso della classe Math, per

calcolare la radice quadrata e della classe

System.out per la visualizzazione del risultato

Math, come System.out e altre classi e

oggetti, è un oggetto predefinito nelle API

(Application Programming Interface) di Java

Page 33: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 33

L’applicazione RadiceQuadrata

/* Applicazione che calcola e

* visualizza sullo schermo

* la radice quadrata di 144. */

class RadiceQuadrata {

public static void main(String[] args) {

double radice;

radice = Math.sqrt(144);

System.out.println(radice);

}

}

Commentare questa applicazione

Page 34: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 34

Diagramma di collaborazione

per RadiceQuadrata

«applicazione»

RadiceQuadrata

main(...)

1: main(…)

System.out

println(double x)

1.2: println(radice)

Math

double sqrt(double n)

1.1: radice = sqrt(144)

Commentare questo diagramma

Page 35: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 35

Stringhe e oggetti String

Una stringa è una sequenza finita di caratteri le stringhe sono un tipo di dati di uso molto

comune – consentono di rappresentare informazioni testuali e descrittive

Java supporta la gestione di stringhe attraverso la classe String del package java.lang un oggetto String rappresenta una sequenza finita

di caratteri dell’alfabeto Unicode

gli oggetti String sanno eseguire operazioni utili per la loro gestione facenti parte dell’interfaccia della classe

Page 36: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 36

Stringhe e oggetti String

Il valore (o contenuto) di un oggetto String è

la stringa rappresentata da quell’oggetto

ad esempio, il letterale "calcolatore" è un nome,

cioè denota un oggetto String, il cui valore (stato) è

la stringa calcolatore

"calcolatore" : String

calcolatore

Page 37: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 37

Letterali stringa

Un letterale String è una stringa racchiusa tra doppi apici " e " ad esempio, "calcolatore"

il valore di un letterale String è la stringa racchiusa tra apici (apici esclusi)

l’uso di un letterale String è equivalente alla creazione di un oggetto di tipo String

un letterale String è una espressione di tipo String• vedremo che ogni letterale e ogni espressione ha un tipo

così come tutte le altre componenti linguistiche Java

ad esempio, "calcolatore" è il nome, cioè il riferimento, di un oggetto di tipo String che ha come valore la stringa calcolatore

Page 38: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 38

Variabili e tipi

Come già detto ad ogni variabile deve essere associato

un tipo con una apposita istruzione

Ad esempio per assegnare il tipo dei numeri reali ad una

variabile di nome radice si usa la seguente espressione

double radice

Il tipo double è uno dei tipi primitivi di Java

esso è già predefinito in Java

una variabile di tipo primitivo memorizza un valore

una variabile di tipo double memorizza un valore numero reale

Esistono anche i tipi riferimento

ogni classe definisce un tipo riferimento

una variabile può essere di tipo riferimento e non memorizza un

valore ma un riferimento ad un oggetto della classe

Page 39: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 39

Uso di variabili riferimento

Essendo String il nome di una classe, è

possibile dichiarare variabili di tipo String

si tratta di variabili riferimento cioè di variabili che

permettono di memorizzare il riferimento a un

oggetto ma non il valore dell’oggetto – che è

memorizzato in un’altra area di memoria

String stagione;

stagione = "estate";

System.out.println(stagione); // visualizza estate

"estate" : Stringstagione

String

Page 40: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 40

Variabili riferimento e assegnazioni

Se a una variabile riferimento (che referenzia

già un oggetto A) viene assegnato il

riferimento a un altro oggetto B• il riferimento all’oggetto A memorizzato dalla variabile

viene sostituito dal riferimento all’oggetto B e l’oggetto A

continua ad esistere

String stagione;

stagione = "estate";

stagione = "inverno";

"estate" : Stringstagione

String

"inverno" : String

Page 41: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 41

Un oggetto può essere

referenziato da più variabili

È possibile che un oggetto sia

contemporaneamente referenziato da più variabiliString s, t;

s = "estate";

t = s; // copia in t il riferimento memorizzato da s

"estate" : Strings

String

String

t

Page 42: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 42

Le variabili sono indipendenti

Le variabili sono indipendenti

una assegnazione a una variabile modifica il valore

di una sola variabile String s, t;

s = "estate";

t = s; // copia in t il riferimento memorizzato da s

t = "inverno";

"estate" : Strings

String

String

t "inverno" : String

Page 43: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 43

Gli oggetti String sono immutabili

Un oggetto String rappresenta una stringa

costante, immutabile

dopo la creazione, il valore di un oggetto String

non può essere modificato

l’unico modo di interagire con un oggetto String è

mediante i metodi della classe String

nessun metodo della classe String modifica

l’oggetto su cui il metodo viene invocato

Page 44: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 44

Uso di oggetti String

Che cosa è un oggetto String?

dal punto di vista del contenuto informativo, un

oggetto String rappresenta una stringa

dal punto di vista comportamentale, un oggetto

String è un oggetto che sa eseguire un certo

numero di operazioni per la manipolazione di se

stesso

La classe String è usata per rappresentare il

tipo delle stringhe • un insieme di elementi — le stringhe

• un insieme di operazioni, per la manipolazione degli

elementi di un tale insieme

Page 45: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 45

Il metodo int length()

Il metodo int length() della classe String

calcola la lunghezza della stringa

la lunghezza di una stringa è il numero di caratteri

della sequenza che costituisce la stringa

Ad esempio, l’espressione

"automobile".length() vale 10

Page 46: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 46

La stringa vuota

Una stringa vuota è una sequenza vuota di

caratteri

la stringa vuota è un oggetto String di lunghezza

zero

la stringa vuota è denotata dal letterale "―

l’espressione "".length() vale 0

Page 47: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 47

Il metodo String concat(String x)

La concatenazione è l’operazione che a partire da due stringhe S e T calcola una nuova stringa il cui valore è dato dalla sequenza di caratteri di S seguita dalla sequenza di caratteri di T il metodo String concat(String x) della classe

String implementa l’operazione di concatenazione di stringhe

crea e restituisce un nuovo oggetto Stringcomposto dai caratteri della stringa su cui il metodo viene invocato seguiti dai caratteri della stringa argomento x

Ad esempio . . .

Page 48: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 48

Concatenazione di stringhe

String s, t, u;

s = "auto";

t = "mobile";

u = s.concat(t); // u vale (referenzia) "automobile"

"auto" : Strings

String

String

t "mobile" : String

String

u

String

u "automobile" : String

Page 49: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 49

Posizione dei caratteri in una stringa

Le posizioni dei caratteri di una stringa sono

numerate da sinistra verso destra

il carattere più a sinistra (il primo) ha posizione 0

in una stringa composta da N caratteri, il carattere

più a destra (l’ultimo) ha posizione N – 1

a u t o m o b i l e

0 1 2 3 4 5 6 7 8 9

in generale, l’i-esimo carattere di una stringa

occupa la posizione i–1

Page 50: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 50

Il metodo

String substring(int inizio, int fine)

Il metodo String substring(int inizio, int fine)della classe String (crea e) restituisce un nuovo oggetto String

composto dai caratteri della stringa su cui il metodo è stato invocato che occupano le posizioni tra inizio (inclusa) e fine (esclusa)

• detto in altro modo, la stringa restituita comprende i caratteri tra le posizioni inizio e fine–1 (estremi inclusi)

• ad esempio

String s, t;

s = "automobile";

t = s.substring(2,6); // t vale "tomo"

Page 51: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 51

Il metodo String substring(int inizio)

Il metodo String substring(int inizio) della

classe String

(crea e) restituisce un nuovo oggetto String che

consiste dei caratteri della stringa su cui il metodo

viene invocato compresi tra quello di posizione

inizio e l’ultimo carattere della stringa (incluso)

ad esempio

String s, t;

s = "automobile";

t = s.substring(4); // t vale "mobile"

Page 52: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 52

Pre-condizioni delle operazioni

substring

I metodi substring sono soggetti alle seguenti

pre-condizioni • inizio deve essere maggiore o uguale a zero e minore o

uguale alla lunghezza della stringa

• fine deve essere minore o uguale alla lunghezza della

stringa

• inizio deve essere minore o uguale a fine

In caso di violazione delle pre-condizioni

viene generato un errore al tempo di

esecuzione di tipo

IndexOutOfBoundsException

• ovvero di tipo indice fuori dai limiti

Page 53: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 53

Esercizio

Cosa visualizza questa applivazione ?

public class JFK {

public static void main(String[] args) {

String first = "John";

String middle = "Fitzgerald";

String last = "Kennedy";

String initials;

String firstInit, middleInit, lastInit;

firstInit = first.substring(0,1);

middleInit = middle.substring(0,1);

lastInit = last.substring(0,1);

initials = firstInit.concat(middleInit);

initials = initials.concat(lastInit);

System.out.println(initials);

}

}

Page 54: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 54

Altri metodi della classe String

La classe String ha molti metodi,

consideriamone ora alcuni altri, altri ancora

ne vedremo più avanti

String toUpperCase()

• per convertire tutti i caratteri di una stringa in

MAIUSCOLE

• ad esempio "Java".toUpperCase() costruisce la

stringa di valore JAVA

String toLowerCase()

• per convertire tutti i caratteri di una stringa in minuscole

• ad esempio "Java".toLowerCase() costruisce la

stringa di valore java

Page 55: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 55

Esempio: MaiuscoleMinuscole

public class UpperLowerCase {

public static void main(String[] args) {

String s, upper, lower;

s = "Hello";

upper = s.toUpperCase();

lower = s.toLowerCase();

System.out.println(s);

System.out.print("upper = ");

System.out.println(upper);

System.out.print("lower = ");

System.out.println(lower);

}

}

Questo programma costruisce 3 stringhe distinte (che non vengono

più modificate): la stringa "Hello" iniziale, la stringa "HELLO"

denotata attraverso upper, e la stringa "hello" denotata da lower

Page 56: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 56

Riepilogo della dispensa

Cosa è un programma Java

Cosa è una applicazione Java

Cosa è il metodo main

Alcuni primi esempi di applicazioni Java

Scrittore sullo schermo

Radice quadrata

Alcuni primi esempi di classi e oggetti

Gli oggetti String con alcuni metodi e le loro possibili

applicazioni

Le successive diapositive sintetizzano quanto visto

Page 57: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 57

Programmi Java

In Java, ogni programma è un oggetto: esistono due tipi di programmi Java applicazioni Java

• un programma a sé stante, che viene eseguito da un interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

applet Java• un programma immerso in una pagina web, che viene

eseguito dalla JVM di un browser web

Un programma Java consiste nella definizione di un insieme di classi una classe che modella il programma (applicazione)

una classe per ciascuna tipologia di oggetti necessari per l’esecuzione del programma

Page 58: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 58

Applicazioni Java

Una applicazione è una classe applicazione

che definisce un oggetto classe e che sa eseguire

esclusivamente l’operazione speciale main

In una applicazione Java

l’applicazione è rappresentata da un oggetto classe

l’utente dell’applicazione può interagire solo con alcuni degli

oggetti coinvolti dall’applicazione

l’utente dell’applicazione può sicuramente interagire con

l’oggetto classe che rappresenta l’applicazione

l’utente dell’applicazione può richiedere all’oggetto classe

che rappresenta l’applicazione solo di eseguire l’operazione

speciale main

Page 59: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 59

L’applicazione ScrittoreSulloSchermo

/* Applicazione che visualizza una frase

sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println(“base dell'informatica");

}

}

Page 60: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 60

Il metodo main

Il corpo della definizione di una classe contiene, tra le

altre cose, i metodi della classe per implementare le

operazioni

La classe ScrittoreSulloSchermo definisce un unico

metodo - di nome main - che è un metodo speciale : è

l’unica operazione la cui esecuzione può essere

richiesta dall’utente di una classe applicazione

/* Applicazione che visualizza una frase sullo schermo. */

class ScrittoreSulloSchermo {

public static void main(String[] args) {

System.out.println("Questo corso");

System.out.println("introduce i concetti di");

System.out.println("base dell'informatica");

}

}

Page 61: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 61

L’applicazione RadiceQuadrata

/* Applicazione che calcola e

* visualizza sullo schermo

* la radice quadrata di 144. */

class RadiceQuadrata {

public static void main(String[] args) {

double radice;

radice = Math.sqrt(144);

System.out.println(radice);

}

}

Page 62: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 62

Stringhe e oggetti String

Una stringa è una sequenza finita di caratteri le stringhe sono un tipo di dati di uso molto

comune – consentono di rappresentare informazioni testuali e descrittive

Java supporta la gestione di stringhe attraverso la classe String del package java.lang un oggetto String rappresenta una sequenza finita

di caratteri dell’alfabeto Unicode

gli oggetti String sanno eseguire operazioni utili per la loro gestione facenti parte dell’interfaccia della classe

Page 63: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 63

Metodi della classe String

La classe String ha, tra gli altri, i seguenti

metodi

int length()

String concat(String x)

String substring(int inizio, int fine)

String substring(int inizio)

String toUpperCase()

String toLowerCase()

Page 64: Corso di Laurea Ingegneria Informatica Fondamenti di ...€¦ · interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)

http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 64

Riferimenti al libro di testo

Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare ai capitoli 3 su Oggetti e Java

7 su Leggibilità

9 su Variabili e assegnazione

12 sulle Stringhe

In questa lezione abbiamo omesso gli argomenti trattati nei seguenti paragrafi 3.2.3 – Perimetro di un triangolo

3.2.4 – Lettura e somma di due numeri interi

3.2.6 – Una classe per istanziare oggetti

Dal 12.5 al 12.10

• Li vedremo tutti più avanti

3.2.5 – Robot in un labirinto

• Che invece non farà parte del programma d’esame