Facendo un salto come complessità passiamo alla programmazione a oggetti. Un programma invece di essere dei dati e delle routines e' un insieme di oggetti che comunicano mandadosi messaggi. L'idea di base e' che un oggetto descrive un "oggetto di tutti i giorni" con una serie di dati e una serie di routines che trattano questi dati. Nel gergo un oggetto e' definito da una classe con proprieta' e metodi. Le proprieta' non sono altro che delle variabili che descrivono l'oggetto mentre potete pensare ai metodi come azioni che l'oggetto puo' fare o meglio comandi che gli potete inviare. (In effetti la differenza tra metodo e routine e' che un metodo e' una routine collegata a un singolo oggetto).Ora passiamo all'equivalente del programma CiaoATutti della programmazione a oggetti:un programma che non fa niente se non descrivere qualche oggetto della vita di tutti i giorni,in questo caso la moto.
/*classe Moto*/
class Moto{
String marca;
String colore;
boolean motoreacceso;
/*il costruttore*/
Moto(String m, String c){
marca = m;
colore = c;
motoreacceso = false;
}
/*metodi*/
void mostraTipo(){
System.out.println("La marca di questa moto e' "+marca+" e il suo colore e' "+colore);
if(motoreacceso == true)
System.out.println(".Essa ha il motore acceso.");
else
System.out.println(".Essa ha il motore spento.");
}
void accendiMotore(){
if (motoreacceso == true)
System.out.println("Il motore e' gia' acceso");
else {
motoreacceso = true;
System.out.println("Ora il motore e' acceso");
}
}
/*main*/
public static void main(String args[]){
Moto a = new Moto("Ducati","rossa");
Moto b = new Moto("Piaggio","blu");
a.mostraTipo();
a.accendiMotore();
a.mostraTipo();
b.accendiMotore();
b.mostraTipo();
}
}
In questo caso le proprieta' sono marca, colore e motoreacceso
mentre i metodi sono mostraTipo e accendiMotore. Moto a = new Moto("Ducati","rossa");
Nota i messaggi all'oggetto creati con la notazione
nome_dell_oggetto.nome_del_metodo() ad es. a.accendiMotore().
public class SerieNumeri{
private int serie[];
private int n;
/*costruttore*/
public SerieNumeri(String s[]){
n = s.length;
serie = new int[n];
for (int i=0 ;i < n; i++){
serie[i] = Integer.parseInt(s[i]);
}
}
/*media*/
public double media(){
int totale = 0;
for(int i=0; i < n; i++){
totale += serie[i];
}
return((float)totale/n);
}
}
public class Media2{
static SerieNumeri a;
public static void main(String args[]){
a = new SerieNumeri(args);
System.out.println("La media e' "+a.media());
}
}
Le due classi vanno scritte su due diversi files SerieNumeri.java e Media2.java.
Per compilare ed eseguire usa i comandi:
javac SerieNumeri.java Media2.java java Media2 2 4 8 5 63