




































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Le basi della programmazione orientata agli oggetti in Java, con un focus su come le classi raggruppano funzionalità e come i metodi realizzino il comportamento. Viene inoltre introdotto il concetto del metodo main e della sua importanza per l'esecuzione di un programma Java.
Tipologia: Slide
1 / 44
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





































Le istruzioni sono raggruppate per ottenere una medesima funzionalità (metodo). Le diverse funzionalità (metodi) relative a un oggetto sono raggruppate nella classe.
La classe assegna un nome comune a dati e metodi che essa riunisce. Tali dati e metodi sono detti membri della classe.
Ogni cosa scritta in Java dev’essere membro di qualche classe: non è possibile dichiarare “variabili globali”, “funzioni”, “procedure”.
campi: descrivono i dati disponibili
costruttori: permettono che ogni oggetto sia correttamente inizializzato quando è creato
metodi: realizzano il comportamento
class MyClass { //dichiarazioni dei campi //dichiarazioni dei costruttori //dichiarazioni dei metodi }
parola riservata
Invece i metodi, che sono gli stessi per tutti gli oggetti della stessa classe, sono però invocati su oggetti specifici (eccetto, come vedremo, i metodi statici). Utile per la portabilità, ma talvolta sconveniente.
Tuttavia, gli oggetti possono anche creare altri oggetti e sfruttarne i metodi.
Questo è proprio quanto viene fatto quando un programma viene eseguito. Si parte da un unico oggetto, il quale crea a seguire gli altri.
In Java non è possibile scrivere codice al di fuori di una classe.
Quando scriveremo il codice di un programma scriveremo classi.
La soluzione di un problema si ottiene facendo interagire oggetti costruiti come istanze di classi.
Serve però un punto di partenza. Da dove cominciano le interazioni?
System.out.println(“Hello”);
class PrimoProgrammino { public static void main(String[] args) { System.out.println(“Hello”); } }
Questo testo va salvato in una classe chiamata PrimoProgrammino.java
class PrimoProgrammino { / una classe di esempio banale per illustrare l’uso del main / // campi della classe // costruttori della classe // metodi della classe public static void main(String[] args) { System.out.println(“Hello”); } }
È bene scrivere commenti, ad esempio per spiegare cosa fa la classe o strutturare il codice
commenti
La compilazione genererà nella medesima directory il file PrimoProgrammino.class che contiene il bytecode.
Questo può essere eseguito dalla JVM
java PrimoProgrammino (stavolta si omette .class)
Riassumendo:
editing di PrimoProgrammino.java javac PrimoProgrammino.java java PrimoProgrammino
(o si fa insieme con un IDE)
Il metodo main deve essere public e static e avere come tipo di ritorno void.
Significato più generale che per il solo main:
public significa che è accedibile da tutti. È l’opposto di private , che significa che vi può accedere solo quella classe.
static significa che è un metodo che non viene usato per un oggetto, ma per una classe (quindi è più generale)
È necessario che i metodi della classe Math
siano statici perchè devono poter operare su numeri, ad es.: radiceDue = Math.sqrt(2);
In Java, i numeri non sono oggetti.
Tipi di dato numerico: int (intero) double (virgola mobile doppia precisione) poi float, long, short, byte, char, boolean
Sono tutti (e soli) tipi di dato primitivo
Java prevede due casi di tipi, nettamente distinti tra loro: Tipi primitivi (predefiniti dal linguaggio) Tipi riferimento sono: classi , interfacce, array sono virtualmente infiniti, definiti dal programmatore
L’esistenza del tipo riferimento/classe rende possibile ad esempio avere un valore di ritorno di un metodo che è un oggetto.
Un’espressione non è un’unità di calcolo completa, in quanto non ha effetto (non produce cambiamenti di valori in variabili).
Un’istruzione è invece un’unità eseguibile completa, terminata dal carattere “;” può essere un assegnamento, una valutazione, una chiamata ad oggetto, o combinazioni di essi
Il concetto di variabile è un’astrazione del concetto di locazione di memoria.
In realtà tutte le variabili sono sequenze di bit della memoria. Tuttavia, in base ai tipi, possono essere interpretate in modo diverso.
La nozione di tipo consente di astrarre rispetto all’effettiva memorizzazione dei dati. Ovvero: in realtà ci sono solo i dati, ma l’interfaccia col programma avviene con i tipi.
Nota: mentre il tipo di un’espressione è determinabile dal compilatore, il suo valore viene calcolato solo durante l’esecuzione del programma.
Semantica statica (i tipi) vs. dinamica (i valori, perché sono noti solo durante l’esecuzione).
Il controllo di correttezza semantica dei tipi è importante, ma non esaustivo.
Differenza principale:
Una variabile di tipo primitivo è già pronta a contenere un valore. Una di tipo riferimento contiene invece solo il riferimento all’oggetto.
int xy;
MyClass ab;
non mette in memoria un oggetto di tipo MyClass ma una variabile di 4 byte per referenziarlo
mette in memoria un intero (4 byte) (^34 9 )
xy
ab
MyClass