Está en la página 1de 15

UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR

ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

LENGUAJE DE PROGRAMACION I

Docente: Mg. Ing. Díaz Leyva Teodoro


Tema: Arreglo de Objetos

ARREGLO DE OBJETOS
Un arreglo de objetos es un conjunto de variables de referencia que controlan objetos del
mismo tipo.

a) Creación de un arreglo de objetos:


Libro alib[] = new Libro[3];

Donde:
Libro es el nombre de la clase.
alib[] es el nombre del arreglo.
new es el operador para reservar memoria. En este ejemplo se está reservando 3 espacios o
variables de referencia que por defecto tienen el valor de null hasta que se almacene la dirección
o referencia de un objeto.

b) Representación gráfica:

c) Creación y almacenamiento de objetos


alib[0]=new Libro(901,”Programación en Java”, 2006, 90);
alib[1]=new Libro(902,”Matemática Aplicada”, 2004, 85);
alib[2]=new Libro(903,”Estadística descriptiva”, 2005, 78);

Página 1 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

OPERACIONES VARIADAS

El siguiente ejemplo está compuesto de 3 clases: la clase Libro (clase que maneja los atributos
de los objetos de tipo libro y métodos de acceso set y get), la clase ArregloLibros (clase que
maneja el arreglo de objetos) y la clase Principal (clase que interactúa con el usuario a través
de la GUI).

La aplicación consiste en un mantenimiento de libros, es decir, se consideran las opciones de


ingresar, consultar, modificar, eliminar y listar libros. Adicionalmente, se realiza un aumento de
15% al precio de todos los libros cuyo año de publicación sea mayor al 2003 y se muestra la
siguiente información estadística:
 El título del libro más caro
 El título del libro más barato

Estructura del proyecto

Código de la clase Libro

package Modelo;

public class Libro {

// Atributos privados
private int codigo, año;
private String titulo;
private double precio;

//constructor
public Libro(int codigo, int año, String titulo, double precio) {
this.codigo = codigo;
this.año = año;
this.titulo = titulo;
this.precio = precio;
}

Página 2 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

//métodos de acceso
public int getCodigo() {
return codigo;
}

public void setCodigo(int codigo) {


this.codigo = codigo;
}

public int getAño() {


return año;
}

public void setAño(int año) {


this.año = año;
}

public String getTitulo() {


return titulo;
}

public void setTitulo(String titulo) {


this.titulo = titulo;
}

public double getPrecio() {


return precio;
}

public void setPrecio(double precio) {


this.precio = precio;
}
}

Página 3 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Código de la clase ArregloLibros

package Control;

import Modelo.Libro;

