2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un...

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 2012

Transcript of 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un...

Page 1: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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 2012

Page 2: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Contenuti

q  Il linguaggio Java

q  Applicazioni Java e il metodo main q  Esempi di applicazioni

§  Scrittore sullo schermo

§  Radice quadrata

q  Esempi di classi e oggetti Java §  Gli oggetti String, i loro metodi e le possibili

applicazioni

Page 3: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il linguaggio di programmazione Java q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Java è un linguaggio di programmazione

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Java è orientato agli oggetti . . .

q 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

q Il progetto (la descrizione) di un oggetto è definito da una classe

Page 7: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

. . . Java è orientato agli oggetti

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Programmi Java

q 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 q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Applicazioni Java

q Una applicazione è una classe applicazione §  che definisce un oggetto classe e che sa eseguire

esclusivamente l’operazione speciale main

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

API di Java . . .

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

. . . API di Java

q Le API rappresentano quindi un supporto al programmatore che gli permettono di concentrarsi sullo sviluppo di classi e oggetti relativi alle applicazioni di interesse

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Programmazione in Java . . .

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

. . . Programmazione in Java

q Viene ora mostrata una panoramica sulla programmazione in Java

q 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 q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Scrittore sullo schermo

q Si vuole scrivere una applicazione Java che visualizza sullo schermo le seguenti frasi Questo corso introduce i concetti di base dell'informatica

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

System.out

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

• println(String frase)

System.out

Page 16: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

q La definizione di una classe •  è introdotta dalla parola class •  è seguita dal nome della classe — ScrittoreSulloSchermo

q La classe ScrittoreSulloSchermo è una classe applicazione e quindi è una classe statica

Page 18: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

q  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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Corpo della classe

q  Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo main . . .

q 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 corpo del 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

. . . Il metodo main

q  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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Esecuzione di istruzioni e azioni System.out.println("Questo corso"); . . .

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Esecuzione di un metodo

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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Interazione fra oggetti

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

«applicazione» ScrittoreSulloSchermo

• main(...)

1: main(...)

System.out

• println(String frase)

1.1: println("Questo corso") 1.2: println("introduce i concetti di") 1.3: println("base dell'informatica")

questa icona rappresenta l’utente del programma

Page 27: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Esercizio

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Esercizio

q Ora che abbiamo imparato a leggere proviamo anche a “scrivere” in Java !

q 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”)

q Definire l’applicazione Java CiaoMondo che visualizza sullo schermo la frase Hello, world

Ovviamente possiamo anche scrivere altro a piacere

Page 29: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Errori di programmazione q 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)

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Errori comuni

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Calcolo di una radice quadrata

q 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 q L’applicazione farà uso della classe Math, per

calcolare la radice quadrata e della classe System.out per la visualizzazione del risultato

q Math, come System.out e altre classi e oggetti, è un oggetto predefinito nelle API (Application Programming Interface) di Java

Page 33: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Stringhe e oggetti String

q 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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Stringhe e oggetti String

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Letterali stringa

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Variabili e tipi

q 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

q  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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Uso di variabili riferimento

q 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" : String stagione

String

Page 40: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Variabili riferimento e assegnazioni

q 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" : String stagione

String "inverno" : String

Page 41: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Un oggetto può essere referenziato da più variabili

q È possibile che un oggetto sia contemporaneamente referenziato da più variabili String s, t; s = "estate";

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

"estate" : String s

String

String t

Page 42: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Le variabili sono indipendenti

q 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" : String s

String

String t "inverno" : String

Page 43: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Gli oggetti String sono immutabili

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Uso di oggetti String

q 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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo int length()

q 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

q Ad esempio, l’espressione "automobile".length() vale 10

Page 46: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

La stringa vuota

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo String concat(String x)

q 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 String composto dai caratteri della stringa su cui il metodo viene invocato seguiti dai caratteri della stringa argomento x

q Ad esempio . . .

Page 48: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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" : String s

String

String t "mobile" : String

String u

String u "automobile" : String

Page 49: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Posizione dei caratteri in una stringa

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo String substring(int inizio, int fine) q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo String substring(int inizio)

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Pre-condizioni delle operazioni substring q 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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Altri metodi della classe String

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Riepilogo della dispensa

q Cosa è un programma Java q Cosa è una applicazione Java q Cosa è il metodo main q Alcuni primi esempi di applicazioni Java

§  Scrittore sullo schermo §  Radice quadrata

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Programmi Java

q 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 q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Applicazioni Java

q Una applicazione è una classe applicazione §  che definisce un oggetto classe e che sa eseguire

esclusivamente l’operazione speciale main

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Il metodo main

q  Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Stringhe e oggetti String

q 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

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Metodi della classe String

q 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: 2012 06 Programmazione Java 64 - dia.uniroma3.it · java/fondinf/ Programmazione Java 5 Java è un linguaggio di programmazione ! Ogni linguaggio di programmazione, e quindi anche

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

Riferimenti al libro di testo q 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

q  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