Fondamenti di Informatica Programmazione Java - Dipartimento di ...

113 downloads 521 Views 266KB Size Report
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