Sei sulla pagina 1di 4

Programmazione ad oggetti: Java

Java: linguaggio di programmazione multipiattaforma costituito da più classi cooperanti

Lezione 1

Linguaggio multipiattaforma: i programmi realizzati con Java sono multipiattaforma,


perché vengano eseguiti su sistemi operativi differenti non serve che siano ricompilati o
riscritti.
Porting: operazione di conversione di un programma in codice nativo da una piattaforma
ad un’altra, avviene in due fasi: adattamento e ricompilazione. I PROGRAMMI JAVA NON
HANNO BISOGNO DEL PORTING.
Bytecode: è ciò che si ottiene una volta compilato un programma Java, è codifica
intermedia e non è indipendente
Java Virtual Machine: apposito ambiente che esegue il bytecode di runtime. Se JVM non è
presente nel sistema operativo, il bytecode non può essere eseguito. Offre, inoltre, tutti i
programmi di cui il programma può aver bisogno
 I programmi in codice nativo si possono rapportare esclusivamente
con il sistema operativo per il quale sono stati concepiti, al
contrario i programmi in bytecode utilizzano come ponte la JVM,
quindi possono essere eseguiti su ogni tipo di sistema operativo
che possegga una JVM adatta.

Due tipi di linguaggio:


 Compilato: grazie ad un compilatore viene tramutato in codice nativo,
immediatamente eseguibile sulla macchina per il quale è stato creato
 Interpretato: grazie all’interprete il sorgente viene eseguito, istruzione dopo
istruzione e possono essere trasferiti da una macchina all’altra.
Vantaggi:
 Write once, run everywhere: multipiattaforma
 Completamente orientato agli oggetti: riutilizzare il codice e gestire facilmente i
progetti di vaste dimensioni
 Sicuro: la JVM controlla tutte le operazioni effettuate
 Robusto: stabile e affidabile
 Pensato per la rete: connubio forte tra Web e Java
 Dinamico: il bytecode è suddiviso in tante parti dinamiche (possono essere
trasferite, scambiate e recuperate con semplicità), le installazioni sono semplici e
veloci
 Multithreaded: supporta la programmazione concorrente (può fare più cose
contemporaneamente)
 Concepito dai programmatori per i programmatori
 Strumenti per lo sviluppo gratuiti e adoperabili senza limitazioni tecniche o legali.
Svantaggi:
 Non è adatto a scrivere componenti che debbano interfacciarsi troppo direttamente
con il sistema operativo o con l’hardware
 La JVM, interpretando e amministrando il bytecode, si frappone tra sistema
operativo e software. Questo porta al calo delle prestazioni.
 La JVM deve essere presente nel sistema.
Differenza tra Java e JavaScript:
 Java: linguaggio di programmazione
 JavaScript: linguaggio di scripting

Lezione 8

Classe: costrutto sintattico indispensabile, è un modello per una categoria di oggetti e


fornisce la riusabilità del codice. Per dichiararlo si usa “class” e un nome in minuscolo,
esclusa l’iniziale. Per istanziare la classe chitarra (new serve per generare una nuova
istanza di classe):
Chitarra primaChitarra = new Chitarra ();

Oggetto: istanza della sua classe di appartenenza.


La memoria è suddivisa in due:
 Stack: contiene i valori di tipo predefinito, quando l’esecuzione del blocco che la contiene è
ultimato, il riferimento va perduto e la memoria ripulita.
 Heap, contiene gli oggetti, le variabili muoiono appena uscite dall’ambito di visibilità ma i
dati continuano ad esistere in memoria
Garbage collection (pulizia della memoria): processo di rimozione dallo heap degli oggetti
non più utilizzabili (scorre lo heap ricercando ed eliminando gli oggetti definitivamente
inservibili) può essere svolto in maniera automatica o manuale:
manuale -> system.gc();
Le variabili:

 Oggetto: gestite per riferimento, contengono riferimenti sugli oggetti che rappresentano,
copiando una variabile di questo tipo si ottiene la copia del riferimento ma non
dell’oggetto.
 Di tipo predefinito: vengono restituiti per valore. Quando viene creata va inizializzato il suo
valore, nel momento in cui viene distrutta, viene cancellata dalla memoria.
Proprietà: variabili proprie di un oggetto
Metodi: azioni, blocchi di codice eseguibili dall’oggetto. Restituiscono sempre un tipo che
specifica il gruppo di appartenenza del valore elaborato dal metodo, se è di tipo void non
restituisce nulla.
Return: interrompe l’esecuzione del metodo e restituisce un valore compatibile con il tipo
dichiarato nella firma del metodo. Se il valore restituito dal metodo è di tipo void e nel
corpo del metodo si trova return, la parola return assume azione di istruzione di salto.
Costruttori: speciali metodi che inizializzano oggetti. Non devono restituire alcun tipo di
valore e assumono il nome della classe a cui appartengono
This: serve per riferirsi ad un determinato elemento all’interno della classe
Null: assenza di riferimento, non si riferisce a nessun oggetto realmente esistente. Prima
dichiari la variabile di tipo null, poi inizializzi la variabile con un oggetto valido esistente, poi
la utilizzi.

Lezione 9

Inizializzazione in linea: inizializzazione delle proprietà nella linea di dichiarazione, possono


essere modificati all’interno del programma (sovrascritti)
Final: inizializzazione delle proprietà di una classe in linea o all’interno dei costruttori della
classe, non potranno essere modificate all’interno del programma
Sovraccarico dei metodi: OVERLOADING. Avviene quando esistono più metodi con lo steso
nome e stesso tipo, ma firma diversa (numero e tipo di parametri assunti diversi)
Sovraccarico dei costruttori: presenza di vari costruttori con lo stesso nome ma lista di
parametri differenti
Controllo dell’accesso:La classe fornisce automaticamente una serie di oggetti
programmabili, esistono però diversi tipi di accesso ai membri della classe:
 Public: è parte dell’interfaccia pubblica della classe, chiunque e da dovunque può
accedere al membro così etichettato
 Private, fanno parte del cuore funzionante della classe e nessuno ci può accedere
possono essere utilizzati solo all’interno di quella classe

Lezione 10
Ereditarietà: fa sì che sia possibile raggruppare classi e oggetti secondo un’organizzazione
di tipo gerarchico, facilitando la stesura delle applicazioni
Extends: allaccia rapporti di ereditarietà tra due classi
Una classe può avere un solo genitore, l’ereditarietà multipla non è ammessa e deve
essere strettamente gerarchica.
Esempio studente extends persona
Studente è sottoclasse di persona, persona è superclasse di studente
Object: è definita nella libreria base della piattaforma, contiene le azioni di sistema per
utilizzare le funzioni di base.
Final: classe che non può avere sottoclassi, impedisce la ridefinizione di metodi e
l’ereditarietà
Super: preleva dalla sottoclasse un qualcosa. Nei costruttori:
 Deve esser sempre la prima azione presente in esso
 Se la superclasse è composta da più costruttori, può essere usata anche per stabilire
a quale appellarsi
Ridefinizione dei metodi: OVERRIDING. Se due metodi, uno contenuto nella superclasse e
uno nella sottoclasse, hanno la stessa firma, il metodo della sottoclasse ridefinisce l’altro.
Di conseguenza ogni chiamata al metodo farà riferimento a quello della sottoclasse, quindi
a quello ridefinito.

Potrebbero piacerti anche