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