View
7
Download
1
Category
Preview:
Citation preview
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Dispensa 06 Programmazione Java
Alfonso Miola Ottobre 2012
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 2
Contenuti
q Il linguaggio Java
q Applicazioni Java e il metodo main q Esempi di applicazioni
§ Scrittore sullo schermo
§ Radice quadrata
q Esempi di classi e oggetti Java § Gli oggetti String, i loro metodi e le possibili
applicazioni
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 3
Prerequisiti
Questo capitolo presuppone la conoscenza degli argomenti già trattati nelle precedenti lezioni di questo corso e riportati nelle rispettive dispense, con particolare riferimento al capitolo 1 e al capitolo 2 del libro di testo
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 4
Il linguaggio di programmazione Java q Java è
§ un linguaggio di programmazione • un linguaggio di programmazione orientato agli oggetti
§ indipendente dalla piattaforma • realizzato per tipi diversi di calcolatori
– write once, run everywhere § realizzato per le reti di calcolatori
• supportato dai principali browser Web • sviluppato dalla Sun Microsystems, e rilasciato nel 1995
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 5
Java è un linguaggio di programmazione
q Ogni linguaggio di programmazione, e quindi anche Java, è caratterizzato da: § la sintassi - l’insieme delle regole grammaticali
per scrivere i programmi con quel linguaggio § la semantica - l’insieme delle regole che
stabiliscono il significato dei programmi, ovvero il modo in cui i programmi devono essere interpretati ed eseguiti dal calcolatore
Una successiva dispensa tratterà questi argomenti in dettaglio
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 6
Java è orientato agli oggetti . . .
q Nel paradigma di programmazione orientato agli oggetti § l’esecuzione di un programma consiste nella
cooperazione di un insieme di oggetti § un programma è la descrizione di un insieme di
oggetti
q Il progetto (la descrizione) di un oggetto è definito da una classe
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 7
. . . Java è orientato agli oggetti
q In Java, l’unità fondamentale di programmazione è la classe § Java permette di definire classi § una classe può essere il progetto di un singolo
oggetto (un oggetto classe) o di oggetti (oggetti istanza) di una certa tipologia
§ una classe implementa il comportamento e lo stato di una certa tipologia di oggetti
• le operazioni sono implementate da metodi • le proprietà sono rappresentate da variabili
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 8
Programmi Java
q In Java, ogni programma è un oggetto: esistono due tipi di programmi Java § applicazioni Java
• un programma a sé stante, che viene eseguito da un interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)
§ applet Java • un programma immerso in una pagina web, che viene
eseguito dalla JVM di un browser web q Un programma Java consiste nella definizione
di un insieme di classi § una classe che modella il programma (applicazione) § una classe per ciascuna tipologia di oggetti
necessari per l’esecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 9
Applicazioni Java
q Una applicazione è una classe applicazione § che definisce un oggetto classe e che sa eseguire
esclusivamente l’operazione speciale main
q In una applicazione Java § l’applicazione è rappresentata da un oggetto classe § l’utente dell’applicazione può interagire solo con alcuni
degli oggetti coinvolti dall’applicazione § l’utente dell’applicazione può sicuramente interagire con
l’oggetto classe che rappresenta l’applicazione § l’utente dell’applicazione può richiedere all’oggetto classe
che rappresenta l’applicazione solo di eseguire l’operazione speciale main
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 10
API di Java . . .
q L’ambiente di sviluppo per Java è corredato da un numeroso insieme di classi e oggetti predefiniti - le API (Application Programming Interface) di Java § le API sono in insieme di elementi standard di
programmazione per la gestione di aspetti applicativi di carattere generale — input-output, stringhe, grafica, ...
• le classi delle API sono raggruppate in “librerie” — chiamate package
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 11
. . . API di Java
q Le API rappresentano quindi un supporto al programmatore che gli permettono di concentrarsi sullo sviluppo di classi e oggetti relativi alle applicazioni di interesse
q Gli oggetti e le classi delle API di Java possono essere utilizzati conoscendone l’interfaccia § l’interfaccia degli elementi delle API di Java è
documentata da un insieme di pagine web disponibile al programmatore
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 12
Programmazione in Java . . .
q La programmazione in Java coinvolge i seguenti aspetti § conoscenza del linguaggio Java
• ovvero, conoscenza della sintassi e della semantica di Java
§ uso di oggetti e classi predefiniti (ad esempio, definiti nelle API di Java o in altri package a disposizione) di cui si conoscano le interfacce
§ definizione di nuove classi Java • per implementare programmi, oggetti classe o tipologie di
oggetti istanza necessari alla soluzione del problema
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 13
. . . Programmazione in Java
q Viene ora mostrata una panoramica sulla programmazione in Java
q Come nell’apprendimento dei linguaggi naturali anche qui si incomincia imparando a “leggere” § viene mostrato come leggere alcuni programmi
Java, di complessità via via crescente q Solo successivamente impareremo a “scrivere” e quindi a . . . “parlare Java” § alla progettazione e scrittura di programmi Java
sono dedicati molti dei successivi capitoli
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 14
Scrittore sullo schermo
q Si vuole scrivere una applicazione Java che visualizza sullo schermo le seguenti frasi Questo corso introduce i concetti di base dell'informatica
q Più precisamente, si vuole definire una classe che è il progetto di un oggetto classe che § è una classe applicazione § sa eseguire una operazione il cui effetto è quello di
visualizzare quelle tre frasi sullo schermo
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 15
System.out
q L’applicazione ha bisogno di visualizzare una frase sullo schermo § l’applicazione può utilizzare l’oggetto System.out
§ System.out è un oggetto definito dalle API di Java § System.out modella lo schermo del calcolatore § System.out sa eseguire una operazione println
che visualizza una frase (che è il parametro dell’operazione)
• println(String frase)
System.out
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 16
L’applicazione ScrittoreSulloSchermo /* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 17
ScrittoreSulloSchermo è una classe /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println(“base dell'informatica"); } }
q La definizione di una classe • è introdotta dalla parola class • è seguita dal nome della classe — ScrittoreSulloSchermo
q La classe ScrittoreSulloSchermo è una classe applicazione e quindi è una classe statica
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 18
Commenti /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println(“base dell'informatica"); } }
q La frase delimitata da /* e */ è un commento § i commenti non sono operazioni e quindi non hanno nessuna
influenza sul significato dei programmi - ma sono molto utili per documentare i programmi – quindi più ce ne sono e meglio è !
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 19
Definizione di una classe /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println(“base dell'informatica"); } }
q I dettagli della definizione di una classe sono chiamati il corpo della classe § il corpo della classe è delimitato da parentesi graffe { e } ed è
scritto dopo il nome della classe
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 20
Corpo della classe
q Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni
q La classe ScrittoreSulloSchermo definisce un unico metodo - di nome main - che è un metodo speciale : è l’unica operazione la cui esecuzione può essere richiesta dall’utente di una classe applicazione
/* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 21
Il metodo main . . .
q Nella definizione di un metodo
§ c’è il nome del metodo — main § ci sono alcune parole (misteriose, per ora) che precedono e
che seguono il nome del metodo • ad esempio, la parola static indica che il metodo è un metodo di classe
§ i dettagli della definizione di un metodo sono chiamati il corpo del metodo e sono delimitati da parentesi graffe { e }
/* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 22
. . . Il metodo main
q Il corpo del metodo main
§ è composto da un blocco che è una sequenza di istruzioni, separate da punto e virgola ; e delimitata da parentesi graffe { e }
§ ciascuna istruzione del metodo specifica una azione che l’oggetto ScrittoreSulloSchermo deve svolgere
§ quando l’oggetto ScrittoreSulloSchermo riceve il messaggio main(...), deve eseguire il metodo main, ovvero deve eseguire le istruzioni scritte nel corpo del metodo main
/* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 23
Istruzioni
System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica");
q Le tre istruzioni nel corpo del metodo main hanno una struttura simile § ad esempio, nella prima istruzione
• System.out è il nome dell’oggetto (predefinito) che modella lo schermo del calcolatore
• println("Questo corso") è il messaggio che si vuole inviare a System.out
• il punto, il punto e virgola, le parentesi e le virgolette hanno il ruolo di separare le varie parti dell’istruzione
§ ciascuna di queste tre istruzioni è una istruzione di invio di un messaggio a un oggetto (o invocazione di metodo)
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 24
Esecuzione di istruzioni e azioni System.out.println("Questo corso"); . . .
q L’esecuzione di una istruzione consiste nello svolgimento di una o più azioni da parte dell’oggetto che esegue l’istruzione § ad esempio, l’esecuzione della prima istruzione consiste
nell’invio del messaggio println("Questo corso") dall’oggetto che esegue l’istruzione (ScrittoreSulloSchermo) all’oggetto System.out
§ in corrispondenza della ricezione di questo messaggio, l’oggetto System.out (lo schermo) visualizza la frase Questo corso su se stesso
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 25
Esecuzione di un metodo
q L’esecuzione di un metodo consiste nell’esecuzione delle istruzioni scritte nel corpo del metodo, una alla volta e in sequenza
q Quindi, l’esecuzione del metodo main consiste nell’invio, all’oggetto System.out, di tre messaggi, in sequenza § in corrispondenza alla ricezione dei tre messaggi, lo
schermo System.out visualizzerà successivamente su se stesso le tre frasi
Questo corso introduce i concetti di base dell’informatica
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 26
Interazione fra oggetti
q Questo “Diagramma di collaborazione”, nel linguaggio UML, descrive i messaggi scambiati quando un utente richiede al calcolatore di eseguire l’applicazione ScrittoreSulloSchermo
«applicazione» ScrittoreSulloSchermo
• main(...)
1: main(...)
System.out
• println(String frase)
1.1: println("Questo corso") 1.2: println("introduce i concetti di") 1.3: println("base dell'informatica")
questa icona rappresenta l’utente del programma
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 27
Esercizio
q Commentare la definizione della seguente classe
/* Applicazione che visualizza sullo schermo * la poesia Mattino di Giuseppe Ungaretti. */ class Mattino { public static void main(String[] args) { System.out.println("M'illumino"); System.out.println("d'immenso"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 28
Esercizio
q Ora che abbiamo imparato a leggere proviamo anche a “scrivere” in Java !
q Una lunga tradizione vuole che il primo programma scritto da un programmatore sia quello che visualizza sullo schermo la frase Hello, world (che significa “Ciao, mondo”)
q Definire l’applicazione Java CiaoMondo che visualizza sullo schermo la frase Hello, world
Ovviamente possiamo anche scrivere altro a piacere
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 29
Errori di programmazione q Durante la scrittura di classi è possibile commettere
degli errori di programmazione – ad esempio § la frase scritta non è corretta nel linguaggio di
programmazione (errori grammaticali) § la frase scritta è corretta nel linguaggio di programmazione,
ma il suo significato è diverso da quanto ci si era prefissi (errori non grammaticali)
q Va inoltre osservato che § l’individuazione degli errori grammaticali è solitamente
supportata dagli strumenti di programmazione (in particolare, dal compilatore)
§ viceversa, l’individuazione degli errori non grammaticali non è supportata dagli strumenti di programmazione, ed è quindi necessario ricorrere a opportune metodologie
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 30
Esempi di errori possibili
/* Applicazione che visualizza sullo * schermo la poesia Mattino
* di Giuseppe Ungaretti. */ Class Mattino { public static viod Main(String[] args) {
System.out.println("M'illumino“]; System.out.Println("di mmenso"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 31
Errori comuni
q Alcuni possibili errori di programmazione • omissione o uso errato della punteggiatura
– ad esempio, omettere i punti e virgola — sono solitamente errori grammaticali, ma non sempre
• uso errato delle parentesi – ad esempio, dimenticare di chiudere una parentesi graffa
• uso errato delle lettere maiuscole e minuscole – ad esempio, scrivere Class anziché class (errore grammaticale) —
oppure Main anziché main (errore non grammaticale)
• errori di battitura – ad esempio, scrivere viod anziché void
• dimenticare parole • inserire spazi erronei
– ad esempio, scrivere Scrittore Sullo Schermo
• invertire l’ordine delle parole o delle istruzioni
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 32
Calcolo di una radice quadrata
q Si vuole scrivere una applicazione Java che calcola e visualizza la radice quadrata di 144 § l’esecuzione di questo programma dovrà
visualizzare sullo schermo il numero 12 q L’applicazione farà uso della classe Math, per
calcolare la radice quadrata e della classe System.out per la visualizzazione del risultato
q Math, come System.out e altre classi e oggetti, è un oggetto predefinito nelle API (Application Programming Interface) di Java
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 33
L’applicazione RadiceQuadrata /* Applicazione che calcola e * visualizza sullo schermo * la radice quadrata di 144. */ class RadiceQuadrata { public static void main(String[] args) { double radice; radice = Math.sqrt(144); System.out.println(radice); } }
Commentare questa applicazione
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 34
Diagramma di collaborazione per RadiceQuadrata
«applicazione» RadiceQuadrata
main(...)
1: main(…)
System.out
println(double x)
1.2: println(radice)
Math
double sqrt(double n)
1.1: radice = sqrt(144)
Commentare questo diagramma
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 35
Stringhe e oggetti String
q Una stringa è una sequenza finita di caratteri § le stringhe sono un tipo di dati di uso molto
comune – consentono di rappresentare informazioni testuali e descrittive
q Java supporta la gestione di stringhe attraverso la classe String del package java.lang § un oggetto String rappresenta una sequenza finita
di caratteri dell’alfabeto Unicode § gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dell’interfaccia della classe
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 36
Stringhe e oggetti String
q Il valore (o contenuto) di un oggetto String è la stringa rappresentata da quell’oggetto § ad esempio, il letterale "calcolatore" è un nome,
cioè denota un oggetto String, il cui valore (stato) è la stringa calcolatore
"calcolatore" : String
calcolatore
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 37
Letterali stringa
q Un letterale String è una stringa racchiusa tra doppi apici " e " § ad esempio, "calcolatore" § il valore di un letterale String è la stringa racchiusa
tra apici (apici esclusi) § l’uso di un letterale String è equivalente alla
creazione di un oggetto di tipo String § un letterale String è una espressione di tipo String
• vedremo che ogni letterale e ogni espressione ha un tipo così come tutte le altre componenti linguistiche Java
§ ad esempio, "calcolatore" è il nome, cioè il riferimento, di un oggetto di tipo String che ha come valore la stringa calcolatore
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 38
Variabili e tipi
q Come già detto ad ogni variabile deve essere associato un tipo con una apposita istruzione § Ad esempio per assegnare il tipo dei numeri reali ad una
variabile di nome radice si usa la seguente espressione double radice
q Il tipo double è uno dei tipi primitivi di Java § esso è già predefinito in Java § una variabile di tipo primitivo memorizza un valore § una variabile di tipo double memorizza un valore numero reale
q Esistono anche i tipi riferimento § ogni classe definisce un tipo riferimento § una variabile può essere di tipo riferimento e non memorizza un
valore ma un riferimento ad un oggetto della classe
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 39
Uso di variabili riferimento
q Essendo String il nome di una classe, è possibile dichiarare variabili di tipo String § si tratta di variabili riferimento cioè di variabili che
permettono di memorizzare il riferimento a un oggetto ma non il valore dell’oggetto – che è memorizzato in un’altra area di memoria
String stagione; stagione = "estate"; System.out.println(stagione); // visualizza estate
"estate" : String stagione
String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 40
Variabili riferimento e assegnazioni
q Se a una variabile riferimento (che referenzia già un oggetto A) viene assegnato il riferimento a un altro oggetto B
• il riferimento all’oggetto A memorizzato dalla variabile viene sostituito dal riferimento all’oggetto B e l’oggetto A continua ad esistere
String stagione;
stagione = "estate";
stagione = "inverno";
"estate" : String stagione
String "inverno" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 41
Un oggetto può essere referenziato da più variabili
q È possibile che un oggetto sia contemporaneamente referenziato da più variabili String s, t; s = "estate";
t = s; // copia in t il riferimento memorizzato da s
"estate" : String s
String
String t
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 42
Le variabili sono indipendenti
q Le variabili sono indipendenti § una assegnazione a una variabile modifica il valore
di una sola variabile String s, t; s = "estate"; t = s; // copia in t il riferimento memorizzato da s
t = "inverno";
"estate" : String s
String
String t "inverno" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 43
Gli oggetti String sono immutabili
q Un oggetto String rappresenta una stringa costante, immutabile § dopo la creazione, il valore di un oggetto String
non può essere modificato
§ l’unico modo di interagire con un oggetto String è mediante i metodi della classe String
§ nessun metodo della classe String modifica l’oggetto su cui il metodo viene invocato
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 44
Uso di oggetti String
q Che cosa è un oggetto String? § dal punto di vista del contenuto informativo, un
oggetto String rappresenta una stringa § dal punto di vista comportamentale, un oggetto
String è un oggetto che sa eseguire un certo numero di operazioni per la manipolazione di se stesso
q La classe String è usata per rappresentare il tipo delle stringhe
• un insieme di elementi — le stringhe • un insieme di operazioni, per la manipolazione degli
elementi di un tale insieme
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 45
Il metodo int length()
q Il metodo int length() della classe String § calcola la lunghezza della stringa § la lunghezza di una stringa è il numero di caratteri
della sequenza che costituisce la stringa
q Ad esempio, l’espressione "automobile".length() vale 10
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 46
La stringa vuota
q Una stringa vuota è una sequenza vuota di caratteri § la stringa vuota è un oggetto String di lunghezza
zero § la stringa vuota è denotata dal letterale "“ § l’espressione "".length() vale 0
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 47
Il metodo String concat(String x)
q La concatenazione è l’operazione che a partire da due stringhe S e T calcola una nuova stringa il cui valore è dato dalla sequenza di caratteri di S seguita dalla sequenza di caratteri di T § il metodo String concat(String x) della classe
String implementa l’operazione di concatenazione di stringhe
§ crea e restituisce un nuovo oggetto String composto dai caratteri della stringa su cui il metodo viene invocato seguiti dai caratteri della stringa argomento x
q Ad esempio . . .
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 48
Concatenazione di stringhe String s, t, u; s = "auto"; t = "mobile"; u = s.concat(t); // u vale (referenzia) "automobile"
"auto" : String s
String
String t "mobile" : String
String u
String u "automobile" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 49
Posizione dei caratteri in una stringa
q Le posizioni dei caratteri di una stringa sono numerate da sinistra verso destra § il carattere più a sinistra (il primo) ha posizione 0 § in una stringa composta da N caratteri, il carattere
più a destra (l’ultimo) ha posizione N – 1
a u t o m o b i l e 0 1 2 3 4 5 6 7 8 9 § in generale, l’i-esimo carattere di una stringa
occupa la posizione i–1
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 50
Il metodo String substring(int inizio, int fine) q Il metodo String substring(int inizio, int fine)
della classe String § (crea e) restituisce un nuovo oggetto String
composto dai caratteri della stringa su cui il metodo è stato invocato che occupano le posizioni tra inizio (inclusa) e fine (esclusa)
• detto in altro modo, la stringa restituita comprende i caratteri tra le posizioni inizio e fine–1 (estremi inclusi)
• ad esempio
String s, t; s = "automobile"; t = s.substring(2,6); // t vale "tomo"
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 51
Il metodo String substring(int inizio)
q Il metodo String substring(int inizio) della classe String § (crea e) restituisce un nuovo oggetto String che
consiste dei caratteri della stringa su cui il metodo viene invocato compresi tra quello di posizione inizio e l’ultimo carattere della stringa (incluso)
§ ad esempio
String s, t; s = "automobile"; t = s.substring(4); // t vale "mobile"
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 52
Pre-condizioni delle operazioni substring q I metodi substring sono soggetti alle seguenti
pre-condizioni • inizio deve essere maggiore o uguale a zero e minore o
uguale alla lunghezza della stringa • fine deve essere minore o uguale alla lunghezza della
stringa • inizio deve essere minore o uguale a fine
q In caso di violazione delle pre-condizioni viene generato un errore al tempo di esecuzione di tipo § IndexOutOfBoundsException
• ovvero di tipo indice fuori dai limiti
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 53
Esercizio Cosa visualizza questa applivazione ?
public class JFK { public static void main(String[] args) { String first = "John"; String middle = "Fitzgerald"; String last = "Kennedy"; String initials; String firstInit, middleInit, lastInit; firstInit = first.substring(0,1); middleInit = middle.substring(0,1); lastInit = last.substring(0,1); initials = firstInit.concat(middleInit); initials = initials.concat(lastInit); System.out.println(initials); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 54
Altri metodi della classe String
q La classe String ha molti metodi, consideriamone ora alcuni altri, altri ancora ne vedremo più avanti § String toUpperCase()
• per convertire tutti i caratteri di una stringa in MAIUSCOLE
• ad esempio "Java".toUpperCase() costruisce la stringa di valore JAVA
§ String toLowerCase() • per convertire tutti i caratteri di una stringa in minuscole • ad esempio "Java".toLowerCase() costruisce la
stringa di valore java
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 55
Esempio: MaiuscoleMinuscole public class UpperLowerCase {
public static void main(String[] args) { String s, upper, lower; s = "Hello"; upper = s.toUpperCase(); lower = s.toLowerCase(); System.out.println(s); System.out.print("upper = "); System.out.println(upper); System.out.print("lower = "); System.out.println(lower); } }
Questo programma costruisce 3 stringhe distinte (che non vengono più modificate): la stringa "Hello" iniziale, la stringa "HELLO" denotata attraverso upper, e la stringa "hello" denotata da lower
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 56
Riepilogo della dispensa
q Cosa è un programma Java q Cosa è una applicazione Java q Cosa è il metodo main q Alcuni primi esempi di applicazioni Java
§ Scrittore sullo schermo § Radice quadrata
q Alcuni primi esempi di classi e oggetti § Gli oggetti String con alcuni metodi e le loro possibili
applicazioni
Le successive diapositive sintetizzano quanto visto
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 57
Programmi Java
q In Java, ogni programma è un oggetto: esistono due tipi di programmi Java § applicazioni Java
• un programma a sé stante, che viene eseguito da un interprete Java, chiamato macchina virtuale Java (o JVM, Java Virtual Machine)
§ applet Java • un programma immerso in una pagina web, che viene
eseguito dalla JVM di un browser web q Un programma Java consiste nella definizione
di un insieme di classi § una classe che modella il programma (applicazione) § una classe per ciascuna tipologia di oggetti
necessari per l’esecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 58
Applicazioni Java
q Una applicazione è una classe applicazione § che definisce un oggetto classe e che sa eseguire
esclusivamente l’operazione speciale main
q In una applicazione Java § l’applicazione è rappresentata da un oggetto classe § l’utente dell’applicazione può interagire solo con alcuni
degli oggetti coinvolti dall’applicazione § l’utente dell’applicazione può sicuramente interagire con
l’oggetto classe che rappresenta l’applicazione § l’utente dell’applicazione può richiedere all’oggetto classe
che rappresenta l’applicazione solo di eseguire l’operazione speciale main
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 59
L’applicazione ScrittoreSulloSchermo /* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 60
Il metodo main
q Il corpo della definizione di una classe contiene, tra le altre cose, i metodi della classe per implementare le operazioni
q La classe ScrittoreSulloSchermo definisce un unico metodo - di nome main - che è un metodo speciale : è l’unica operazione la cui esecuzione può essere richiesta dall’utente di una classe applicazione
/* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica"); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 61
L’applicazione RadiceQuadrata /* Applicazione che calcola e * visualizza sullo schermo * la radice quadrata di 144. */ class RadiceQuadrata { public static void main(String[] args) { double radice; radice = Math.sqrt(144); System.out.println(radice); } }
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 62
Stringhe e oggetti String
q Una stringa è una sequenza finita di caratteri § le stringhe sono un tipo di dati di uso molto
comune – consentono di rappresentare informazioni testuali e descrittive
q Java supporta la gestione di stringhe attraverso la classe String del package java.lang § un oggetto String rappresenta una sequenza finita
di caratteri dell’alfabeto Unicode § gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dell’interfaccia della classe
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 63
Metodi della classe String
q La classe String ha, tra gli altri, i seguenti metodi § int length() § String concat(String x) § String substring(int inizio, int fine) § String substring(int inizio) § String toUpperCase() § String toLowerCase()
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 64
Riferimenti al libro di testo q Per lo studio di questi argomenti si fa riferimento al
libro di testo, e in particolare ai capitoli § 3 su Oggetti e Java § 7 su Leggibilità § 9 su Variabili e assegnazione § 12 sulle Stringhe
q In questa lezione abbiamo omesso gli argomenti trattati nei seguenti paragrafi § 3.2.3 – Perimetro di un triangolo § 3.2.4 – Lettura e somma di due numeri interi § 3.2.6 – Una classe per istanziare oggetti § Dal 12.5 al 12.10
• Li vedremo tutti più avanti § 3.2.5 – Robot in un labirinto
• Che invece non farà parte del programma d’esame
Recommended