Está en la página 1de 20

LABORATORIO PROGRAMACIN JAVA SESIN 5 - 2: POO AVANZADO EN JAVA

En esta sesin realizaremos programas orientados a objetos avanzados utilizando el lenguaje Java. Se pretende ensear cmo aplicar tcnicas avanzadas de POO en aplicaciones Java.

1. Ejemplo POO Informticos


En este ejemplo se muestra un ejemplo de clases abstractas y polimorfismo. Para probarla crear una aplicacin Java con el siguiente cdigo:

- Clase InformaticoAbs:
package informaticos; public abstract class InformaticoAbs { //Atributos private String empresa; private double sueldo; //Constructor public InformaticoAbs(String empresa) { this.empresa = empresa; } //Mtodos public String getEmpresa() { return this.empresa; } public void setEmpresa(String nueva) { this.empresa = nueva; } public double getSueldo() { return this.sueldo; }

public void setSueldo(double euros) { this.sueldo = euros; //mtodo abstracto public abstract double pagarSueldo(double horas); }

- Clase Analista:
package informaticos; public class Analista extends InformaticoAbs { String especialidad; public Analista(String empresa, String especialidad) { super(empresa); this.especialidad = especialidad; } public double pagarSueldo(double horas) { return horas*12; } }

- Clase Programador:
package informaticos; public class Programador extends InformaticoAbs { String lenguaje; public Programador(String empresa, String lenguaje) { super(empresa); this.lenguaje = lenguaje; } public double pagarSueldo(double horas) { return horas*6; } }

- Clase Main
package informaticos; public class Main { public static void main(String[] args) { // TODO code application logic here //Creamos informticos InformaticoAbs inf1 = new Analista("IBM","BBDD"); InformaticoAbs inf2 = new Programador("Indra","Java"); //Pagamos los sueldos utilizando polimorfismo inf1.setSueldo(inf1.pagarSueldo(160)); inf2.setSueldo(inf2.pagarSueldo(180)); System.out.println("Sueldo analista: "+inf1.getSueldo()); System.out.println("Sueldo programador: "+inf2.getSueldo()); } }

2. Ejercicio Banco 3
Realizar una pequea aplicacin en Java utilizando polimorfismo, como en el ejemplo anterior, para la gestin de los intereses de distintos tipos de cuentas de un banco. La aplicacin se compondr de una clase padre abstracta CuentaAbs que contendr un mtodo abstracto calculaInteres(double cantidad) que devolver un double con el clculo de los intereses aplicados a cierta cantidad de dinero. La clase CuentaAbs debe contar como mnimo con los atributos: nmero de cuenta (String), titular (String), saldo (double) y fecha de apertura (Calendar) y sus correspondientes mtodos get y set. De la clase CuentaAbs heredarn dos clases llamadas CuentaAhorro y CuentaPlazo que implementarn el mtodo abstracto dando un inters del 2 % la primera y un 5 % la segunda. La calse CuentaAhorro incorporar un nuevo atributo llamado numTarjCredito de tipo String y CuentaPlazo el atributo numAos de tipo int. Probar las clases con distintos objetos de los dos tipos de cuentas.

3. Ejemplo POO Censo Universitario


A continuacin realizaremos un programa capaz de gestionar un censo universitario de alumnos y profesores.

El cdigo de cada una de las clases y una aplicacin capaz de manejarlas es el siguiente: - Clase Persona:
package censouni; public class Persona { private private private private private String dni; String nombre; Fecha fechaNac; String direccion; int tfno;

//constructor public Persona(String p_dni, String p_nombre, Fecha p_fecnac, String p_direccion, int p_tfno) { dni = p_dni; nombre = p_nombre; fechaNac = p_fecnac; direccion = p_direccion; tfno = p_tfno; } //mtodos public String getDni() { return this.dni; } public String getNombre() { return this.nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public Fecha getFechaNac() { return this.fechaNac; } public void setFechaNac(Fecha fechaNac) { this.fechaNac = fechaNac; } public String getDireccion() { return this.direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public int getTfno() { return this.tfno; } public void setTfno(int tfno) { this.tfno = tfno; } public String toString() { return dni + " " + nombre; } }

Esta clase hace uso (asociacin) de otra llamada Fecha, esta clase se encarga de manejar fechas. El cdigo de la clase se muestra a continuacin: - Clase Fecha:
//Clase para manejar fechas (DD/MM/AAAA) package censouni; import java.util.Calendar; public class Fecha { //atributos private int ao; private int mes; private int dia; //constructores public Fecha(int dia, int mes, int ao) { this.dia = dia; this.mes = mes; this.ao = ao; } public Fecha(String cadenaFecha) throws FechaMal { String[] st = cadenaFecha.split("/"); if (st.length < 3) { throw new FechaMal(); } String dd = st[0]; String mm = st[1]; String aa = st[2]; this.dia = Integer.parseInt(dd); this.mes = Integer.parseInt(mm); this.ao = Integer.parseInt(aa); } public Fecha() { Calendar hoy = Calendar.getInstance(); ao = hoy.get(Calendar.YEAR); mes = hoy.get(Calendar.MONTH) + 1; dia = hoy.get(Calendar.DAY_OF_MONTH); } //mtodos public String toString() { return dia + "/" + mes + "/" + ao; } public int getAo() { return this.ao; } public void setAo(int ao) { this.ao = ao; } public int getDia() { return this.dia; } public void setDia(int dia) { this.dia = dia; } public int getMes() { return this.mes; }

public void setMes(int mes) { this.mes = mes; } } class FechaMal extends Exception { public FechaMal() { super("FECHA INCORRECTA."); } }

- Clase Alumno:
package censouni; public class Alumno extends Persona { private String titulacion; private String asignaturas; //constructor public Alumno(String p_dni, String p_nombre, Fecha p_fecnac, String p_direccion, int p_tfno, String titulacion, String asignaturas) { super(p_dni, p_nombre, p_fecnac, p_direccion, p_tfno); this.titulacion = titulacion; this.asignaturas = asignaturas; } //mtodos public String getTitulacion() { return this.titulacion; } public void setTitulacion(String titulacion) { this.titulacion = titulacion; } public String getAsignaturas() { return this.asignaturas; } public void setAsignaturas(String asignaturas) { this.asignaturas = asignaturas; } public String toString() { return super.toString()+" # Alumno # - Titulacin: "+ this.titulacion; } }

- Clase Profesor:
package censouni; public class Profesor extends Persona {

private String departamento; private double sueldo; //constructor public Profesor(String p_dni, String p_nombre, Fecha p_fecnac, String p_direccion, int p_tfno, String departamento, double sueldo) { super(p_dni, p_nombre, p_fecnac, p_direccion, p_tfno); this.departamento = departamento; this.sueldo = sueldo; }

//mtodos public String getDepartamento() { return this.departamento; } public void setDepartamento(String departamento) { this.departamento = departamento; } public double getSueldo() { return this.sueldo; } public void setSueldo(double sueldo) { this.sueldo = sueldo; } public String toString() { return super.toString()+" # Profesor # - Departamento: " + this.departamento; } }

- Clase Main: Por ltimo se muestra una clase llamada Main encargada de realizar las operaciones bsicas para gestionar un censo universitario. Estas operaciones son las de alta, bajas, modificaciones y consulta de los datos de las personas censadas.
/* Aplicacin CensoUni: Permite introducir, borrar y buscar personas */ package censouni; import import import import java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader; java.util.HashMap;

public class Main { /** Creates a new instance of Main */ public Main() { } private static String res, res2, dni,

nombre,

direccion, titulacion, asignaturas, departamento;

//Tabla hash private static HashMap<String, Persona> personas = new HashMap<String, Persona>(); private static BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in)); private static int tfno, op; private static double sueldo; private static Fecha fecnac; private static Persona objper; private static Alumno alumno; private static Profesor profe; private static String clase; public static void main(String[] args) { // TODO code application logic here while (true) { try { do { System.out.println("\n\n--- Operaciones del Censo Universitario ---"); System.out.println(" 1 - Alta. "); System.out.println(" 2 - Baja. "); System.out.println(" 3 - Consulta. "); System.out.println(" 4 - Modificacin. ");

System.out.println(" 5 - Salir. "); System.out.println(" Seleccione la operacin: (1,2,3,4,5): "); res = entrada.readLine(); } while (!res.equals("1") && !res.equals("2") && !res.equals("3") && !res.equals("4") && !res.equals("5")); // alta if (res.equals("1")) { alta(); } // baja else if (res.equals("2")) { baja(); } // consulta else if (res.equals("3")) { consulta(); } // modificacin else if (res.equals("4")) { modifica(); } //salir else if (res.equals("5")) { System.exit(0); } catch (NumberFormatException nfe) { System.out.println("\nError de formato numrico: " + nfe.toString()); catch (FechaMal fm) { System.out.println("\nError en formato de fecha."); catch (IOException ioe) { System.out.println("\nError de entrada/salida: " + ioe.toString()); catch (Exception e) { // Captura cualquier otra excepcin System.out.println(e.toString());

} } } } } } }

