Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Cerchio <-- Cilindro

Precedente
SUPERIORE
Successiva

La classe Cerchio

public class Cerchio
{
   protected double raggio;

   public Cerchio(double r)      { raggio=r;                     }
   public double diametro()      { return 2*raggio;              }
   public double circonferenza() { return 2*Math.PI*raggio;      }
   public double area()          { return Math.PI*raggio*raggio; }

}//Cerchio

La classe Cilindro estende la classe Cerchio

public class Cilindro extends Cerchio
{
   private double altezza;

   public Cilindro(double r, double h)
   {
      super(r);
      altezza=h;
   }
   public double area()
   {
      return 2*super.area()+
             circonferenza()*altezza;
   }
   public double volume()
   {
      return super.area()*altezza;
   }

}//Cilindro

La classe di test

public class Test_C_C
{
   public static void main(String[] args)
   {
      Cerchio  ce=new Cerchio(4.0);
      Cilindro ci=new Cilindro(4.0, 10.0);

      System.out.println("Cerchio  -> Area = " + ce.area()          + "\n" +
                         "            Circ = " + ce.circonferenza() + "\n" +
                         "Cilindro -> Area = " + ci.area()          + "\n" +
                         "            Circ = " + ci.circonferenza() + "\n" +
                         "            Volu = " + ci.volume()               );
   }//main

}//Test_C_C

Osserva che

  1. super()                     // costruttore della superclasse
  2. super.area()                // metodo della superclasse
  3. ci.circonferenza()          //   "
  4. ce=ci;                      // è legale, (ce instanceof Cilindro) --> true
    ce.area()                   // area() di Cilindro
  5. ci=ce;                      // non compilato
  6. ci=(Cilindro)ce;            // compilato... ma: ClassCastException
  7.       ...
          opera(ce);            // il parametro è un Cerchio
          ce=ci;
          opera(ce);            // il parametro è un Cilindro!
    
       }//main
    
       static void opera(Cerchio obj)
       {
          System.out.println("Area = " + obj.area()          + "\n" +
                             "Circ = " + obj.circonferenza()        );
    
          if(obj instanceof Cilindro)
          {
             Cilindro c=(Cilindro)obj;
             System.out.println("Volu = " + c.volume());
          }
       }
    
    }//Test_C_C
    
    // il metodo opera indifferentemente con cerchi e cilindri...

Cerchio <-- Cilindro - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva