|
|||||||
|
|
|
|||||
|
|
|||||||
Teniendo implementado el objeto ProductoBasico, éste nos servira como clase base para implementar la clase derivada Producto.
Los métodos y atributos públicos de la clase base, son visibles desde la clase derivada, por lo tanto, desde la nueva clase Producto se puede acceder a las siguientes propiedades de la clase base ProductoBasico :
public String nombre; public void cambiarPrecioCosto(int nuevoPrecio) public int obtenerPrecioCosto( ) public void cambiarPrecioVenta(int nuevoPrecio) public int obtenerPrecioVenta( )
El objetivo de este ejemplo es diseñar una clase derivada Producto que herede las propiedades de la clase base ProductoBasico, además de incluir propiedades que manejen el asunto de la variación del stock debido a compra y venta del producto.
Sintaxis básica en Java
Se usa la palabra reservada extends para indicar que una clase se deriva de otra.
class Derivada extends Base
{
/* constructores métodos y atributos */
}
Consecuentemente, si la clase base es ProductoBasico y la clase derivada (que extiende a la clase base) es Producto, se tiene la siguiente declaración :
class Producto extends ProductoBasico
{
private int stock;
/* resto de la clase */
}
Constructor
Además de inicializar los atributos propios de la clase, se debe llamar al constructor de la clase base. Para hacerlo se emplea el método super.
public Producto( String nombre, int precioCosto, int precioVenta,int stock )
{
super(nombre,precioCosto,precioVenta);
this.stock = stock;
}
*nota : si el constructor de la clase base no tiene parámetros, no es necesario llamar al método super( ); desde el constructor de la clase derivada ; Java lo hace automáticamente.
Implementación
class Producto extends ProductoBasico
{
private int stock;
public Producto( String nombre, int precioCosto, int precioVenta,int stock )
{
super(nombre,precioCosto,precioVenta);
this.stock = stock;
}
public void vender(int cantidad)
{
stock -= cantidad;
}
public void comprar(int cantidad)
{
stock += cantidad;
}
public int obtenerStock( )
{
return stock;
}
}
Bajar archivo
Al crear un nueva referencia de tipo Producto se pueden llamar a todos los métodos y atributos del ejemplo :
Producto p = new Producto("Cafe",200,300,1000);
/* Accediendo a los métodos y atributos heredados */
System.out.println("nombre del producto : " + p.nombre);
p.cambiarPrecioCosto(210);
p.cambiarPrecioVenta(330);
/* Accediendo a los métodos adicionales */
p.vender(800);
p.comprar(100);
System.out.println("stock actual : " + p.obtenerStock( ));
/* Accediendo a los métodos heredados */
System.out.println("precio de costo actual : " + p.obtenerPrecioCosto( ));
System.out.println("precio de venta actual : " + p.obtenerPrecioVenta( ));
|
Programa de prueba El siguiente programa consiste en ir asignando (aleatoriamente) precios de venta y costo ,además de ir modificando el valor de stock mediante llamadas a los métodos vender y comprar. Por simplicidad, se optó por una economía inflacionaria, en donde los precios suben o se mantienen y la compra y venta del producto es proporcional a sus respectivos precios. |
Código fuente
class prbProducto
{
public static void simulacion(Producto p, int n)
{
int cont = 0;
while(cont < n)
{
int aux = (int) Math.round(Math.random() * 5) + p.obtenerPrecioCosto( );
p.cambiarPrecioCosto(aux);
p.comprar(aux * 4);
aux = (int) Math.round(Math.random() * 5) + p.obtenerPrecioVenta( );
p.cambiarPrecioVenta(aux);
p.vender(aux * 2);
cont++;
System.out.print("\n\t" + cont + "\t" + p.obtenerPrecioCosto( ));
System.out.print("\t" + p.obtenerPrecioVenta( ));
System.out.print("\t" + p.obtenerStock( ));
}
}
public static void main(String arg[])
{
Producto p = new Producto("Coca-Cola 2 lts.",380,650,3000);
System.out.println("\n Informe de precios y stock ");
System.out.println(" --------------------------\n");
System.out.println("\n\tProducto : " + p.nombre + "\n");
System.out.println("\n\tmes\tcosto\tventa\tstock");
System.out.print("\t---\t-----\t-----\t-----");
simulacion(p,12);
System.out.println("\n\t");
}
}
Bajar archivo