// alta private static void alta() throws IOException, FechaMal { System.out.println("\n -- Alta -- "); System.out.println("Introduzca el DNI: "); dni = entrada.readLine(); System.out.println("Introduzca nombre: "); nombre = entrada.readLine(); System.out.println("Introduzca fecha de nacimiento (DD/MM/AAAA): "); fecnac = new Fecha(entrada.readLine()); System.out.println("Introduzca direccin: "); direccion = entrada.readLine(); System.out.println("Introduzca telfono: "); tfno = Integer.parseInt(entrada.readLine()); do { System.out.println("Introduzca categora (1-alumno, 2-profesor): "); res = entrada.readLine(); } while (!res.equals("1") && !res.equals("2")); if (res.equals("1")) { System.out.println("Introduzca titulacin: "); titulacion = entrada.readLine(); System.out.println("Introduzca asignaturas: "); asignaturas = entrada.readLine(); //instanciamos un alumno alumno = new Alumno(dni, nombre, fecnac, direccion, tfno, titulacion, asignaturas); //introducimos en la tabla hash. personas.put(dni, alumno); System.out.println("\nAlumno dado de alta: " + alumno.toString()); } else { System.out.println("Introduzca departamento: "); departamento = entrada.readLine(); System.out.println("Introduzca sueldo: "); sueldo = Double.parseDouble(entrada.readLine()); //instanciamos un profesor profe = new Profesor(dni, nombre, fecnac, direccion, tfno, departamento, sueldo); //introducimos en la tabla hash.

