Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni48 pagine

02 IntroduzioneJava

Il documento fornisce un'introduzione al linguaggio di programmazione Java, evidenziando la sua natura orientata agli oggetti, la sua multipiattaforma e la sicurezza. Viene descritto il processo di sviluppo di un programma Java, dalla scrittura del codice sorgente alla compilazione e all'esecuzione tramite la Java Virtual Machine (JVM). Inoltre, il documento esplora vari concetti fondamentali come identificatori, tipi di dato, operatori e classi wrapper.

Caricato da

Cuono Tanzillo
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni48 pagine

02 IntroduzioneJava

Il documento fornisce un'introduzione al linguaggio di programmazione Java, evidenziando la sua natura orientata agli oggetti, la sua multipiattaforma e la sicurezza. Viene descritto il processo di sviluppo di un programma Java, dalla scrittura del codice sorgente alla compilazione e all'esecuzione tramite la Java Virtual Machine (JVM). Inoltre, il documento esplora vari concetti fondamentali come identificatori, tipi di dato, operatori e classi wrapper.

Caricato da

Cuono Tanzillo
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Linguaggio Java

[Link] Capasso Mirella

1
Introduzione
 E’ un linguaggio di programmazione orientato agli oggetti, creato da
James Gosling ed altri ingegneri della Sun Microsystem a partire dagli inizi
degli anni 90
 E’ stato sviluppato da Sun Microsystem, che nel 2010 è stata acquistata da
Oracle.
 Ad oggi, Java regna sui server di tutto il mondo ed esistono miliardi di
congegni elettronici che utilizzano tecnologia Java: navigatori, cellulari,
decoder, TV, ecc.
 E’ il linguaggio di programmazione che conta il numero maggiore di
sviluppatori attivi sull’intero globo
 E’ un linguaggio che garantisce la sicurezza

2
Caratteristiche
 E’ un linguaggio multipiattaforma, in quanto una stessa applicazione Java può
funzionare su:
 SO Windows
 SO Android
 SO Unix-like
grazie alla Java Virtual Machine JVM, un software che funge da interprete (e
non solo) per le applicazioni Java.
Un programma Java, durante la compilazione, viene:
1. tradotto in “bytecode”, un linguaggio molto simile al linguaggio macchina
2. Successivamente, ogni singola istruzione espressa in bytecode, dalla JVM:
 prima viene tradotta in linguaggio macchina
 poi viene eseguita dalla CPU 3
Il complesso JVM e CPU esternamente
appare come una macchina virtuale
che elabora istruzioni espresse in
bytecode

4
….Altre caratteristiche

 il compilatore inserisce automaticamente un costruttore implicito se lo


sviluppatore non ne fornisce
 ha un’enorme libreria di classi, documentate ottimamente
 linguaggio aperto, in quanto la scelta dell’ambiente di sviluppo è
totalmente a scelta dello sviluppatore, che potrà, per assurdo, avvalersi
anche di un semplice editor di testo per scrivere codice Java.
 Esistono, inoltre, anche ambienti di sviluppo totalmente free, come Eclipse
e NetBeans.

5
Editing di un programma Java

 Tutto il codice sorgente viene scritto in file con formato testuale aventi
estensione «.java»
 Il nome di ogni file deve coincidere con il nome della classe definita al suo
interno.
Es.: il codice sorgente della classe HelloWorld va salvato sul file
[Link]

6
Compilazione di un programma Java

 I file sorgenti vengono compilati in file «.class» contenenti il corrispondente


bytecode.
 Il compilatore viene lanciato con il comando «javac» seguito dal nome del file
sorgente che si desidera compilare includendo l’estensione «.java»
Es.: Il file [Link] .viene compilato con l’istruzione «javac»
[Link], l’output del processo di compilazione è il file [Link].

7
Esecuzione di un programma Java

Il bytecode viene interpretato ed eseguito dalla JVM


 La JVM viene lanciata con il comando «java» seguito dal nome della classe
contenente il metodo main (cioè del file .class contenente il bytecode da cui
dovrà iniziare l’esecuzione del programma).

il programma HelloWorld viene eseguito con l’istruzione java HelloWorld

8
Compilazione ed esecuzione di un programma Java
1. Aprire il prompt
2. Posizionarsi nella cartella del programma java
Il passo 3 deve essere fatto solo se non si riesce a compilare
3. Settare il path della jdk (se non è settato come variabile di sistema)
path %path%;"C:\Program Files\Java\jdk-11.0.2\bin“
4. lanciare il comando per la compilazione
javac [Link]
5. Lanciare il comando per eseguire il programma
java Main
Attenzione:
• Per compilare più classi correlate lanciare il
comando javac seguito da tutti i file java da
compilare 9
JDK
..Facciamo chiarezza! JRE

 JRE (Java Runtime Environment) contiene la JVM, librerie di classi


Java e un launcher per eseguire applicazioni Java. È un superset di JVM
JVM
 JDK (Java Development Kit) consente lo sviluppo e l'esecuzione
di programmi Java → include gli strumenti JRE e strumenti
aggiuntivi per lo sviluppo di software, come:
▪ Compilatore
▪ comando javac , che compila il codice sorgente Java (".java") in file bytecode
(".class")
▪ Javadoc che crea la documentazione in automatico se il codice è
opportunamente commentato….
➢ IDE (Integrated Development Environment) sono ambienti di
sviluppo integrati di Java, come NetBeans, BluJ, Eclipse… 10
Sviluppo di un programma Java
 Per sviluppare un programma Java è necessario assicurarsi che sia installato il
JDK nel proprio calcolatore
 Il JDK è un tool per lo sviluppo di programmi Java comprensivo di:
❖ javac: compilatore
❖ java: JVM (interprete)
❖ javadoc: gestore della documentazione
❖ jar: gestore degli archivi del file java
❖ jdb: debuger.
 Per la stesura del codice si può optare per:
❖ Text Editor Software per scrivere/modificare file testuali come il codice
sorgente Java (es.: Notepad++, Blocco Note di Windows)
❖ IDE come NetBeans, BluJ, Eclipse…
11
Gli identificatori
 Sono i nomi che il programmatore assegna alle specifiche componenti
del suo programma, per identificare le variabili, i metodi e le classi
 E’ composto da una sequenza di lettere e numeri
 Il primo carattere deve essere una lettera. E’ anche possibile usare il
carattere di sottolineatura _
Ci sono delle convenzioni:
• Si riferiscono al nome di attributi, di metodi e di oggetto cominciano con
la prima lettera minuscola (es.: nome, voto, aggiorna, auto);
• Gli identificatori che specificano il nome delle classi iniziano con la
lettera maiuscola (es.: Libro, Automobile, Rettangolo);
• Se gli identificatori sono formati da più parole, queste vengono unite e
ogni parola successiva alla prima ha l’iniziale maiusola (es.: totFattura;
contaSecondi; calcoloMedia) 12
Tipi di dato
PRIMITIVI
 Numerici interi
 byte, short, int, long
 Numerici reali
 float, double
 Non numerici
 boolean, char

Le stringhe sono un tipo di dato che raggruppa un insieme di caratteri. Le


stringhe non sono un tipo predefinito, ma sono definite con un’apposita classe
(String)
13
Casting per la conversione di tipo
 Il casting consiste nel forzare un valore di un tipo ad assumere
un tipo diverso
int x=20;
double denominatore=6,5;

(int) denominatore; Il risultato è 6

int numeratore=20;
int denominatore=6;
Risultato=3
double risultato;
risultato= numeratore/denominatore;
Risultato=3,333
risultato= (double)numeratore/denominatore;
14
Operatori aritmetici
Gli operatori aritmetici sono i classici operatori aritmetici:
▪ +, -, *, / e %, ma le operazioni sono tipate, cioè se sommiamo due interi
otteniamo un valore intero!

Ci sono due operatori di incremento e di decremento che aggiungono o


tolgono 1 al valore della variabile. Gli operatori sono ++ e --

Operatori di assegnamento

 L’assegnamento di un valore a una variabile viene eseguito usando


l’operatore di assegnamento =.
15
Operatori di confronto
Gli operatori di confronto sono:

16
Operatori logici
 Gli operatori logici aiutano a definire espressioni booleane
 mettono in relazione il verificarsi di più condizioni

17
La comunicazione con l'elaboratore

18
L’output

