Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 06 Programmazione Java Alfonso Miola Ottobre 2012 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1 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.uniroma3.it/~java/fondinf/ Programmazione Java 2 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.uniroma3.it/~java/fondinf/ Programmazione Java 3 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.uniroma3.it/~java/fondinf/ Programmazione Java 4 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.uniroma3.it/~java/fondinf/ Programmazione Java 5 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.uniroma3.it/~java/fondinf/ Programmazione Java 6 . . . 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.uniroma3.it/~java/fondinf/ Programmazione Java 7 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.uniroma3.it/~java/fondinf/ Programmazione Java 8 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.uniroma3.it/~java/fondinf/ Programmazione Java 9 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.uniroma3.it/~java/fondinf/ Programmazione Java 10 . . . 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.uniroma3.it/~java/fondinf/ Programmazione Java 11 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.uniroma3.it/~java/fondinf/ Programmazione Java 12 . . . 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 13 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.uniroma3.it/~java/fondinf/ Programmazione Java 14 System.out q L’applicazione ha bisogno di visualizzare una frase sullo schermo § l’applicazione può utilizzare l’oggetto System.out 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.uniroma3.it/~java/fondinf/ Programmazione Java 15 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"); } } http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 16 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 17 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 è ! http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 18 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 19 Corpo della 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 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 20 Il 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"); } } 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.uniroma3.it/~java/fondinf/ Programmazione Java 21 . . . Il 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"); } } 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 22 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.uniroma3.it/~java/fondinf/ Programmazione Java 23 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 24 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.uniroma3.it/~java/fondinf/ Programmazione Java 25 Interazione fra oggetti «applicazione» ScrittoreSulloSchermo • println(String frase) • main(...) 1: main(...) System.out 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 q Questo “Diagramma di collaborazione”, nel linguaggio UML, descrive i messaggi scambiati quando un utente richiede al calcolatore di eseguire l’applicazione ScrittoreSulloSchermo http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 26 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.uniroma3.it/~java/fondinf/ Programmazione Java 27 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 28 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.uniroma3.it/~java/fondinf/ Programmazione Java 29 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.uniroma3.it/~java/fondinf/ Programmazione Java 30 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.uniroma3.it/~java/fondinf/ Programmazione Java 31 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.uniroma3.it/~java/fondinf/ Programmazione Java 32 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 33 Diagramma di collaborazione per RadiceQuadrata 1.1: radice = sqrt(144) 1: main(…) «applicazione» RadiceQuadrata Math double sqrt(double n) main(...) 1.2: println(radice) System.out println(double x) Commentare questo diagramma http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 34 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.uniroma3.it/~java/fondinf/ Programmazione Java 35 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.uniroma3.it/~java/fondinf/ Programmazione Java 36 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.uniroma3.it/~java/fondinf/ Programmazione Java 37 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.uniroma3.it/~java/fondinf/ Programmazione Java 38 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 String http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 39 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 String "inverno" : String http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 40 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 String t String http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 41 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 String t "inverno" : String String http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 42 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.uniroma3.it/~java/fondinf/ Programmazione Java 43 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.uniroma3.it/~java/fondinf/ Programmazione Java 44 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.uniroma3.it/~java/fondinf/ Programmazione Java 45 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.uniroma3.it/~java/fondinf/ Programmazione Java 46 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.uniroma3.it/~java/fondinf/ Programmazione Java 47 Concatenazione di stringhe String s, t, u; s = "auto"; t = "mobile"; s "auto" : String String t "mobile" : String String u String u = s.concat(t); // u vale (referenzia) "automobile" u "automobile" : String String http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 48 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.uniroma3.it/~java/fondinf/ Programmazione Java 49 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.uniroma3.it/~java/fondinf/ Programmazione Java 50 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.uniroma3.it/~java/fondinf/ Programmazione Java 51 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 52 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); } } http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 53 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 54 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 55 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.uniroma3.it/~java/fondinf/ Programmazione Java 56 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.uniroma3.it/~java/fondinf/ Programmazione Java 57 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.uniroma3.it/~java/fondinf/ Programmazione Java 58 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"); } } http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 59 Il 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"); } } 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 http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 60 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); } } http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 61 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.uniroma3.it/~java/fondinf/ Programmazione Java 62 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() http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 63 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.uniroma3.it/~java/fondinf/ Programmazione Java 64