Está en la página 1de 11

ESCUELA ACADEMICO PROFESIONAL DE

INGENIERIA DE SISTEMAS

GUÍA DE LABORATORIO N° 07
Escuela Profesional: Ingeniería de Sistemas. Asignatura: Programación Orientada a Objetos
Ciclo y Turno: Semestre Académico: 2020 - 2
Docente: Ing. Yuri A. Pomachagua Basualdo Fecha: 27/05/2020

Sesión 07: Implementación de programas usando Clases Abstractas

INTRODUCCION
El polimorfismo es una característica de los objetos, y permite obtener muchas múltiples
formas con la finalidad de acceder a los diferentes métodos y atributos a través de una
solo declaración. El tratamiento de excepciones permite manejar los errores generados
en tempo de ejecución.

I. OBJETIVOS
1. Codificar, compilar y ejecutar los ejercicios de aplicación (Clases Abstractas)
2. Conocer la estructura de un programa visual en Java.

II. EQUIPOS Y MATERIALES


Computadora personal.
Programa NetBeans IDE 8.2 correctamente instalado.

III. METODOLOGIA Y ACTIVIDADES


 Codificar los ejercicios desarrollados en el aula.
 Presentar avances y ejecución de cada uno de los ejercicios al docente o jefe de
práctica encargado para la calificación correspondiente.

IV. IMPORTANTE
 Antes de comenzar a manipular el NetBeans 8.2 crear siempre, una carpeta, donde
se guardarán todas las aplicaciones realizadas en el presente laboratorio con el
nombre Laboratorio-06.

Página 1 de 11
Realizar los siguientes programas con Programación Orientada a Objetos utilizando clases
abstractas

PREGUNTA_1
EJERCICIO.- En una empresa de viajes se requiere obtener lo que pagar el pasajero hacia diversos
destinos y tiene la siguiente política de negocios.
CATEGORIAS
DESTINO CLASE A 1.3*COSTO_BASE
CLASE B COSTO_BASE
DESTINO COSTO_BASE
AREQUIPA 150 DESCUENTOS
IQUITOS 250 CONVENIO 8%*COSTO_BASE
HUANCAYO 100 JUBILADO 12%*COSTO_BASE
MILITAR 50%*COSTO_BASE

abstract class Destino {


protected String nomdes;
public Destino(String nomdes)
{this.nomdes=nomdes;
}
public String getDestino()
{
return nomdes;
}
abstract public double mover();
public double getCostoBase()
{if (nomdes.equalsIgnoreCase("AREQUIPA"))
return 150;
else if (nomdes.equalsIgnoreCase("IQUITOS"))
return 250;

Página 2 de 11
else if (nomdes.equalsIgnoreCase("HUANCAYO"))
return 100;
return 0;
}
}
class Categorias extends Destino{
protected int clase;
public Categorias(String nomdes,int clase)
{
super(nomdes);
this.clase=clase;
}

public double mover()


{ if(clase==0)
return 1.3*getCostoBase();
else
return getCostoBase();
}
}
class Descuentos extends Destino {
int tipodes;
public Descuentos(String nomdes,int tipodes)
{ super(nomdes);
this.tipodes=tipodes;
}

public double mover()


{ if(tipodes==0)
return 0.08*getCostoBase();
else if(tipodes==1)
return 0.12*getCostoBase();
else if(tipodes==2)
return 0.5*getCostoBase();
return 0;
}
}

Página 3 de 11
String destino;double pagodest,pagocategorizado,pagodes;
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
destino=jComboBox1.getSelectedItem().toString();
Categorias cat =new Categorias(destino,1);

jLabel6.setText(String.valueOf(cat.getCostoBase()));

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


// TODO add your handling code here:
int clase=jComboBox2.getSelectedIndex();
System.out.println("Destino "+destino);
Categorias cat=new Categorias(destino,clase);
jLabel7.setText(String.valueOf(cat.mover())) ;
pagocategorizado=cat.mover();
}

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


// TODO add your handling code here:
int desc=jComboBox3.getSelectedIndex();
Descuentos des=new Descuentos(destino,desc);
jLabel8.setText(String.valueOf(des.mover())) ;
pagodes=des.mover();
}

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


// TODO add your handling code here:
double pago;
pago=pagocategorizado-pagodes;
jLabel10.setText(String.valueOf(pago));
}

Página 4 de 11
PREGUNTA_2

En una tienda se ingresa


 Los códigos de los materiales de construcción, Material de Construcción
 La cantidad de material solicitado, el nombre de la tienda Nombre PrecioBase
 Los precios se obtienen del siguiente cuadro E001 Fierro(unidad) 35
 Calcular el importe ,descuento, pago neto para cada venta E002 Ladrillo(unidad) 5
E003 Arena(kilo) 200

TIENDA A TIENDA B
AumentoPrecioBase(%) AumentoPrecioBase(%)
Fierro 3% Fierro 8%
Ladrillo 5% Ladrillo 9%
Arena 7% Arena 10%
Si la cantidad de vendida es más de Si la cantidad de vendida es más
100 tiene los siguientes descuentos de 200 tiene los siguientes
DescuentodelImporte(%) descuentos
Fierro 5% DescuentodelImporte(%)
Ladrillo 7% Fierro 6%
Arena 8% Ladrillo 8%
Arena 8%

Mostrar los códigos de


 La Clase padre y sus métodos abstractos
 La subclase(TIENDA A) y la implementación de los métodos abstractos
 La subclase(TIENDA B) y la implementación de los métodos abstractos
 El formulario con sus datos de ingreso y salida

