Struttura di una classe.


Java Sun

Earthweb
(ex Gamelan)

Jars

Java Boutique

Java Center

PIP






 JSem: 2.1

   Una classe viene dichiarata tramite la parola chiave class ed è costituita da dati (variabili) e codice (metodi) che agisce su tali dati.
I metodi sono delle subroutine o, ancora, delle funzioni che operano sui dati.
Le variabili di istanza e i metodi sono i membri della classe. Quest'ultima definizione potrebbe generare un pò di confusione (specie per chi ha studiato un pò di matematica!) perchè uno si aspetterebbe che i membri di una classe fossero gli oggetti di tale classe, ricordiamoci invece che gli oggetti sono delle istanze della classe (se non vi è chiaro cosa sia un'istanza, fate come me, andate a guardare in un vocabolario).
La struttura generale di una classe è del tipo:

class NomeClasse{
variabile di istanza 1;
.......................
variabile di istanza N;

  Metodo1(parametri per Metodo1){
//definizione del metodo
 }//fine Metodo1
.....................
  MetodoT(parametri per MetodoT){
//definizione del metodo
 }//fine MetodoT
}//fine della classe

Alcuni metodi possono anche essere costruttori (i costruttori sono metodi di un tipo particolare). Le classi più semplici possono contenere solo dati o solo metodi.
Questa è la struttura di base, ma la dichiarazione di una classe può essere più complicata. Per esempio una classe può estendere un'altra (ma una sola) classe, implementare un numero qualsiasi di interfacce e avere un specificatore d'accesso (per esempio essere dichiarata public).


   Iniziamo con un esempio semplice:

class Rettangolo{

	int latoa;
	int latob;
	}

Questo codice crea la classe Rettangolo che è solo un modello; nessun oggetto viene creato da questo codice, anzi questo codice non è eseguibile (non produce niente).
La classe Rettangolo contiene solo dati.
Per creare un oggetto Rettangolo bisogna usare l'operatore new e per accedere alle sue variabili di istanza, bisogna usare l'operatore punto:

   Rettangolo r = new Rettangolo();
   r.latoa = 10;
   r.latob = 20;

Vediamo questa classe all'opera. Copiare il file seguente e salvarlo come RettDemo.java, poi compilarlo e, finalmente, inserire il file RettDemo.class in una pagina html.

import java.applet.*;
import java.awt.*;

public class RettDemo extends Applet{

Rettangolo r = new Rettangolo();
int area;

public void init(){

r.latoa = 10;
r.latob = 20;
area = r.latoa*r.latob;
}

public void paint(Graphics g){
g.drawString("L'area è: " + area, 5, 25);
	}
}


class Rettangolo{

	int latoa;
	int latob;
	}

L'outpout dovrebbe essere "L'area è: 200".

Osservazioni: - Abbiamo messo le definizioni delle classi RettDemo e Rettangolo in uno stesso file .java, che abbiamo chiamato RettDemo.java (perchè questa è la classe che verrà eseguita); però se andate a vedere nella vostra cartella di lavoro troverete due files .class (RettDemo.class e Rettangolo.class). Avremmo potuto fare diversamente, cioè due files .java con relativi files .class; il risultato sarebbe stato equivalente. L'essenziale è che i due files .class si trovino nella stessa cartella (directory). In generale, quando si usano un gran numero di classi, è meglio addottare la seconda opzione.

- Provate a compilare RettDemo.java mettendo r.latoa = 10; r.latob = 20;fuori dal blocco init(), cioé:

import java.applet.*;
import java.awt.*;

public class RettDemo extends Applet{

Rettangolo r = new Rettangolo();
int area;
r.latoa = 10;
r.latob = 20;

public void init(){
area = r.latoa*r.latob;
}

public void paint(Graphics g){
g.drawString("L'area è: " + area, 5, 25);
	}
}


class Rettangolo{

	int latoa;
	int latob;
	}

- Finalmente provate a fare girare una versione "applicazione" di questa applet:

 class RettDemoApp {

public static void main(Strings args[]){
Rettangolo r = new Rettangolo();
int area;
r.latoa = 10;
r.latob = 20;

area = r.latoa*r.latob;

System.out.println("L'area è: " + area);
	}
}


Salvare questo file come RettDemoApp.java, compilarlo per ottenere il file RettDemoApp.class (che deve stare nella stessa cartella del file Rettangolo.class) ed eseguirlo (con l'istruzione java RettDemoApp sulla riga dei comandi). Il blocco principale (eseguibile) di un'applicazione è il blocco main, mentre System.out.println permette di stampare sullo schermo. Come già detto le applet e le applicazioni hanno strutture diverse.




 next		content		previous