public class ArregloLibros {

//atributos privados
private Libro alib[];
private int indice;

//constructor
public ArregloLibros() {
alib = new Libro[3];
indice = 0;
}

//metodos publicos
public void adicionar(Libro x) {
if (indice == alib.length)
{//invocar método
ampliarArreglo();
}
alib[indice] = x;
indice++;

public int tamaño() {


return indice;
}

public Libro obtener(int pos) {


return alib[pos];
}

public int buscar(int cod) {


for (int i = 0; i < indice; i++) {
if (cod == alib[i].getCodigo()) {
return i;
}
}

return -1;
}

public void eliminar(int pos) {


for (int i = pos; i < indice - 1; i++) {
alib[pos] = alib[i + 1];
indice--;
}
}

Página 4 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

public void aumento() {


for (int i = 0; i < indice; i++) {
Libro x = alib[i];
if (x.getAño() > 2003) {
x.setPrecio(x.getPrecio() * 1.15);
}
}
}

public String masCaro() {


double max = 0;
String tit = "";
for (int i = 0; i < indice; i++) {
Libro x = alib[i];
if (x.getPrecio() > max) {
max = x.getPrecio();
tit = x.getTitulo();
}
}
return tit;
}

public String masBarato() {


double min = Double.MAX_VALUE;
String tit = "";
for (int i = 0; i < indice; i++) {
Libro x = alib[i];
if (x.getPrecio() < min) {
min = x.getPrecio();
tit = x.getTitulo();
}
}
return tit;
}

//método privado
private void ampliarArreglo() {
//asigna contenido del arreglo alib a la variable aux
Libro aux[] = alib;
//crea nuevo objeto aumentando número de elementos del arreglo
alib = new Libro[indice + 5];
//pasar los elementos de la variable aux al arreglo alib
for (int i = 0; i < indice; i++) {
alib[i] = aux[i];
}
}

Página 5 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

En el paquete vista crear objeto JFramePrincipal, tres JInternalFrame para ingresar, eliminar y
modificar Libro. El JFramePrincipal contiene un objeto Destok Pane que permite alojar los
JinternalFrames.

Diseño del JFramePrincipal

Código de JFramePrincipal

package Vista;

import Control.ArregloLibros;
import Modelo.Libro;
import javax.swing.JOptionPane;

public class FramePrincipal extends javax.swing.JFrame {

//crear objeto de arregloLibros


ArregloLibros a = new ArregloLibros();

Página 6 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

//objeto JInternalFrame
JInternalFrameIngresar ventanaIngreso = new JInternalFrameIngresar();
JInternalFrameModificar ventanaModificar = new
JInternalFrameModificar();
JInternalFrameEliminar ventanaEliminar = new JInternalFrameEliminar();

void mensaje(String s) {
JOptionPane.showMessageDialog(this, s);

void aumentar() {
a.aumento();
String s = null;
for (int i = 0; i < a.tamaño(); i++) {
Libro x = a.obtener(i);
s = s + "Còdigo: " + x.getCodigo() + "\nTitulo: " +
x.getTitulo() + "\nAño: " + x.getAño() + "\nPrecio:" + x.getPrecio() +
"\n\n\n\n";

}
mensaje(s);
}

void estadisticas() {
String s = "El libro mas caro: " + a.masCaro() + "\nEl libro
mas barato:" + a.masBarato() + "\n";
mensaje(s);

//eventos
private void
MenuItemIngresoActionPerformed(java.awt.event.ActionEvent evt) {
dskFondo.add(ventanaIngreso);
ventanaIngreso.setVisible(true);
//pasamos el objeto arregloLibros a la ventanaingreso
ventanaIngreso.setA(a);

private void
MenuItemSalirActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}

private void
MenuItemModificarActionPerformed(java.awt.event.ActionEvent evt) {
dskFondo.add(ventanaModificar);
ventanaModificar.setVisible(true);
//pasamos el objeto arregloLibros a la ventanaModificar
ventanaModificar.setA(a);
}

private void
MenuItemEliminarActionPerformed(java.awt.event.ActionEvent evt) {
dskFondo.add(ventanaEliminar);

Página 7 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

ventanaEliminar.setVisible(true);
//pasamos el objeto arregloLibros a la ventanaModificar
ventanaEliminar.setA(a);
}

private void
MenuItemAumentarActionPerformed(java.awt.event.ActionEvent evt) {
aumentar();
}

private void
MenuItemEsadisticasActionPerformed(java.awt.event.ActionEvent evt) {
estadisticas();
}

Diseño de JInternalFrameIngresar

Código de JInternalFrameIngresar

package Vista;

import Control.ArregloLibros;
import Modelo.Libro;
import javax.swing.JOptionPane;

Página 8 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

public class JInternalFrameIngresar extends javax.swing.JInternalFrame


{

/*variable tipo arreglolibros,


el obejto ya fue creado en FramePrincipal
*/
ArregloLibros a;

public void setA(ArregloLibros a) {


this.a = a;
}

void ingresar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
if (pos == -1) {
Libro x = new Libro(Integer.parseInt(txtcodigo.getText()),
txttitulo.getText(), Integer.parseInt(txtaño.getText()),
Double.parseDouble(txtprecio.getText()));
a.adicionar(x);
listar();
mensaje("Libro agregado");
} else {
mensaje("Código ya existe");
}
}

void modificar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
Libro x = a.obtener(pos);

void listar() {
txtsalida.setText("");
txtsalida.setText("Código \t Título \t Año \t Precio\n");
if (a.tamaño() > 0) {
for (int i = 0; i < a.tamaño(); i++) {
Libro x = a.obtener(i);
txtsalida.append(x.getCodigo() + "\t" + x.getTitulo()
+ "\t" + x.getAño() + "\t" + x.getPrecio() + "\n");
}
} else {
mensaje("No hay libros");
}
}

void mensaje(String s) {
JOptionPane.showMessageDialog(this, s);

//eventos
te void btnregistrarActionPerformed(java.awt.event.ActionEvent evt) {
ingresar();
}
}

Página 9 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Diseño de InternalFrameModificar

Código de JInternalFrameModificar

package Vista;

import Control.ArregloLibros;
import Modelo.Libro;
import javax.swing.JOptionPane;

public class JInternalFrameModificar extends


javax.swing.JInternalFrame {

/*variable tipo arreglolibros,


el obejto ya fue creado en FramePrincipal
*/
ArregloLibros a;

public void setA(ArregloLibros a) {


this.a = a;
}

void buscar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
if(pos!=-1){
Libro x = a.obtener(pos);
txttitulo.setText(x.getTitulo());
txtaño.setText(String.valueOf(x.getAño()));
txtprecio.setText(String.valueOf(x.getPrecio()));
} else
mensaje("Libro no existe");

Página 10 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

void mensaje(String s) {
JOptionPane.showMessageDialog(this, s);
}

void modificar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
if(pos!=-1){
Libro x = a.obtener(pos);
x.setTitulo(txttitulo.getText());
x.setAño(Integer.parseInt(txtaño.getText()));
x.setPrecio(Double.parseDouble(txtprecio.getText()));
listar();
}else
mensaje("Libro no existe");
}

void listar() {
txtsalida.setText("");
txtsalida.setText("Código \t Título \t Año \t Precio\n");
if (a.tamaño() > 0) {
for (int i = 0; i < a.tamaño(); i++) {
Libro x = a.obtener(i);
txtsalida.append(x.getCodigo() + "\t" + x.getTitulo()
+ "\t" + x.getAño() + "\t" + x.getPrecio() + "\n");
}
} else {
mensaje("No hay libros");
}
}

//eventos
private void btnmodificarActionPerformed(java.awt.event.ActionEvent
evt) {
modificar() ;

private void btnbuscarActionPerformed(java.awt.event.ActionEvent evt)


{
buscar();

Página 11 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Código de JInternalFrameEliminar

Código de JInternalFrameEliminar

package Vista;

import Control.ArregloLibros;
import Modelo.Libro;
import javax.swing.JOptionPane;

public class JInternalFrameEliminar extends javax.swing.JInternalFrame


{

/*variable tipo arreglolibros,


el obejto ya fue creado en FramePrincipal
*/
ArregloLibros a;

public void setA(ArregloLibros a) {


this.a = a;
}

void buscar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
if (pos != -1) {
Libro x = a.obtener(pos);
txttitulo.setText(x.getTitulo());
txtaño.setText(String.valueOf(x.getAño()));
txtprecio.setText(String.valueOf(x.getPrecio()));
} else {
mensaje("Libro no existe");
}
}

Página 12 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

void eliminar() {
int pos = a.buscar(Integer.parseInt(txtcodigo.getText()));
if (pos != -1) {
a.eliminar(pos);
mensaje("Libro eliminado");
listar();
} else {
mensaje("Código no existe");
}
}

void listar() {
txtsalida.setText("");
txtsalida.setText("Código \t Título \t Año \t Precio\n");
if (a.tamaño() > 0) {
for (int i = 0; i < a.tamaño(); i++) {
Libro x = a.obtener(i);
txtsalida.append(x.getCodigo() + "\t" + x.getTitulo()
+ "\t" + x.getAño() + "\t" + x.getPrecio() + "\n");
}
} else {
mensaje("No hay libros");
}
}

void mensaje(String s) {
JOptionPane.showMessageDialog(this, s);
}

//eventos

private void
btnreliminarActionPerformed(java.awt.event.ActionEvent evt) {
eliminar();
}

private void btnbuscarActionPerformed(java.awt.event.ActionEvent


evt) {
buscar();
}
}

Página 13 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

//**********EJECUCION DE LA APLICACIÓN ******************************

FramePrincipal

Ejecución opción ingreso de libros

Página 14 de 15
UNIVERSIDAD NACIONAL TECNOLÓGICA DE DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejecución opción modificar libros

Ejecución opción eliminar libros

Página 15 de 15

También podría gustarte