personas.put(dni, profe); System.out.println("\nProfesor dado de alta: " + profe.toString()); } } // baja private static void baja() throws IOException { System.out.println("\n -- Baja -- "); System.out.println("Introduzca el DNI de la persona a borrar: "); dni = entrada.readLine(); //obtenemos la persona de la tabla hash. objper = personas.get(dni); if (objper != null) { personas.remove(dni); System.out.println("Persona borrada: " + objper.toString()); } else { System.out.println(" Error: - Persona no encontrada - "); } } // consulta private static void consulta() throws IOException { System.out.println("\n -- Consulta -- "); System.out.println("Introduzca el DNI de la persona: "); dni = entrada.readLine(); //obtenemos la persona de la tabla hash. objper = personas.get(dni); if (objper != null) { System.out.println("- Nombre: " + objper.getNombre()); System.out.println("- Fecha de nacimiento: " + objper.getFechaNac().toString()); System.out.println("- Direccin: " + objper.getDireccion()); System.out.println("- Telfono: " + objper.getTfno()); //sacamos la categora de la persona clase = objper.getClass().getName(); if (clase.equals("censouni.Alumno")) { alumno = (censouni.Alumno) objper; System.out.println("- Titulacin: " + alumno.getTitulacion()); System.out.println("- Asignaturas: " + alumno.getAsignaturas()); } else { profe = (censouni.Profesor) objper; System.out.println("- Departamento: " + profe.getDepartamento()); System.out.println("- Sueldo: " + profe.getSueldo()); } } else { System.out.println(" Error: - Persona no encontrada - "); } } // modifica private static void modifica() throws IOException, FechaMal { System.out.println("\n -- Modificacin -- "); System.out.println("Introduzca el DNI de la persona: "); dni = entrada.readLine(); //obtenemos la persona de la tabla hash. objper = personas.get(dni); if (objper != null) { System.out.println("Introduzca el dato a modificar (1-Nombre, 2-FecNac, 3-Dir, 4-Tfno, 5-Otro): "); op = Integer.parseInt(entrada.readLine()); switch (op) { case 1: System.out.println("Introduzca nuevo nombre: "); nombre = entrada.readLine(); objper.setNombre(nombre); break; case 2: System.out.println("Introduzca nueva fecha de nacimiento: "); fecnac = new Fecha(entrada.readLine()); objper.setFechaNac(fecnac); break; case 3:

