Está en la página 1de 13

UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR

ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

LENGUAJE DE PROGRAMACION I

Docente: Mg. DÍAZ LEYVA Teodoro


Tema: Colecciones

Las colecciones son una especie de arrays de tamaño dinámico. Para usarlas haremos uso del Java
Collections Framework (JCF), el cual contiene un conjunto de clases e interfaces del
paquete java.util para gestionar colecciones de objetos.

Las colecciones representan grupos de objetos, denominados elementos. Podemos encontrar


diversos tipos de colecciones, según si sus elementos están ordenados, o si permitimos repetición
de elementos o no.

Esquema de interfaces y clases más usadas para colecciones de datos

Es el tipo más genérico en cuanto a que se refiere a cualquier tipo que contenga un grupo de
elementos. Viene definido por la interfaz Collection, de la cual heredará cada subtipo específico.
En esta interfaz encontramos una serie de métodos que nos servirán para acceder a los elementos
de cualquier colección de datos, sea del tipo que sea.

Página 1 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Esquema de interfaces y clases más usadas para colecciones de datos

CLASE ARRAYLIST

La clase ArrayList permite el almacenamiento de datos en memoria de forma similar a los arrays

convencionales, pero con la gran ventaja de que el número de elementos que puede almacenar es dinámico.

La cantidad de elementos que puede almacenar un array convencional está limitado por el número que se

indica en el momento de crearlo o inicializarlo. Los ArrayList, en cambio, pueden almacenar un número

variable de elementos sin estar limitados por un número prefijado.

MÉTODOS DE LA CLASE ARRAYLIST

Esta Clase dispone de diversos métodos para manipular una colección de objetos dinámicamente. Para crear

un ArrayList, se utiliza la siguiente instrucción:

ArrayList <nombre_clase> var_referencia = new ArrayList < nombre_clase > ();

Ejemplo:

ArrayList <Producto> prod = new ArrayList <Producto> ();

prod es un objeto de tipo ArrayList que va a manipular un arreglo de objetos de tipo Producto.

Página 2 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Es necesario importar el paquete:


java.util.ArrayList;

Página 3 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

OPERACIONES CON OBJETOS

Ejemplo :

Empleando la clase ArrayList realice mantenimiento de productos. Para ello, implemente la clase Producto,

Arrayproducto y un JFrame para la presentación de datos.

LPIColecciones

Página 4 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

SOLUCION:

PASO 1:
Diseñe la clase Producto en el paquete clase.producto.arrayproducto que tenga como atributos privados los
siguientes datos: código, descripción, precio unitario y stock. Implemente métodos de acceso set/get

package clase.producto.arrayproducto;
public class Producto{

// Atributos privados
private int codigo,stock;
private String descripcion;
private double pu;

// Constructor
public Producto( int codigo, String descripcion, double pu,
int stock ){
this.codigo=codigo;
this.descripcion=descripcion;
this.pu=pu;
this.stock=stock;
}

// Fija el código
public void setCodigo( int codigo ){
this.codigo = codigo;
}

// Fija la descripción
public void setDescripcion( String descripcion ){
this.descripcion = descripcion;
}
// Fija el precio unitario
public void setPu( double pu ){
this.pu = pu;
}
// Fija el stock
public void setStock( int stock ){
this.stock = stock;
}
// Retorna el código
public int getCodigo(){
return codigo;
}
// Retorna la descripción
public String getDescripcion(){
return descripcion;
}
// Retorna el precio unitario
public double getPu(){
return pu;
}
// Retorna el stock
public int getStock(){
return stock;
}
}

Página 5 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

PASO 2:

Diseñe la clase Arrayproducto en el paquete clase.producto.arrayproducto que tenga como atributo

privado un objeto de tipo ArrayList; luego, implemente los siguientes métodos:

• Un constructor sin parámetros que cree el objeto ArrayList

• Un método adicionar que reciba un producto y lo adicione al ArrayList

• Un método eliminar que reciba un producto y lo elimine del ArrayList

• Un método obtener que reciba una posición y retorne el producto de esa posición

• Un método buscar que reciba un código y retorne el producto con ese código

• Un método tamaño que retorne la cantidad de productos ingresados al ArrayList

• Un método mayorPrecio que retorne el producto más caro

• Un método menorPrecio que retorne el producto más barato

package clase.producto.arrayproducto;
public class Arrayproducto {
private ArrayList <Producto> prod;
//constructor que crea el objeto ArrayList
public Arrayproducto(){
prod=new ArrayList<Producto>();
}
public void adicionar(Producto x){
prod.add(x);
}
public void eliminar(Producto x){
prod.remove(x);
}
public Producto obtener(int pos){
return prod.get(pos);
}
public Producto buscar(int codigo){
for(int i=0; i<prod.size(); i++)
if(codigo==prod.get(i).getCodigo())
return prod.get(i);
return null;
}
public int tamaño(){
return prod.size();
}
public double mayorPrecio(){
double max=prod.get(0).getPu();
for(int i=1; i<prod.size(); i++)
if(prod.get(i).getPu()>max)
max=prod.get(i).getPu();
return max;
}
public double menorPrecio(){
double min=prod.get(0).getPu();
for(int i=1; i<prod.size(); i++)
if(prod.get(i).getPu()<min)
min=prod.get(i).getPu();
return min;
}
}

Página 6 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

PASO 3:

Una vez desarrollada las clases Producto y Arrayproducto implemente los siguientes métodos del programa

frmproductos : ingreso, consulta, modificación, eliminación y listado.

En todo momento, el programa mostrará un listado como el siguiente:

Código Descripción P_Unitario Stock

300 Impresora 180 10

600 Monitor 450 15

800 Mouse 60 25

Total de Productos :3

Producto más caro : 450

Producto más barato : 60

Página 7 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

Diseñe el formulario con los siguientes componentes:

Cambie valor de propiedades de los objetos:

Objeto Propiedad Valor


Label9 text Opción
Label10 name lblcodigo
text Código
Label11 name lbldecripcion
text Descripción
Label12 name lblprecio
text Precio
Label13 name lblstock
text Stock
Label14 name lbltotalproductos
Label15 name lblcaro
Label16 name lblbarato
jComboBox1 name cboopcion
jTextField1 name txtcodigo
jTextField2 txtdescrpcion
jTextField3 txtprecio
jTextField4 Txtstock
jButton1 name btnprocesar
text Procesar
jButton2 name btnborrar
text Borrar
jTable name Tablaprod

Página 8 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

CODIFICACIÓN DEL FRMPRODUCTOS:

public class frmproductos extends javax.swing.JFrame {


//modelelo de tabla
DefaultTableModel tablamod;
//Creo el objeto de tipo Arrayproducto
Arrayproducto p=new Arrayproducto ();
// métodos
//---------------------------------------------------------
public void items(){
cboopcion.addItem("Ingresar");
cboopcion.addItem("Consultar");
cboopcion.addItem("Modificar");
cboopcion.addItem("Eliminar");
cboopcion.addItem("Listado");
}
void seleccionar(){
int opcion=cboopcion.getSelectedIndex();
if( opcion == 1 || opcion == 3 ){
lbldescripcion.setVisible(false);
txtdescripcion.setVisible(false);
lblprecio.setVisible(false);
txtprecio.setVisible(false);
lblstock.setVisible(false);
txtstock.setVisible(false);
}
else{
lbldescripcion.setVisible(true);
txtdescripcion.setVisible(true);
lblprecio.setVisible(true);
txtprecio.setVisible(true);
lblstock.setVisible(true);
txtstock.setVisible(true);
}
}
//---------------------------------------------------------
void borrar(){
txtcodigo.setText("");
txtdescripcion.setText("");
txtprecio.setText("");
txtstock.setText("");
txtcodigo.requestFocus();
}
//---------------------------------------------------------
void procesar(){
switch(cboopcion.getSelectedIndex()){
case 0 :
ingresar();
break;
case 1:
consultar();
break;
case 2:
modificar();
break;
case 3:
eliminar();
break;
default:
listar();
}
}

Página 9 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

//---------------------------------------------------------
int getCodigo(){
return Integer.parseInt(txtcodigo.getText());
}
//-----------------------------------------------------
//---------------------------------------------------------
String getDescripcion(){
return txtdescripcion.getText();
}
//---------------------------------------------------------
double getPrecio(){
return Double.parseDouble(txtprecio.getText());
}
//---------------------------------------------------------
int getStock(){
return Integer.parseInt(txtstock.getText());
}
//---------------------------------------------------------
void mensaje( String m, String tipo ){
JOptionPane.showMessageDialog(this,m,tipo,JOptionPane.INFORMATION_MESSAGE);
}

//---------------------------------------------------------
// Ingresa un producto evitando que el código se repita
void ingresar(){
Producto prod=p.buscar(getCodigo());
if(prod==null){
prod=new Producto(getCodigo(),
getDescripcion(),getPrecio(),getStock());
p.adicionar(prod);
listar();
mensaje("Producto Ingresado", "Mensaje de confirmación");
}
else
mensaje("Codigo ya existe", "Mensaje de error");
}
//-------------------------------------------------------------
void consultar(){
Producto prod=p.buscar(getCodigo());
if(prod!=null){
//limpiar tabla
limpiar();
//cargar datos en la tabla
tablamod.addRow(new
Object[]{prod.getCodigo(),prod.getDescripcion(),prod.getPu(),prod.getStock()});
}
else
mensaje("Producto no existe", "Mensaje de error");
}
//----------------------------------------------------------------

public void listar(){


String colum []={"Código","Decripción","Precio","Stock"};
tablamod=new DefaultTableModel(null,colum);
tablaprod.setModel(tablamod);

if(p.tamaño()>0){
for(int i=0; i<p.tamaño(); i++){
Producto prod=p.obtener(i);
tablamod.addRow(new
Object[]{prod.getCodigo(),prod.getDescripcion(),prod.getPu(),prod.getStock()});
}

Página 10 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

lbltotalproductos.setText("Total de Productos :"+p.tamaño());


lblcaro.setText("Producto más caro :"+p.mayorPrecio());
lblbarato.setText("Producto más barato :"+p.menorPrecio());
lbltotalproductos.setVisible(true);
lblcaro.setVisible(true);
lblbarato.setVisible(true);
}else{
mensaje("No hay productos","Mensaje");
lbltotalproductos.setVisible(false);
lblcaro.setVisible(false);
lblbarato.setVisible(false);
}
}
//---------------------------------------------------------
// Modifica la descripción, precio y stock de un producto dado su código
void modificar(){
Producto prod=p.buscar(getCodigo());
if(prod!=null){
prod.setDescripcion(getDescripcion());
prod.setPu(getPrecio());
prod.setStock(getStock());
listar();
mensaje("Producto Modificado", "Mensaje de confirmación");
}
else
mensaje("Producto no existe", "Mensaje de error");
}
//---------------------------------------------------------
// Elimina un producto dado su código
void eliminar(){
Producto prod=p.buscar(getCodigo());
if(prod!=null){
p.eliminar(prod);
listar();
mensaje("Producto Eliminado", "Mensaje de confirmación");
}else
mensaje("Producto no existe", "Mensaje de error");
}
//--------------------------------------------------------------------------------------------------------------------
public void limpiar(){
while(tablaprod.getRowCount()>0){

((DefaultTableModel)tablaprod.getModel()).removeRow(0);
}
}

//constructor de jFrame
public frmproductos() {
initComponents();
setTitle("Clase ArrayList");
items();
}

Página 11 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

//eventos
private void btnborrarActionPerformed(java.awt.event.ActionEvent evt) {

borrar();
}

private void btnprocesarActionPerformed(java.awt.event.ActionEvent evt) {

procesar();

private void cboopcionItemStateChanged(java.awt.event.ItemEvent evt) {

seleccionar();

}//fin de frmproductos extends javax.swing.JFrame

Página 12 de 13 Ing. DIAZ LEYVA Teodoro


UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

ACTIVIDAD

Se requiere administrar información de un HOTEL sobre las habitaciones y huéspedes, tiene los
siguientes datos:

NUMERO : expresa el numero de la habitación (tipo entero)


TIPO : expresa el tipo de habitación (tipo cadena de caracteres): habitación simple,
doble, triple y suite.
NOMBRE : nombre del huésped, tipo cadena de caracteres.
SEXO : Sexo del huésped
PRECIO : representa el precio de la habitación, tipo decimal

Construya una aplicación que permita realizar las siguientes operaciones:


a) Registrar huésped
b) Buscar huésped por su nombre e identificar en que habitación y tipo se encuentra
c) Dado el nombre del huésped, elimine el registro correspondiente.
d) Modificar datos de un huésped
e) Listar huésped por sexo

Página 13 de 13 Ing. DIAZ LEYVA Teodoro

También podría gustarte