L’applicazione per visualizzare una frase sullo schermo deve utilizzare l’oggetto
[Link]
 [Link] è un oggetto definito dalle API di Java
 [Link] è un oggetto associato allo standard output
 sull’oggetto [Link] sé possibile invocare il metodo println con un
parametro che visualizza una frase (che è il parametro dell’operazione)
……
double saldo=3411.45;
[Link]("Il saldo attuale del Signor Rossi è " + saldo);

19
L’output

 [Link](<stringa da scrivere >); // di seguito


 [Link](<stringa da scrivere >);// va a riga
nuova
Alcuni esempi sono riportati di seguito.
 [Link](“scrivo un numero “); // di seguito
 [Link](“ di seguito “ + 123); // di a riga
nuova
 [Link](“la nuova riga è a capo “);// va a riga
nuova

20
L’input
La classe Scanner consente di leggere da qualsiasi flusso di ingresso. Si può usare anche per
leggere dati in ingresso da tastiera ricevuti tramite l'oggetto [Link]
 Prima di tutto si deve importare la classe Scanner
import [Link];
 All'interno del codice si deve creare un nuovo oggetto della classe Scanner
Scanner tastiera = new Scanner ([Link]);
 Poi si possono invocarne i metodi:
int <variabile> = [Link]();
double<variabile> = [Link] Double();
float<variabile> = [Link] Float();
String <variabile> = [Link]();// parola delimitata da spaziatura(SP,\t,\n,\r)
String <variabile> = [Link](); // riga delimitate da \n oppure 21
\r
L’input
ATTENZIONE: prima di utilizzare il metodo nextLine(), conviene sempre
invocare il metodo nextLine() “a vuoto”, in modo tale che se nel buffer dello
stream ci sono degli “\n” vengono letti
 Al termine, è opportuno chiudere l’oggetto tastiera [Link]();

Esempio:
import [Link];
Scanner tastiera=new Scanner([Link]);
//Acquisizione parametri ….
[Link]("Inserire ……..");
//Assegnazione dati digitati alla variabile ….
name=[Link]();
[Link](); 22
L’array args[] per i valori passati da linea di comando

Le applicazioni Java possono ricevere in input i valori che l’utente indica da


linea di comando.
 In pratica, i parametri vengono aggiunti al comando che invoca
l’applicazione, subito dopo il nome della classe che deve essere eseguita.
Successivamente l’interprete Java passa l’elenco dei parametri al metodo
main dell’applicazione tramite un array di stringhe.

23
Array

All’interno di un programma può essere necessario gestire collezioni di dati:


 Il modo più semplice per organizzarli, se sono di tipo omogeneo, è
attraverso il concetto di array o vettore
 Gli array hanno una dimensione fissa e sono indicizzati a partire da 0.
 Utili per memorizzare collezioni di dati come numeri, stringhe, oggetti.
 Hanno dimensione fissa, definita all’atto della creazione

24
Dichiarazione array

Dichiarazione:
 int[] numeri;
int[] numeri;
Allocazione memoria: numeri = new int[5];//crea un array di 5
 numeri = new int[5];

Nel caso di array di tipi elementari, all’atto della creazione, a


volte si conosce a priori l’intero contenuto dell’array
 Java offre una sintassi semplificata per la sua inizializzazione

int[] numeri ={4, 0, 7, 9, 12};


25
Esempio
public class Arraysempio {
public static void main(String[] args) {
Memoria
int[] voti = {90, 85, 78};
for (int i = 0; i < [Link]; i++) {
[Link]("Voto " + i + ": " + voti[i]); length 3
}
0
90
}
} 0
85

0
78

26
La classe String
 Sintassi semplificata
 String s1= “Hello” ;
 String s2 = s1+ “ Java”
Offre molti metodi: confronto, ricerca, derivazione di nuove stringhe, informazioni
generali, …
 public boolean equals(String s)
 Restituisce true se il parametro contiene gli stessi caratteri dell’oggetto
corrente
 public boolean equalsIgnoreCase(String s)
 Idem, trascurando la differenza tra maiuscole e minuscole
 public int indexOf(String s)
 Restituisce la posizione, all’interno della sequenza di caratteri, in cui inizia la
stringa indicata come parametro (-1 se non esiste)
27
Stringhe: derivazione e informazioni
 public String toUpperCase()
 Restituisce una nuova stringa contenente gli stessi caratteri in