System.out.println("Introduzca nueva direccin: "); direccion = entrada.readLine(); objper.setDireccion(direccion); break; case 4: System.out.println("Introduzca nuevo telfono: "); tfno = Integer.parseInt(entrada.readLine()); objper.setTfno(tfno); break; case 5: //sacamos la categora de la persona clase = objper.getClass().getName(); if (clase.equals("censouni.Alumno")) { alumno = (censouni.Alumno) objper; System.out.println("Introduzca el dato a modificar (1-Titulacin, 2-Asignaturas): "); res2 = entrada.readLine(); if (res2.equals("1")) { System.out.println("Introduzca nueva titulacin: "); titulacion = entrada.readLine(); alumno.setTitulacion(titulacion); } else if (res2.equals("2")) { System.out.println("Introduzca nuevas asignaturas: "); asignaturas = entrada.readLine(); alumno.setAsignaturas(asignaturas); } } else { profe = (censouni.Profesor) objper; System.out.println("Introduzca el dato a modificar (1-Dpto, 2-Sueldo): "); res2 = entrada.readLine(); if (res2.equals("1")) { System.out.println("Introduzca nuevo departamento: "); departamento = entrada.readLine(); profe.setDepartamento(departamento); } else if (res2.equals("2")) { System.out.println("Introduzca nuevo sueldo: "); sueldo = Double.parseDouble(entrada.readLine()); profe.setSueldo(sueldo); } } break; default: System.out.println("Opcin incorrecta"); } System.out.println("Persona modificada: " + objper.toString()); } else { System.out.println(" Error: - Persona no encontrada - "); } } }

10

4. Ejercicio Tienda Informtica


Se pretende realizar una aplicacin en Java para la gestin y venta de productos de una tienda de informtica. En la tienda se venden dos tipos de productos: ordenadores y telfonos mviles. La informacin que hay que guardar de cualquier producto es un cdigo de producto nico para la tienda, el nombre, el precio y la cantidad que tienen actualmente para vender. De los ordenadores hay que guardar una cadena con las caractersticas del mismo como el procesador, la cantidad de memoria, la capacidad de su disco duro, etc. De los telfonos mviles hay que guardar el operador que lo comercializa. Codificar las clases que representan los productos de la tienda y una aplicacin que realice las siguientes operaciones: 1. Alta de nuevos productos: Se pedirn los datos del producto y se dar de alta en la tienda. 2. Baja de productos: Se pedir el cdigo del producto y se dar de baja de la tienda. 3. Consulta de productos: Se pedir el cdigo del producto y se mostrar su informacin. 4. Venta de productos: Se pedir el cdigo del producto y la cantidad y se restar esa cantidad de la actual. 5. Reponer producto: Se pedir el cdigo del producto a reponer y se incrementar el valor de su cantidad. De forma voluntaria se puede realizar la operacin de modificacin de los datos de algn producto.

11

