Fondamenti di Informatica. Dispensa 06 ... un linguaggio di programmazione
orientato agli oggetti ... un programma a sé stante, che viene eseguito da un.
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