Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Ricapitolazione Java
Editing
Scrivere il programma in un linguaggio sintatticamente corretto.
Codice Eseguibile
- I programmi vengono compilati → punto Java e file compilato.
- Bytecode: che poi viene eseguito.
- Java è un linguaggio portabile perché il bytecode consente di girare su diverse macchine grazie alla JVM, senza dover bisogno di essere ricompilato.
- Java è portabile ma perde in efficienza, ovvero i programmi sono più lenti.
API
= librerie di Java
Tipi primitivi: boolean, byte, short, ...
Dichiarazione di Variabile
int x = 4;int y;
- Devo dire il tipo di variabile e la visibilità.
- Quando il compilatore legge int x = 4, prima legge int x, va in memoria e alloca una posizione di memoria che deve contenere un int x, poi (quando la trova) verifica se esiste in memoria e scrive 4.
Visibilità della Variabile
Dal punto in cui la scrivo e in tutti i sottoblocchi successivi, posso usarla => è visibile.
La Stringa
Non è un tipo primitivo ma è un oggetto
String s = "ciao";
- Il compilatore vede il tipo String va in memoria e crea un puntatore ad una posizione di memoria (non crea una posizione di memoria); solo dopo aver scritto = segue il puntatore e crea la memoria e scrive "ciao".
String S = new String("ciao");
Fra una nuova memoria S, un nuovo puntatore e un copia del precedente:
Se scrivo S1 = S;
Qualche gli array abbiamo un puntatore che punta alla memoria che crea quando poi scrivo new int [ ]
- Differenza tra i puntatori e oggetti:
- Nel LHS una dichiarazione
- Oggetti visualizzati dai puntatori
- Tipi primitivi direttamente in memoria
Se per esempio scrivo System.out.println(a), stampa puntatore, ma se scrivo System.out.println(s), stampa stringa perché Java possiede il metodo toString() che si repercute nella libreria.
Per la lunghezza di una stringa s, s.length();
Se la applichi alla stringa vuota ha "" . length() = 0
Operazione concat concatenare due stringhe
String s1: concatena la stringa s1 a l'altra e memorizza tutto in s
Si operatore substring ha inizio e fine.
Se S. SubString (a, c)
equivale f, e forma
S = "abcdefghi"
Se il primo numero (a) indicata dove si inizia, il secondo numero (c) indica dove si deve esclusa
Metodo:
è una parola da evitare, indipendente dal programma, √ perché ci serve se non lo sottometiamo
"Main" è l'unico metodo in quale si esegue
I programmi devono avere la compatibilità per essere eseguiti altrimenti saranno inutili.
Firma = intestazione
public static int somma (int, int)
Proprietà formali:
Nome di metodi: Alias, non esistono fisicamente, quindi quando lo riscontriamo in memoria, non possiamo operare mai dato che sono locazione di memoria.
Esempio:
- public static int somma (int a, int y)
- Variabili = metodo chiamato
- Locali appena variabile chiamata
public static void main (String args [ ] )
a = 3; b = 5;
System.out.println (somma(a,b));
Parametri attuali:
All'esterno del metodo, sono le variabili locali non esistono di condivisione delle variabili, e delle variabili sono più visibili
I parametri attivi all'interno del stack
Implementazione
- Allocazione di memoria: in una variabile viene memorizzato un valore letto o costante. In una variabile di tipo oggetto, viene memorizzato un identificativo.
Incapsulamento
Dobbiamo pensare a un oggetto come un contenitore in cui sono messi dati sensibili e metodi che agiscono su di essi; le classi possono usare i metodi ma non alterare direttamente lo stato.
Information Hiding
Il mascheramento dell’implementazione è effettuato rendendo privati gli oggetti sensibili.
- Automezzo
- Attributo -> privato
- Metodo -> privato
- Autista
- Attributo -> pubblico
- Metodo -> pubblico
Interfaccia
- Permette di vedere i metodi pubblici e tutto ciò che l’oggetto mette a disposizione
- Permette di nascondere ciò che è privato
- L’accesso con un’altra classe può avvenire solo con elementi pubblici, mentre quelli privati devono essere modificati con appositi metodi.
Schimano
- Marca: Kymco
- Modello: Agility 125
- Proprietario: Giovanni
Se Schimano
- modificare una velocità tramite il metodo accelerazione
- richiamare il metodo accelerazione con l’attributo visibile
con Punto p = new Punto();
creazione di new e costruzione
il costruttore vuoto in memoria un oggetto di tipo punto
- x
- 1
- C5
- C4
- x1
- x
- x1
- x
- x1
(x1
3
5
C5
- 3
- x1
- x1
- x1
- x1
- x1
- 4
- 4
- C4
COSTRUTTORI
- COSTRUTTORE VUOTO: public ()
- COSTRUTTORE DI COPIA: public (tipo c)
Si applica a x1 e l'elemento della classe separa
Questso costruttore crea un oggetto che è la copia esatta dell'oggetto
Nella stessa classe ci può essere solo un costruttore vuoto!
- Nome
- public Punto (Punto c)
- x = c.x;
- y = c.y;
- Nel main
- Punto P = new Punto();
- in vocazion esperto il costruttore vuoto
- p1
- x1 = x;
- x
- Nel main:
- Punto p2 = new Punto(p1);
- System.out.println (p1.toString());
- System.out.println (p2.toString());
- System.out.println (p3.toString());
(con Punto p2 = new Punto(p1); = CONDIVISIONE DI MEMORIA
(sempre fatti condivisi) => P, scomponi!
costruttore per parametri:
- public Punto (int x, int y) {
- public (doubleargomento
- x = px;
- y = py;
- Sostituisce tutto punto p3: new Punto(4,5);
- Nel main
- Punto p3 = new Punto(4,5);
OVERLOADING
- metodi con lo stesso nome
- i metodi devono essere distinguibili
- i metodi sono diversi se
- hanno numero di parametri ≠
- avere numeri uguali ➔
- per i tipi dei parametri? NO!!!
- 0, 1, 4, 2
COMPOSIZIONE TRA CLASSI
class Quadrato {
la composizione tra le classi letto
Punto q;
SUPER il richiamo di ...
- Si utilizza con i metodi che hanno lo stesso nome ...
- Se nella classe derivata ...
OVERRIDING si riscrive un metodo con stessa firma ...
- Se il metodo nella classe ...
OVERLOADING si riscrivono i metodi ...
- Si utilizza ...
REGOLA ... modulo ...
- DEFAULT: con il metodo ...
OBJECT ...
CONTROLLO STATICO DEI TIPI
- ...
Con l’ereditarietà ...
- ...
REGOLA: UPCASTING
Un esempio ...
- Base b = ...
Il tipo statico ...
- Non posso scrivere ...