SOLUCION:
public abstract class Tienda {
protected int material;

Página 5 de 11
protected int cantidad;
protected int tipo;

public Tienda(int material, int cantidad, int tipo) {


this.material = material;
this.cantidad = cantidad;
this.tipo = tipo;
}

public int getMaterial() {


return material;
}
public void setMaterial(int material) {
this.material = material;
}
public int getCantidad() {
return cantidad;
}
public void setCantidad(int cantidad) {
this.cantidad = cantidad;
}
public int getTipo() {
return tipo;
}
public void setTipo(int tipo) {
this.tipo = tipo;
}
public abstract double PrecioBaseAumentado();
public abstract double Importe();
public abstract double DescuentoImporte();
public abstract double Neto();

public double PrecioBase()


{
double pb=0;
switch(getMaterial())
{
case 0: pb=35;break;
case 1: pb=5;break;
case 2: pb=200;break;
}
return pb;

Página 6 de 11
}
}
TiendaA
package javaejemplopractica;
public class TiendaA extends Tienda {
public TiendaA(int material, int cantidad, int tipo) {
super(material, cantidad, tipo);
}
@Override
public double PrecioBaseAumentado() {
double pa=0;
switch(getMaterial())
{
case 0: pa=PrecioBase()*1.03;
break;
case 1: pa=PrecioBase()*1.05;break;
case 2: pa=PrecioBase()+(PrecioBase()*0.07);break;
default:pa=0;
}
System.out.println("El valor de material es en tienda a "+material);
System.out.println("El valor de precio aum "+pa);
return pa;
}

@Override
public double Importe() {
double imp=0;
imp=getCantidad()*PrecioBaseAumentado();
return imp;
}

@Override
public double DescuentoImporte()
{

Página 7 de 11
double des=0;
if(getCantidad()>100)
switch(getMaterial())
{
case 0: des=Importe()*0.05;break;
case 1: des=Importe()*0.07;break;
case 2: des=Importe()*0.08;break;
}
else des=0;
return des;
}

@Override
public double Neto() {
double des=0;
des=Importe()-DescuentoImporte();
return des;
}
}

TiendaB
package javaejemplopractica;
public class TiendaB extends Tienda{

public TiendaB(int material, int cantidad, int tipo) {


super(material, cantidad, tipo);
}
@Override
public double PrecioBaseAumentado() {
double pa=0;
switch(getTipo())
{
case 0: pa=PrecioBase()+(PrecioBase()*0.08);break;
case 1: pa=PrecioBase()+(PrecioBase()*0.09);break;
case 2: pa=PrecioBase()+(PrecioBase()*0.10);break;
}
return pa;
}

Página 8 de 11
@Override
public double Importe() {
double imp=0;
imp=getCantidad()*PrecioBaseAumentado();
return imp;
}

@Override
public double DescuentoImporte()
{
double des=0;
if(getCantidad()>200)
switch(getMaterial())
{
case 0: des=Importe()*0.06;break;
case 1: des=Importe()*0.08;break;
case 2: des=Importe()*0.08;break;
}
else des=0;
return des;
}

@Override
public double Neto() {
double des=0;
des=Importe()-DescuentoImporte();
return des;
}
}
FORMULARIO

Página 9 de 11
private void jbtnAplicarActionPerformed(java.awt.event.ActionEvent evt) {
int material= jcmbMaterial.getSelectedIndex();
int cantidad= Integer.parseInt(jtxtCantidad.getText());
int tipo= jcmbTipo.getSelectedIndex();
System.out.println("material "+material);
switch(tipo)
{case 0:
{ TiendaA a= new TiendaA(material, cantidad, 1);
jLabel10.setText(String.valueOf(a.PrecioBase()));
jLabel11.setText(String.valueOf(a.PrecioBaseAumentado()));
jLabel12.setText(String.valueOf(a.Importe()));
jLabel13.setText(String.valueOf(a.DescuentoImporte()));
jLabel14.setText(String.valueOf(a.Neto())); break;
}
case 1:
{
TiendaB b= new TiendaB(material, cantidad, 2);
jLabel10.setText(String.valueOf(b.PrecioBase()));
jLabel11.setText(String.valueOf(b.PrecioBaseAumentado()));
jLabel12.setText(String.valueOf(b.Importe()));

Página 10 de 11
jLabel13.setText(String.valueOf(b.DescuentoImporte()));
jLabel14.setText(String.valueOf(b.Neto()));break;
}
}
}

PREGUNTA_3

Escribir un programa para administrar los datos del personal de la empresa UTP.Del Empleado se
conoce: número de DNI, nombre, apellidos y año de ingreso.

Existen dos categorías de personal: el personal con salario fijo y el personal a comisión. Los empleados
con salario fijo tienen un sueldo básico y un porcentaje adicional en función del número de años que
llevan: menos de dos años salario base, de 2 a 3 años: 7% más; de 4 a 7 años: 10% más; de 8 a 15 años:
17% más y más de 15 años: 22% más. Los empleados a comisión tienen un salario mínimo que será
constante para todos los empleados de este tipo e igual a S/ 910.00, un número de clientes captados y
un monto por cada cliente captado. El salario se obtiene multiplicando los clientes captados por el
monto por cliente, si el salario por los clientes captados no llega al salario mínimo, cobrará esta
cantidad.

Se contará con una clase padre Empleado de la cual no se podrán crear objetos y de la que heredan las
clases EAsalariado y EComision. En todas las clases debe haber un constructor con parámetros para
todos los atributos y otro vacío. En todos deben crearse los getters and setters correspondientes.
Empleado contará con un método imprimir() y un método obtenerSalario().

Crear una clase Principal donde los dos primeros se crearán utilizando el constructor con todos los
parámetros y los dos últimos con el constructor vacío y utilizando los setters adecuados.

Página 11 de 11

También podría gustarte