versione maiuscola
 public String replace(char oldChar, char newChar)
 Restituisce una nuova stringa in cui tutte le occorrenze di oldChar
sono sostituite con newChar
 public String substring(int beginIndex, int endIndex)
 Restituisce una nuova stringa formata dai caratteri che iniziano alla
posizione beginIndex fino a endIndex escluso
 public int length()
 Restituisce la lunghezza in caratteri della stringa corrente
 String[] split(String regex,int limit)
 separare una stringa in diverse parti utilizzando un separatore
passato come parametro restituendo un array di Stringhe 28
Classi “wrapper” oggetto
Tipo
In varie situazioni, può essere comodo poter trattare i tipi primitivo
primitivi come oggetti
 Una classe wrapper (involucro) incapsula una variabile di un tipo primitivo
 In qualche modo “trasforma” un tipo primitivo in un oggetto equivalente
 la classe Boolean incapsula un boolean
 la classe Double incapsula un double
 la classe Integer incapsula un int
 La classe wrapper ha nome (quasi) identico al tipo primitivo che incapsula,
ma con l’iniziale maiuscola

Integer in=7;
29
Classi “wrapper”
 Utilizzate per trasformare i dati elementari in oggetti

Object

Boolean Char
Number

Byte Integer Float

Short Long Double


30
Classi wrapper: funzionamento
 Ogni classe wrapper ha dei metodi
▪ per incapsulare/boxing il dato primitivo
▪ per estrarre il valore incapsulato/unboxing
int i=7;
Integer iWrap= [Link](i);
i 7 iWrap
int Boxing

int x=[Link]();
x
iWrap Unboxing
31
Creazione dell’oggetto wrapper: valueOf()
 Incapsulamento del dato primitivo
▪ Ogni classe wrapper ha il suo metodo valueOf che prende il valore
primitivo o una stringa e restituisce l’oggetto corrispondente

32
Classi wrapper: i metodi *Value()

 Ogni wrapper ha un metodo che restituisce il valore primitivo


corrispondente
▪ Integer →intValue()
▪ Double → doubleValue()
▪ Boolean → booleanValue()
▪ Character →charValue()

33
Classi wrapper

tipo classe
boxing unboxing
primitivo wrapper
byte Byte [Link](byte) byteValue()
short Short [Link](short) shortValue()
int Integer [Link](int) intValue()
long Long [Link](long) longValue()
char Character [Link](char) charValue()
float Float [Link](float) floatValue()
double Double [Link](double) doubleValue()
boolean Boolean [Link](boolean) booleanValue()
34
Wrapper numerici
 Metodi per
 [Link](String s): converte una stringa in int
 [Link](int i): converte un int in stringa
 [Link](String s): converte una stringa in double
 [Link](String s): converte una stringa in boolean (true or false)
 …..

String str = "25";


int number = [Link](str);

35
Package: un cognome per le classi

 Le classi possono essere raggruppate in “package”


 Ogni package ha un nome
 Viene scelto in modo da essere univoco
 Sequenza di parole separate da ‘.’
 Dovrebbe suggerire lo scopo comune del gruppo di classi
 [Link]
 Una classe è denotata:
 Dal nome proprio
 Dal package di appartenenza
 Le classi che appartengono ad uno stesso package formano un gruppo

36
Package
 Le classi dello stesso package si “conoscono”
 Basta usare il nome proprio della classe
 Tra package diversi occorre usare il nome completo
 Anche nei costruttori
 Il costrutto “import” permette di definire le classi note
 Queste vengono indicate solo per nome
 Serve solo in fase di compilazione!
 Si possono includere un numero qualsiasi di clausole import
 Devono sempre precedere la definizione della classe
 Per importare tutte le classi di un package, si usa la sintassi
 import NomePackage.* ; 37
Esempi package forme; [Link]
Deve essere posta all’inizio
del file sorgente public class Cerchio {
//…
} [Link]
[Link] package prova;
package prova; class Esempio {
import [Link];
[Link] c;
class Esempio { 2 alternative per usare
Cerchio c; classi appartenenti Esempio () {
diversi package!!i
c=new [Link]();
Esempio () { }
c=new Cerchio(); }
}
} 38
Gerarchia di package
 Il nome di un package può essere formato da molti segmenti
 Package che condividono lo stesso prefisso, possono avere funzionalità
“collegate”
 [Link]
 [Link]
 Per Java, sono gruppi totalmente separati
Rappresentazione su disco
 Ad ogni classe, corrisponde un file “.class” che contiene il codice
eseguibile
 Questo deve risiedere in una (gerarchia di) cartella il cui nome coincide
con quello del package
 Le classi del package anonimo si trovano nella cartella radice 39
Rappresentazione su disco

public class Test {


//…
...
}

package [Link]; [Link]


geom

public class Cerchio {


//…
} forme

[Link]
40
Array
 All’interno di un programma può essere necessario gestire
collezioni di dati:
 Il modo più semplice per organizzarli, se sono di tipo
omogeneo, è attraverso il concetto di array o vettore Memoria
 Array in Java: sono oggetti che incapsulano sequenze
ordinate di dati
 Hanno dimensione fissa, definita all’atto della creazione length 3

0
valori
0
int[] valori;//crea un riferimento null
valori = new int[3];//crea un array di 3 0

Quando viene creato l’array di 41


interi, le varie celle conterranno 0
int[] valori = new int[3];
Tipologie di array double[] elenco = new double[5];
 Esistono due gruppi di array
 tipi elementari: interi, reali, caratteri, booleani
 Quelli che modellano sequenze di oggetti
 Qualunque sia il gruppo di appartenenza, gli array sono sempre oggetti
complessi
 Essendo un oggetto, la costruzione avviene attraverso l’invocazione
del metodo new
 Si accede ad essi attraverso un riferimento in memoria
int[] valori;
valori = new int[3];//crea un array di 3

for (int i=0; i< [Link]; i++)


valori[i]= i*i;
Inizializzare un array
 Nel caso di array di tipi elementari, all’atto della creazione, a volte si
conosce a priori l’intero contenuto dell’array
 Java offre una sintassi semplificata per la sua inizializzazione

int[] valori ={4, 0, 7, 9};

43
Uso degli array
 Per accedere ad un singolo elemento, si utilizza la sintassi
 nome_array [ indice ]
 L’indice deve essere compreso tra 0 e il numero di elementi
presenti nell’array
 Un array può contenere anche tipi complessi (oggetti)
 In questo caso, nelle singole posizioni sono memorizzati i
riferimenti agli oggetti specifici
 All’atto della creazione del vettore, tutti i riferimenti contenuti
valgono null

String[] nomi= new String[10]; 44


Memoria
String[] nomi;
nomi = new String[3];
nomi[1]=“Mario”
length 3

null
null
null

nomi
“Mario”
45
Array a più dimensioni

 È anche possibile creare matrici


 int [ ] [ ] matrice= new int [3] [3];
 Si tratta di “array di array”
 Il primo indice si riferisce alla riga, il secondo alla colonna
 Non c’è limite al numero di dimensioni dell’array
 Se non la memoria disponibile…

int[][] matrice = new int [3] [3];

RIGA COLONNA 46
Array di oggetti
Java consente di avere array di oggetti:
Attenzione:
Creando l’array non si è creato automaticamente anche gli oggetti che
lo compongono!!
Bisogna farlo esplicitamente:
Pianta[] elencoP;
elencoP = new Pianta[4];
elencoP[0] = new Pianta(“Pino”,2);
elencoP[1] = new Pianta(“Abete”,);
elencoP[2] = new Pianta(“Melo”,4);
elencoP[3] = new Pianta(“Pesche”,10);

47
public class Orto {
 Classe Pianta String nome;
 Classe Orto che contiene un String citta;
array di oggetti di tipo public Orto(String nome, String citta) {
Pianta [Link] = citta;
[Link] = nome;
}
public static void main(String[] args) {
Orto orto = new Orto("Bell'Orto", "Caserta");
public class Pianta {
String nome;
private String nome;
int num;
private int quantita;
Pianta[] elenco = new Pianta[5];
public Pianta( String nome, int quantita ) { for (int i = 0; i < 5; i++) {
[Link] = nome; nome = "Pianta" + i;
[Link] = quantita; num = (int) ([Link]() * 20);
} elenco[i] = new Pianta(nome, num);
}
}
48

Potrebbero piacerti anche