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