Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Java e programmazione ad oggetti., Slide di Informatica

Java: elementi base del linguaggio. Paradigma OOP e suoi principi. Riferimenti e contenuti di un oggetto.

Tipologia: Slide

2022/2023
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 15/10/2022

cborgogno
cborgogno 🇮🇹

4

(2)

4 documenti

1 / 44

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Variabili riferimento
Una variabile riferimento è una variabile il cui
tipo è un tipo riferimento.
Tipico esempio: oggetto appartenente a una classe
Una variabile riferimento non contiene memoria
dell‟oggetto ma solo del riferimento ad esso.
In pratica, viene allocata un‟area di memoria
per l‟oggetto e la variabile contiene l‟indirizzo di
questa area di memoria.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
Discount

In offerta

Anteprima parziale del testo

Scarica Java e programmazione ad oggetti. e più Slide in PDF di Informatica solo su Docsity!

Variabili riferimento

 Una variabile riferimento è una variabile il cui tipo è un tipo riferimento.  Tipico esempio: oggetto appartenente a una classe

 Una variabile riferimento non contiene memoria dell‟oggetto ma solo del riferimento ad esso.

 In pratica, viene allocata un‟area di memoria per l‟oggetto e la variabile contiene l‟indirizzo di questa area di memoria.

Variabili riferimento

 Una variabile riferimento si usa in tre contesti:

 Memorizzare il riferimento di un nuovo oggetto String s1 = “Hello!”;  Indicare l‟oggetto destinatario di un messaggio int n1 = s1.length();  Come argomento di un metodo o costruttore System.out.println(s1);

 Si veda ad esempio: String s1 = “Valore = ” + s2.compareTo(s3);

Assegnamento tipo riferimento

tipo int

“Hello!”

1 7 2 5

x

3 4 9 0

y

3 4 9 0

x

3 4 9 0

x = y y

tipo String

x

y x = y

x

y

“Hello!”

Assegnamento tipo riferimento

int x = 5; x = 18;

String s = “Hello!”; s = “Ciao!!”;

“Hello!” s “Hello!”

s

“Ciao!!”

il valore originario di x (cioè 5) viene sovrascritto dal nuovo valore, 18 viene creato un nuovo oggetto String ; non viene sovrascritto il valore, ma solo il riferimento

l‟oggetto stringa non più referenziato sarà deallocato dal garbage collector

Assegnamento tipo riferimento

String s1 = “Hello!”; String s2 = s1; s2 = “Ciao!”;

“Hello!”

s

s

“Ciao!”

il riferimento di s1 resta all‟oggetto String “Hello!” (ancora valido, perché referenziato)

Copiare oggetti

 Per creare una copia di un oggetto, un assegnamento non è un buon metodo (copia semplicemente il riferimento).

 Per creare davvero una copia si usa tipicamente il metodo clone , implementato in molte classi di libreria. MyClass objOne = ...; MyClass objTwo = (MyClass) objOne.clone();

Riferimento null

 Se una variabile riferimento è pari a null, l‟oggetto referenziato non esiste: non è possibile invocarne un metodo.  Se si chiama un oggetto il cui riferimento è pari a null , il compilatore ritorna un errore ( NullPointerException ).  Differenza tra oggetto vuoto e oggetto nullo! Il primo è un oggetto effettivamente esistente (ma vuoto), il secondo non esiste per nulla.

Riferimento null

 Esempio illuminante: stringa vuota vs. nulla.

String s1, s2; int x; s1 = “”; // s1 è la stringa vuota s2 = null; // s2 è null (lo era già prima) x = s1.length(); // OK.. ritorna 0 x = s2.length(); // NO.. NullPointerException

Altre informazioni sui tipi

 Il tipo char rappresenta caratteri.

 Viene usato lo standard UNICODE, uno schema di codifica uniforme multi-lingua per un set di caratteri molto più esteso dell‟ASCII.

 I valori si scrivono tra apici: „ ‟

 Caratteri arbitrari possono essere indicati dalla sequenza \u seguita da 4 cifre esadecimali, tutto tra apici. Ad esempio: „\u2122‟ = ™

Enunciati condizionali, cicli

 Java implementa tutte le modalità del C per le istruzioni condizionali e i cicli.

 Costrutti if [ else ], switch ,? : sono identici

 ricordare che else chiude sempre l‟ if subito precedente;

 Cicli for , while , do..while : identici

 anche nella possibilità di inserire effetti collaterali  dai cicli si può anche uscire con break e continue ; Java inoltre può usare break con etichetta (sconsigliati)

Operatori per booleani

 Però Java possiede anche operatori & e | che, a differenza del C, sono analoghi a && e ||, solo che forzano l‟evoluzione completa dell‟espressione (no lazy evaluation).

Progetto di classi

 Che cosa deve rappresentare un oggetto della classe? Quali operazioni deve essere in grado di eseguire?

 La classe deve essere progettata, per quanto possibile, in modo indipendente dalle applicazioni che la utilizzeranno, al fine di garantirne la portabilità.

Progetto di classi

 Progettare una classe significa definire:

cosa : aspetti e semantiche pubblici della classe  come : implementazione dei metodi supportati

 La parte che deve essere resa nota è solo il “cosa”: definizione di ciò che il progettista assicura che la classe fa.

 Questo rappresenta il contratto della classe tra il progettista e l‟utilizzatore.

Progetto di classi

Coerenza : una classe dovrebbe riguardare una singola entità fisica e operazioni simili

Separazione dei compiti : una singola entità può essere, se opportuno, divisa in più classi tra loro correlate, invece di una classe sola

Information hiding : i dati della classe non dovrebbero essere accessibili direttamente, ma solo tramite metodi (primato dei metodi sui dati, interazione tramite metodi)