5. Solucin Banco 3
Realizar una pequea aplicacin en Java utilizando polimorfismo, como en el ejemplo anterior, para la gestin de los intereses de distintos tipos de cuentas de un banco. La aplicacin se compondr de una clase padre abstracta CuentaAbs que contendr un mtodo abstracto calculaInteres(double cantidad) que devolver un double con el clculo de los intereses aplicados a cierta cantidad de dinero. La clase CuentaAbs debe contar como mnimo con los atributos: nmero de cuenta (String), titular (String), saldo (double) y fecha de apertura (Calendar) y sus correspondientes mtodos get y set. De la clase CuentaAbs heredarn dos clases llamadas CuentaAhorro y CuentaPlazo que implementarn el mtodo abstracto dando un inters del 2 % la primera y un 5 % la segunda. La calse CuentaAhorro incorporar un nuevo atributo llamado numTarjCredito de tipo String y CuentaPlazo el atributo numAos de tipo int. Probar las clases con distintos objetos de los dos tipos de cuentas. - Clase CuentaAbs:
package banco; import java.util.Calendar; public abstract class CuentaAbs { /** Creates a new instance of CuentaAbs */ public CuentaAbs(String numero, String titular, double saldo) { this.numero = numero; this.titular = titular; this.saldo = saldo; this.fechaApertura = Calendar.getInstance(); } private String numero; private String titular; private double saldo; private Calendar fechaApertura; public String getNumero() { return numero; } public String getTitular() { return titular; } public void setTitular(String titular) { this.titular = titular; } public double getSaldo() { return saldo; } public void setSaldo(double saldo) { this.saldo = saldo; } public Calendar getFechaApertura() { return fechaApertura; } public void setFechaApertura(Calendar fechaApertura) { this.fechaApertura = fechaApertura; } public void ingresar(double cantidad) {

12

this.saldo += cantidad; } public void retirar(double cantidad) { this.saldo -= cantidad; } public String toString() { return "Cuenta: " + this.numero + " - " + this.titular + " - " + this.saldo; } public abstract double calculaInteres(double cantidad); }

- Clase CuentaAhorro:
package banco; public class CuentaAhorro extends CuentaAbs { /** Creates a new instance of CuentaAhorro */ public CuentaAhorro(String numero, String numTarjetaCredito) { super(numero, titular, saldo); this.numTarjetaCredito = numTarjetaCredito; } private String numTarjetaCredito; public double calculaInteres(double cantidad){ return cantidad*0.02; } public String toString() { return super.toString() + " - " + this.numTarjetaCredito; } } titular, double saldo, String

- Clase CuentaPlazo:
package banco; public class CuentaPlazo extends CuentaAbs { /** Creates a new instance of CuentaPlazo */ public CuentaPlazo(String numero, String titular, double saldo, int numAos) { super(numero, titular, saldo); this.numAos = numAos; } private int numAos; public double calculaInteres(double cantidad){ return cantidad*0.05; } public String toString() { return super.toString() + " - " + this.numAos; } }

13

- Clase CuentaPlazo:
package banco; public class PruebaCuentas3 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here CuentaAbs c1 = new CuentaAhorro("1","Pepe",100,"124236987364"); CuentaAbs c2 = new CuentaPlazo("2","Maria",200,4); c1.ingresar(200); c2.retirar(100); System.out.println(c1.toString()); double c1i = c1.calculaInteres(c1.getSaldo()) + c1.getSaldo(); double c2i = c2.calculaInteres(c2.getSaldo()) + c2.getSaldo(); System.out.println("Tu saldo de la CuentaAhorro + los intereses queda en: "+ c1i); System.out.println(c2.toString()); System.out.println("Tu saldo de la CuentaPlazo + los intereses queda en: "+ c2i); } }

14

6. Solucin Tienda Informtica


A continuacin mostramos una aplicacin capaz de gestionar una tienda de informtica. Para ello lo primero que haremos ser definir el diagrama de clases como sigue:

El cdigo de cada una de las clases es el siguiente: - Clase Producto:


package tienda; public class Producto { private private private private String codigo; String nombre; double precio; int cantidad;

private static int contador=0; public Producto(String nombre, double precio, int cantidad) { this.nombre = nombre; this.precio = precio; this.cantidad = cantidad; this.codigo = Integer.toString(getContador()); }

15

public static int getContador() { return contador++; } public static void setContador(int contador) { Producto.contador = contador; } public String getCodigo() { return this.codigo; } public String getNombre() { return this.nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public double getPrecio() { return this.precio; } public void setPrecio(double precio) { this.precio = precio; } public int getCantidad() { return this.cantidad; } public void sumaCantidad(int cantidad) { this.cantidad += cantidad; } public boolean restaCantidad(int cantidad) { if (this.cantidad<=cantidad) { System.out.println("No hay suficiente cantidad..."); return false; } else { this.cantidad -= cantidad; return true; } } public String toString() { return "- Codigo: "+ codigo + " - Nombre: " + nombre + "\n- Precio: " + precio + " - Cantidad: " + cantidad; } }

- Clase Ordenador:
package tienda; public class Ordenador extends Producto { private String caracteristicas; public Ordenador(String nombre, double precio, int cantidad, String caracteristicas) { super(nombre, precio, cantidad); this.caracteristicas = caracteristicas; } public String getCaracteristicas() { return this.caracteristicas; }

16

public void setCaracteristicas(String caracteristicas) { this.caracteristicas = caracteristicas; } public String toString() { return super.toString()+"\n # Ordenador # - Caractersticas: "+ caracteristicas; } }

- Clase Movil:
package tienda; public class Movil extends Producto { private String operador; public Movil(String nombre, double precio, int cantidad, String operador) { super(nombre, precio, cantidad); this.operador = operador; } public String getOperador() { return this.operador; } public void setOperador(String operador) { this.operador = operador; } public String toString() { return super.toString()+"\n # Movil # - Operador: "+ operador; } }

- Clase Tienda:
package tienda; import java.io.*; import java.util.*; public class Tienda { private static HashMap<String, Producto> productos = new HashMap<String, Producto>(); private static BufferedReader entrada= new BufferedReader(new InputStreamReader(System.in)); private static String codigo, nombre, caracteristicas, operador, res; private static int cantidad; private static double precio; private static Ordenador ord; private static Movil mov; private static Producto pro; /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here while (true) { try { do {

17

System.out.println("\n\n--- Operaciones de la Tienda ---"); System.out.println(" 1 - Alta de producto. "); System.out.println(" 2 - Baja de producto. "); System.out.println(" 3 - Consulta de producto. "); System.out.println(" 4 - Venta de producto. "); System.out.println(" 5 - Reponer producto. "); System.out.println(" 6 - Modificar producto. "); System.out.println(" 7 - Salir. "); System.out.println(" Seleccione la operacin: "); res=entrada.readLine(); } while ( !res.equals("1") && !res.equals("2") && !res.equals("3") && !res.equals("4") && !res.equals("5") && !res.equals("6") && !res.equals("7") ); // alta if (res.equals("1")) { alta(); } // baja else if (res.equals("2")) { baja(); } // consulta else if (res.equals("3")) { consulta(); } // venta else if (res.equals("4")) { venta(); } // reponer else if (res.equals("5")) { reponer(); } // modifica else if (res.equals("6")) { modifica(); } // salir else if (res.equals("7")) System.exit(0); } catch( NumberFormatException nfe ) { System.out.println("\nError de formato numrico: " + nfe.toString()); } catch( IOException ioe ) { System.out.println( "\nError de entrada/salida: " + ioe.toString() ); } catch( Exception e ) { // Captura cualquier otra excepcin System.out.println( e.toString() ); } } } // alta private static void alta() throws IOException { System.out.println("\n -- Alta de producto -- "); System.out.println("Introduzca nombre del producto: "); nombre=entrada.readLine(); System.out.println("Introduzca el precio del producto: "); precio=Double.parseDouble(entrada.readLine()); System.out.println("Introduzca cantidad del producto: "); cantidad=Integer.parseInt(entrada.readLine()); do { System.out.println("Introduzca tipo producto (1-ordenador, 2-tfno. mvil): "); res=entrada.readLine(); } while ( !res.equals("1") && !res.equals("2") );

18

if (res.equals("1")) { System.out.println("Introduzca caractersticas ordenador: "); caracteristicas=entrada.readLine(); ord = new Ordenador(nombre, precio, cantidad, caracteristicas); codigo = ord.getCodigo(); productos.put(codigo,ord); System.out.println("\nOrdenador dado de alta: "+ ord.toString()); } else { System.out.println("Introduzca operador del mvil: "); operador=entrada.readLine(); mov = new Movil(nombre, precio, cantidad, operador); codigo = mov.getCodigo(); productos.put(codigo,mov); System.out.println("\nMvil dado de alta: "+ mov.toString()); } } // baja private static void baja() throws IOException { System.out.println("\n -- Baja de producto -- "); System.out.println("Introduzca el cdigo del producto: "); codigo = entrada.readLine(); pro = productos.get(codigo); if (pro != null) { productos.remove(codigo); System.out.println("\nProducto borrado."); } else { System.out.println(" Error: - Producto no encontrado - "); } } // consulta private static void consulta() throws IOException { System.out.println("\n -- Consulta de producto -- "); System.out.println("Introduzca el cdigo del producto: "); codigo = entrada.readLine(); pro = productos.get(codigo); if (pro != null) { System.out.println("\nInformacin del Producto:\n"+pro.toString()); } else { System.out.println(" Error: - Producto no encontrado - "); } } // venta private static void venta() throws IOException { System.out.println("\n -- Venta de producto -- "); System.out.println("Introduzca el cdigo del producto: "); codigo = entrada.readLine(); System.out.println("Introduzca la cantidad: "); cantidad=Integer.parseInt(entrada.readLine()); pro = productos.get(codigo); if (pro != null) { if (pro.restaCantidad(cantidad)) { System.out.println("\nPrecio: "+ pro.getPrecio()*cantidad); System.out.println("Producto comprado: "+ pro.toString()); } else System.out.println("No hay stock."); } else { System.out.println(" Error: - Producto no encontrado - "); } } // reponer private static void reponer() throws IOException { System.out.println("\n -- Reponer producto -- "); System.out.println("Introduzca el cdigo del producto: "); codigo = entrada.readLine(); System.out.println("Introduzca la cantidad: "); cantidad=Integer.parseInt(entrada.readLine()); pro = productos.get(codigo); if (pro != null) { pro.sumaCantidad(cantidad);

19

System.out.println("\nProducto repuesto: "+ pro.toString()); } else { System.out.println(" Error: - Producto no encontrado - "); } } // modifica private static void modifica() throws IOException { System.out.println("\n -- Modificar producto -- "); System.out.println("Introduzca el cdigo del producto: "); codigo = entrada.readLine(); pro = productos.get(codigo); if (pro == null) { System.out.println(" Error: - Producto no encontrado - "); return; } //sacamos el tipo de producto String tipo = pro.getClass().getName(); int op; if (tipo.equals("tienda.Ordenador")) { ord = (tienda.Ordenador) pro; System.out.println("Introduzca el dato a modificar (1-nombre, 2-precio, 3-caractersticas): "); op = Integer.parseInt(entrada.readLine()); switch(op) { case 1: System.out.println("Introduzca nombre del producto: "); nombre=entrada.readLine(); ord.setNombre(nombre); break; case 2: System.out.println("Introduzca el precio del producto: "); precio=Double.parseDouble(entrada.readLine()); ord.setPrecio(precio); break; case 3: System.out.println("Introduzca caractersticas ordenador: "); caracteristicas=entrada.readLine(); ord.setCaracteristicas(caracteristicas); break; default: System.out.println("Opcin incorrecta"); } } else { mov = (tienda.Movil) pro; System.out.println("Introduzca el dato a modificar (1-nombre, 2-precio, 3-operador): "); op = Integer.parseInt(entrada.readLine()); switch(op) { case 1: System.out.println("Introduzca nombre producto: "); nombre=entrada.readLine(); mov.setNombre(nombre); break; case 2: System.out.println("Introduzca el precio del producto: "); precio=Double.parseDouble(entrada.readLine()); mov.setPrecio(precio); break; case 3: System.out.println("Introduzca operador del mvil: "); operador=entrada.readLine(); mov.setOperador(operador); break; default: System.out.println("Opcin incorrecta"); } } System.out.println("\nProducto modificado: "+ pro.toString()); } }

20

También podría gustarte