/** classe Cercle
    *  (exemple complet)
    */
   public class Cercle
   {
     // Attributs :
     private int aRayon;
     private boolean aPlein;
     private String aNom;

     /** constructeur naturel */
     public Cercle( final int pRayon, final boolean pPlein, final String pNom )
     {
       this.aRayon = pRayon; // acces a un attribut + affectation
       this.aPlein = pPlein;
       this.aNom   = pNom;
     } // Cercle(...)

     /** constructeur sans parametre */
     public Cercle()
     {
       this.aRayon = 10;
       this.aPlein = false;
       this.aNom   = "anonyme";
       // ces 3 lignes n'en feront plus qu'une lorsqu'on saura appeler l'autre constructeur
     } // Cercle()

     // Accesseurs
     public int getRayon() { return this.aRayon; }
     public String getNom() { return this.aNom; }

     // Fonction d'etat
     public boolean estPlein() { return this.aPlein; }

     // Modificateurs
     public void setRayon( final int     pRayon ) { this.aRayon = pRayon; }
     public void setPlein( final boolean pPlein ) { this.aPlein = pPlein; }
     public void setNom(   final String  pNom   ) { this.aNom   = pNom;   }

     /** fonction qui calcule et retourne le diametre */
     public int getDiametre()
     {
       return 2 * this.getRayon();
     } // getDiametre()

     /** procedure d'affichage */
     public void affiche()
     {
       String vChaine = "cercle " + this.getNom() + " : " + this.getDiametre();
       System.out.print( vChaine ); // affichage
     } // affiche()
   } // Cercle

   /** classe de test de la classe Cercle */
   public class Essai
   {
     // pas d'attributs

     /** procedure de test */
     public void lance()
     {
       Cercle vC1 = new Cercle( 20, true, "cercle1" ); // creation nouveau cercle
       Cercle vC2 = new Cercle(); // creation nouveau cercle avec valeurs par defaut
       int vD1 = vC1.getRayon() * 2; // OK
       vC2.setRayon( 30 );
       vC2.setNom( "cercle2" );
       vC2.affiche();
     } // lance()
   } // Essai