Una classe è una ricetta che descrive come sono fatti i suoi oggetti.

Definisce:

La classe deve essere progettata in modo indipendente dalle applicazioni che la utilizzeranno

Esempio:

public class Frazione implements Comparable<Frazione>{
	//CAMPI
	private int num; //il numeratore
	private int den; //il denominatore

	//COSTRUTTORI
	public Frazione(int x, int y){
		if(y == 0)
			throw new ArithmeticException("Frazione non valida: denominatore 0")
		else{
			num = x;
			den = y;
		}
	}

	public Frazione(int x){
		this(x, 1); //richiamiamo l'altro costruttore
	}

	//METODI
	public Frazione per(Frazione f){
		int n = this.num * f.num;
		int d = this.den * f.den;
		Frazione g = new Frazione(n, d);
		return g;
	}

	public int compareTo(Frazione altra){
		//....
	}
}

Le variabili locali sono le variabili definite nel corpo di un metodo o di un costruttore. Quando l'esecuzione del metodo termina vengono distrutte

I parametri formali sono le variabili dichiarate nell'intestazione di un metodo o di un costruttore. Vengono inizializzati al momento dell'invocazione con il valore degli argomenti (parametri attuali). Quando l'esecuzione del metodo termina vengono distrutti

I parametri attuali sono le espressioni specificato all'atto dell'invocazione del metodo o del costruttore


Package

I package permettono di raggruppare in unità logiche classi e interfacce correlate tra loro

Unità di compilazione: i file che contengono codice sorgente Java. Può contenere diverse classi e interfacce. Ogni unità può contenere al più una classe o un'interfaccia dichiarata public. Se una classe o interfaccia è dichiarata public essa determina il nome del file

Un'unità di compilazione è aggiunta ad un package mediante l'istruzione