Clases abstractas
Las clases abstractas ( se los indica con el modificador abstract), permiten definir un esqueleto o estructura genérica, donde se nombran tipos de funciones . La clases abstracta actúa como una clase padre en la cual no se hace una definición precisa de las funciones , sino mas bien la descripcion de carcateristicas que seran comunes a una familia de clases hijas.
Interfaces
Las interfaces son parecidas a las clases abstractas, porque se nombran funciones genericas que son implementadas en las clases hijas
Una clase no puede implementar funciones de dos clases abstractas disitntas, no puede decender de dos clases diferentes. Pero si puede implementar las funciones de interfaces distintas
Clases hijas
Las implementacion de las funciones especificas, constructores particulares, y tipos argumentos admitidos se hacen en las clases hijas. Cada clase hija indica su descendencia de la clase abstracta mediante el modificador extends y queda obligada a realizar una definición propia de las clases abstractas de la cual desciende
Un constructor define que tipo de componentes se requieren para representar determinada función, pues en general existe mas de un camino para representar la funcion de acuerdo al uso que quiera darse. Por ejemplo un rectángulo puede definirse por sus cuatro vértices, o por dos de ellos.
Un método define que variables se admiten como argumento, define sentencias que procesan las variables, y puede definir o no algún tipo de retorno. En nuestro caso el perimetro del rectangulo es un metodo, que procesa los vertices bajo una formula y luego hace un retorno (return) del resultado
Veamos con un ejemplo.
Por ejemplo, creemos una familia de funciones que seran las figuras geométricas. La clase abstracta sera Geometrias Planas, que contiene dos fuciones genericas que carcaterizan a las Geometrías Planas que son su área y perímetro, las que quedan sin definir aun
La clase abstracta padre: Geometrías Planas
public abstract class GeometriasPlanas {
public abstract double perimetro();
public abstract double area();
}
// Linea1,2,3 public: Es un modificador de acceso e indica que el elemento es accesible //desde cualquier clase
// Linea 1,2,3 abstract:Esto indica que la Geometrias Planas clase soportara herencia, //tendra clases hijas
// Linea 3 y 4 double: Indica que las funciones genéricas perimetro y area admite un //numero flotante
// Linea 3 public abastract double: Indica que el metodo sera accesible desde cualquier //clase en el //paquete (public), que no sera definido aqui sino en clases hijas (abstract), //y que admitira un numero flotante con comas (double)
Las clases hijas: Rectangulo y Circulo
public class Rectangulo extends GeometriasPlanas {
protected double x1,y1,x2,y2;
public Rectangulo(double Cx1, double Cy1, double Cx2, double Cy2){
x1=Cx1;
y1=Cy1;
x2=Cx2;
y2=Cy2;
}
public Rectangulo(){this (0.0,0.0,1.0,1.0);}
public double perimetro(){
return 2.0*((x2-x1)+(y2-y1));
}
public double area(){
return (x2-x1)*(y2-y1);
}
}
//Linea 1: La clase Rectángulo desciende de GeometriasPlanas, lo cula se indica con //extends
//Linea 2: El modificador protected indica que las variables seran visibles en
//la clase actual y sus clases derivadas, pero no en las clases superiores
//Linea 2: x1,y1,x2 e y2 son variables, pues cada rectangulo a construirse puede tomar un valor diferente de estos parametros
//Linea 3-8: Se define un Rectangulo en el plano cartesiano con las coordenadas
//de dos vertices P1 (x1, y1) y P2(x2,y2) estas lineas constituyen el constructor de la //clase Rectangulo, que definen los parametros necesarios,
// Linea 10 y 13: Es obligación para Recatangulo una definición de los métodos perímetro
// y área, por derivar de Geometrías Planas
// Linea 11 y 14: Con return se devuelve las operaciones de area y perimetro
// a ser calculadas con los datos de las coordenadas perimetro() y area() son conocidos //como métodos
public class Circulo extends GeometriasPlanas {
public static final double PI=3.14;
public double x,y,r;
public Circulo(double Cx, double Cy, double R){
x=Cx;
y=Cy;
r= R;
}
public Circulo(){this (0.0, 1.0, 2.0);}
public double perimetro(){
return 2.0*PI*r;
}
public double area(){
return PI*r*r;
}
}
//Linea 1: La clase Circulo desciende de GeometriasPlanas, lo cula se indica con extends
//Linea 2: El modificador static indica que la misma existe sin que se defina un valor de la misma
//El modificador final indica que se trata de un valor no modificable, es decir una constante
//Linea 4: Se define un Circulo en el plano cartesiano con las coordenadas
//del centro (x, y) y el radio R
//Linea 10 y 13: Es obligacion para Circulo una definicion de los metodos perimetro
//y area, por derivar de Geometrias Planas
//Linea 11 y 14: Con return se devuelve las operaciones de area y perimetro
//a ser calculadas con los datos de las coordenadas.
El programa principal
Se copian en un nuevo projecto en el entorno de programacion Eclipse los scripts de la clase padre Geometrias Planas e hijas Rectangulo y Circulo, así como el programa principal
Una vez ejecutado La salida de la consola del programa principal es
El centro del circulo es:2.0;2.0
El radio del circulo es:3.0
El perimetro del circulo es:18.84
El area del circulo es:28.259999999999998
El perimetro del recatngulo es:20.0
El area del rectangulo es:24.0














