Conviértete en un emprendedor,profesional del conocimiento en la programación

sábado, 7 de enero de 2012

Clases administradoras con arreglos de objetos

Compartir con:


ENCAPSULAMIENTO

Clases administradoras con arreglos de objetos

Estas clases son similares a las clases administradoras que están anteriormente, con la diferencia que ahora éstas clases tendrán uno o más arreglos cuyo tipo de dato sea una clase. A estos arreglos se les conoce como arreglos de objetos porque en cada casillero ya no habrá un dato sino una referencia a un objeto con sus propios atributos. Sintaxis general para declarar un arreglo de objetos:
Clase [] variable;  Ó Clase variable [];
Ejemplos:
Producto[] a; // arreglo de objetos de tipo Producto
Persona[] b; // arreglo de objetos de tipo Persona
Ejemplo 1:
Diseñe una clase administradora con soporte para un arreglo de objetos considerando la siguiente GUI:




Considere la clase Producto desarrollada anteriormente que tiene los siguientes atributos y constructor:
public class Producto {
// atributos privados
private String codigo, descripcion;
private double precio;


// constructor
public Producto(String codigo, String descripcion, double precio){
      this.codigo=codigo;
     this.descripcion=descripcion;
     this.precio=precio; } }
Se asume la existencia de los métodos get-set. Diseñe una nueva clase administradora de nombre ArregloProductos, que tenga como atributos privados un arreglo de objetos y un contador de objetos que se guardan en el arreglo. Considere un tamaño fijo de 50 para el arreglo. Considere dentro de la funcionalidad de la clase los métodos necesarios de administración del arreglo de objetos para: agregar un nuevo objeto, recuperar, actualizar, buscar, eliminar.
public class ArregloProductos {
// atributos
private Producto[] a; // arreglo de objetos
private int n;               // contador de objetos
private final int tamaño=50; // tamaño fijo, constante
// constructor
     public ArregloProductos(){
      a = new Producto[tamaño];
      n=0;     }
Escribimos los métodos adicionales de administración del arreglo de objetos:

// métodos de administración

public void agrega(Producto p){ // agrega un nuevo objeto
          if(n<tamaño){
          a[n] = p;
          n++; } }

public Producto getProducto(int i){ // obtiene un objeto
       return a[i]; }

public void actualiza(Producto p, int i){ // reemplaza un objeto
          a[i] = p; }
public int busca(String codigo){ // busca y retorna la posición de un objeto, a través de su codigo
        for(int i=0; i<n; i++){
       if(getProducto(i).getCodigo().equals(codigo))
       return i; }
       return -1; // no lo encuentra }

public void elimina(int p){ // elimina un objeto de la posición indicada
        for(int i=p; i<n-1; i++){
        a[i] = a[i+1];
         n--; }
public double mayorPrecio(){ // retorna el mayor precio
            double m=a[0].getPrecio();
            for(int i=1; i<n; i++){
           if(getProducto(i).getPrecio()>m)
           m =getProducto(i).getPrecio(); }
          return m; }
public double menorPrecio(){ // retorna el menor precio
         double m=a[0].getPrecio();
          for(int i=1; i<n; i++){
         if(getProducto(i).getPrecio()<m)
         m =getProducto(i).getPrecio(); }
          return m; }
public double precioPromedio(){ // retorna el precio promedio
         double s=0;
         for(int i=1; i<n; i++){
        s +=getProducto(i).getPrecio(); }
       return s/n; }    }
Declare y cree el objeto ap de la clase ArregloProductos:
                ArregloProductos ap = new ArregloProductos();

Programe la acción de cada botón considerando lo siguiente:
En el botón Nuevo, crea un objeto de la clase Producto, lo guarda en el arreglo de objetos y muestra un listado de todos los objetos. Evita la duplicidad de códigos.
En el botón Busca, ubica el objeto que tiene el código ingresado y muestra su información. En caso que no lo encuentre muestra un mensaje de error en una ventana.
En el botón Modifica, actualiza la información de objeto que tiene el código ingresado y muestra un listado de todos los objetos.
En el botón Elimina, elimina el objeto que tiene el código ingresado y muestra un listado de todos los objetos. En el botón Lista, muestra un listado de todos los objetos.
En el botón Reporte, muestra la siguiente información: precio más alto, precio promedio, precio más bajo.
En el botón Borrar borra la información del área de texto, de las cajas de texto y enfoca el ingreso en la caja de texto del código.

0 comentarios:

Publicar un comentario