Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

  • Slides: 64
Download presentation
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 06 Programmazione Java Alfonso Miola

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

Contenuti q Il linguaggio Java q Applicazioni Java e il metodo main q Esempi

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 2

Prerequisiti Questo capitolo presuppone la conoscenza degli argomenti già trattati nelle precedenti lezioni di

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 3

Il linguaggio di programmazione Java q Java è § un linguaggio di programmazione •

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 4

Java è un linguaggio di programmazione q Ogni linguaggio di programmazione, e quindi anche

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 5

Java è orientato agli oggetti. . . q Nel paradigma di programmazione orientato agli

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 6

. . . Java è orientato agli oggetti q In Java, l’unità fondamentale di

. . . 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 7

Programmi Java q In Java, ogni programma è un oggetto: esistono due tipi di

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 8

Applicazioni Java q Una applicazione è una classe applicazione § che definisce un oggetto

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 9

API di Java. . . q L’ambiente di sviluppo per Java è corredato da

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 10

. . . API di Java q Le API rappresentano quindi un supporto al

. . . 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 11

Programmazione in Java. . . q La programmazione in Java coinvolge i seguenti aspetti

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 12

. . . Programmazione in Java q Viene ora mostrata una panoramica sulla programmazione

. . . 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 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 13

Scrittore sullo schermo q Si vuole scrivere una applicazione Java che visualizza sullo schermo

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 14

System. out q L’applicazione ha bisogno di visualizzare una frase sullo schermo § l’applicazione

System. out q L’applicazione ha bisogno di visualizzare una frase sullo schermo § l’applicazione può utilizzare l’oggetto System. out • println(String frase) § 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) http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 15

L’applicazione Scrittore. Sullo. Schermo /* Applicazione che visualizza una frase sullo schermo. */ class

L’applicazione Scrittore. Sullo. Schermo /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { public static void main(String[] args) { System. out. println("Questo corso"); System. out. println("introduce i concetti di"); System. out. println(“base dell'informatica"); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 16

Scrittore. Sullo. Schermo è una classe /* Applicazione che visualizza una frase sullo schermo.

Scrittore. Sullo. Schermo è una classe /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 — Scrittore. Sullo. Schermo q La classe Scrittore. Sullo. Schermo è una classe applicazione e quindi è una classe statica http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 17

Commenti /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo

Commenti /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 è ! http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 18

Definizione di una classe /* Applicazione che visualizza una frase sullo schermo. */ class

Definizione di una classe /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 19

Corpo della classe /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore.

Corpo della classe /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni q La classe Scrittore. Sullo. Schermo 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 20

Il metodo main. . . /* Applicazione che visualizza una frase sullo schermo. */

Il metodo main. . . /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 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 } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 21

. . . Il metodo main /* Applicazione che visualizza una frase sullo schermo.

. . . Il metodo main /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 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 Scrittore. Sullo. Schermo deve svolgere § quando l’oggetto Scrittore. Sullo. Schermo riceve il messaggio main(. . . ), deve eseguire il metodo main, ovvero deve eseguire le istruzioni scritte nel corpo del metodo main http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 22

Istruzioni System. out. println("Questo corso"); System. out. println("introduce i concetti di"); System. out. println("base

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) http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 23

Esecuzione di istruzioni e azioni System. out. println("Questo corso"); . . . q L’esecuzione

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 (Scrittore. Sullo. Schermo) 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 24

Esecuzione di un metodo q L’esecuzione di un metodo consiste nell’esecuzione delle istruzioni scritte

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 25

Interazione fra oggetti «applicazione» Scrittore. Sullo. Schermo • println(String frase) • main(. . .

Interazione fra oggetti «applicazione» Scrittore. Sullo. Schermo • println(String frase) • main(. . . ) 1: main(. . . ) questa icona rappresenta l’utente del programma System. out 1. 1: println("Questo corso") 1. 2: println("introduce i concetti di") 1. 3: println("base dell'informatica") q Questo “Diagramma di collaborazione”, nel linguaggio UML, descrive i messaggi scambiati quando un utente richiede al calcolatore di eseguire l’applicazione Scrittore. Sullo. Schermo http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 26

Esercizio q Commentare la definizione della seguente classe /* Applicazione che visualizza sullo schermo

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"); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 27

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

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 Ciao. Mondo che visualizza sullo schermo la frase Hello, world Ovviamente possiamo anche scrivere altro a piacere http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 28

Errori di programmazione q Durante la scrittura di classi è possibile commettere degli errori

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 29

Esempi di errori possibili /* Applicazione che visualizza sullo * schermo la poesia Mattino

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"); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 30

Errori comuni q Alcuni possibili errori di programmazione • omissione o uso errato della

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 31

Calcolo di una radice quadrata q Si vuole scrivere una applicazione Java che calcola

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 32

L’applicazione Radice. Quadrata /* Applicazione che calcola e * visualizza sullo schermo * la

L’applicazione Radice. Quadrata /* Applicazione che calcola e * visualizza sullo schermo * la radice quadrata di 144. */ class Radice. Quadrata { public static void main(String[] args) { double radice; radice = Math. sqrt(144); System. out. println(radice); } } Commentare questa applicazione http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 33

Diagramma di collaborazione per Radice. Quadrata 1. 1: radice = sqrt(144) 1: main(…) «applicazione»

Diagramma di collaborazione per Radice. Quadrata 1. 1: radice = sqrt(144) 1: main(…) «applicazione» Radice. Quadrata Math double sqrt(double n) main(. . . ) 1. 2: println(radice) System. out println(double x) Commentare questo diagramma http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 34

Stringhe e oggetti String q Una stringa è una sequenza finita di caratteri §

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 35

Stringhe e oggetti String q Il valore (o contenuto) di un oggetto String è

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 36

Letterali stringa q Un letterale String è una stringa racchiusa tra doppi apici "

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 37

Variabili e tipi q Come già detto ad ogni variabile deve essere associato un

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 38

Uso di variabili riferimento q Essendo String il nome di una classe, è possibile

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 stagione "estate" : String http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 39

Variabili riferimento e assegnazioni q Se a una variabile riferimento (che referenzia già un

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"; stagione "estate" : String "inverno" : String http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 40

Un oggetto può essere referenziato da più variabili q È possibile che un oggetto

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 s "estate" : String t String http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 41

Le variabili sono indipendenti q Le variabili sono indipendenti § una assegnazione a una

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"; s "estate" : String t "inverno" : String http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 42

Gli oggetti String sono immutabili q Un oggetto String rappresenta una stringa costante, immutabile

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 43

Uso di oggetti String q Che cosa è un oggetto String? § dal punto

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 44

Il metodo int length() q Il metodo int length() della classe String § calcola

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 45

La stringa vuota q Una stringa vuota è una sequenza vuota di caratteri §

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 46

Il metodo String concat(String x) q La concatenazione è l’operazione che a partire da

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. . . http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 47

Concatenazione di stringhe String s, t, u; s = "auto"; t = "mobile"; s

Concatenazione di stringhe String s, t, u; s = "auto"; t = "mobile"; s "auto" : String t "mobile" : String u = s. concat(t); // u vale (referenzia) "automobile" u "automobile" : String http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 48

Posizione dei caratteri in una stringa q Le posizioni dei caratteri di una stringa

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 49

Il metodo String substring(int inizio, int fine) q Il metodo String substring(int inizio, int

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" http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 50

Il metodo String substring(int inizio) q Il metodo String substring(int inizio) della classe String

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" http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 51

Pre-condizioni delle operazioni substring q I metodi substring sono soggetti alle seguenti pre-condizioni •

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 § Index. Out. Of. Bounds. Exception • ovvero di tipo indice fuori dai limiti http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 52

Esercizio Cosa visualizza questa applivazione ? public class JFK { public static void main(String[]

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 first. Init, middle. Init, last. Init; first. Init = first. substring(0, 1); middle. Init = middle. substring(0, 1); last. Init = last. substring(0, 1); initials = first. Init. concat(middle. Init); initials = initials. concat(last. Init); System. out. println(initials); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 53

Altri metodi della classe String q La classe String ha molti metodi, consideriamone ora

Altri metodi della classe String q La classe String ha molti metodi, consideriamone ora alcuni altri, altri ancora ne vedremo più avanti § String to. Upper. Case() • per convertire tutti i caratteri di una stringa in MAIUSCOLE • ad esempio "Java". to. Upper. Case() costruisce la stringa di valore JAVA § String to. Lower. Case() • per convertire tutti i caratteri di una stringa in minuscole • ad esempio "Java". to. Lower. Case() costruisce la stringa di valore java http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 54

Esempio: Maiuscole. Minuscole public class Upper. Lower. Case { public static void main(String[] args)

Esempio: Maiuscole. Minuscole public class Upper. Lower. Case { public static void main(String[] args) { String s, upper, lower; s = "Hello"; upper = s. to. Upper. Case(); lower = s. to. Lower. Case(); 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 55

Riepilogo della dispensa q Cosa è un programma Java q Cosa è una applicazione

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 56

Programmi Java q In Java, ogni programma è un oggetto: esistono due tipi di

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 57

Applicazioni Java q Una applicazione è una classe applicazione § che definisce un oggetto

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 58

L’applicazione Scrittore. Sullo. Schermo /* Applicazione che visualizza una frase sullo schermo. */ class

L’applicazione Scrittore. Sullo. Schermo /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { public static void main(String[] args) { System. out. println("Questo corso"); System. out. println("introduce i concetti di"); System. out. println(“base dell'informatica"); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 59

Il metodo main /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore.

Il metodo main /* Applicazione che visualizza una frase sullo schermo. */ class Scrittore. Sullo. Schermo { 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 Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni q La classe Scrittore. Sullo. Schermo 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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 60

L’applicazione Radice. Quadrata /* Applicazione che calcola e * visualizza sullo schermo * la

L’applicazione Radice. Quadrata /* Applicazione che calcola e * visualizza sullo schermo * la radice quadrata di 144. */ class Radice. Quadrata { public static void main(String[] args) { double radice; radice = Math. sqrt(144); System. out. println(radice); } } http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 61

Stringhe e oggetti String q Una stringa è una sequenza finita di caratteri §

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 62

Metodi della classe String q La classe String ha, tra gli altri, i seguenti

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 to. Upper. Case() § String to. Lower. Case() http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 63

Riferimenti al libro di testo q Per lo studio di questi argomenti si fa

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 http: //www. dia. uniroma 3. it/~java/fondinf/ Programmazione Java 64