SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Ingeniería enAnimación Digital
yEfectosVisuales
Asignatura:ProgramaciónOrientadaaObjetos
Profesor:ISC.LizbethHernándezOlán
Unidad4 polimorfismo Fecha: 31/05/17
Practica1 PruebaPolimorfismo Página1de7
No.Control 16081905 NombredelAlumno OropezaGonzálezLizbetJaneth
1.EnunciadodelProblema.
2.CódigoFuente
/* Practica 1
No.Control 16081905 Oropeza González Lizbet Janeth
*/
public class PruebaPolimorfismo
{
public static void main( String args[] )
{
// asigna la referencia a la superclase a una variable de la superclase
EmpleadoPorComision3 empleadoPorComision = new EmpleadoPorComision3(
"Sue", "Jones", "222-22-2222", 10000, .06 );
// asigna la referencia a la subclase a una variable de la subclase
EmpleadoBaseMasComision4 empleadoBaseMasComision = new EmpleadoBaseMasComision4(
"Bob", "Lewis", "333-33-3333", 5000, .04, 300 );
// invoca a toString en un objeto de la superclase, usando una variable de lasuperclase
System.out.printf( "%s %s:nn%snn",
"Llamada a toString de EmpleadoPorComision3 con referencia de superclase ",
"a un objeto de la superclase", empleadoPorComision.toString() );
// invoca a toString en un objeto de la subclase, usando una variable de la subclase
System.out.printf( "%s %s:nn%snn",
"Llamada a toString de EmpleadoBaseMasComision4 con referencia",
"de subclase a un objeto de la subclase", empleadoBaseMasComision.toString() );
// invoca a toString en un objeto de la subclase, usando una variable de lasuperclase
EmpleadoPorComision3 empleadoPorComision2 =
empleadoBaseMasComision;
System.out.printf( "%s %s:nn%sn",
"Llamada a toString de EmpleadoBaseMasComision4 con referencia de superclase",
"a un objeto de la subclase", empleadoPorComision2.toString() );
} // fin de main
}
public abstract class Empleado
{
private String primerNombre;
private String apellidoPaterno;
private String numeroSeguroSocial;
// constructor con tres argumentos
public Empleado( String nombre, String apellido, String nss )
{
primerNombre = nombre;
apellidoPaterno = apellido;
numeroSeguroSocial = nss;
} // fin del constructor de Empleado con tres argumentos
// establece el primer nombre
public void establecerPrimerNombre( String nombre )
{
primerNombre = nombre;
} // fin del método establecerPrimerNombre
// devuelve el primer nombre
public String obtenerPrimerNombre()
{
return primerNombre;
} // fin del método obtenerPrimerNombre
// establece el apellido paterno
public void establecerApellidoPaterno( String apellido )
{
apellidoPaterno = apellido;
} // fin del método establecerApellidoPaterno
// devuelve el apellido paterno
public String obtenerApellidoPaterno()
{
return apellidoPaterno;
} // fin del método obtenerApellidoPaterno
// establece el número de seguro social
public void establecerNumeroSeguroSocial( String nss )
{
numeroSeguroSocial = nss; // debe validar
} // fin del método establecerNumeroSeguroSocial
// devuelve el número de seguro social
public String obtenerNumeroSeguroSocial()
{
return numeroSeguroSocial;
} // fin del método obtenerNumeroSeguroSocial
// devuelve representación String de un objeto Empleado
public String toString()
{
return String.format( "%s %snnumero de seguro social: %s",
obtenerPrimerNombre(), obtenerApellidoPaterno(), obtenerNumeroSeguroSocial() );
} // fin del método toString
// método abstracto sobrescrito por las subclases
public abstract double ingresos(); // aquí no hay implementación
}
public class EmpleadoAsalariado extends Empleado
{
private double salarioSemanal;
// constructor de cuatro argumentos
public EmpleadoAsalariado( String nombre, String apellido, String nss,
double salario )
{
super( nombre, apellido, nss ); // los pasa al constructor de Empleado
establecerSalarioSemanal( salario ); // valida y almacena el salario
} // fin del constructor de EmpleadoAsalariado con cuatro argumentos
public void establecerSalarioSemanal( double salario )
{
salarioSemanal = salario < 0.0 ? 0.0 : salario;
} // fin del método establecerSalarioSemanal
// devuelve el salario
public double obtenerSalarioSemanal()
{
return salarioSemanal;
} // fin del método obtenerSalarioSemanal
// calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado
public double ingresos()
{
return obtenerSalarioSemanal();
} // fin del método ingresos
// devuelve representación String de un objeto EmpleadoAsalariado
public String toString()
{
return String.format( "empleado asalariado: %sn%s: $%,.2f",
super.toString(), "salario semanal", obtenerSalarioSemanal() );
} // fin del método toString
}
public class EmpleadoPorHoras extends Empleado
{
private double sueldo; // sueldo por hora
private double horas; // horas trabajadas por semana
// constructor con cinco argumentos
public EmpleadoPorHoras( String nombre, String apellido, String nss,
double sueldoPorHoras, double horasTrabajadas )
{
super( nombre, apellido, nss );
establecerSueldo( sueldoPorHoras ); // valida y almacena el sueldo por horas
establecerHoras( horasTrabajadas ); // valida y almacena las horas trabajadas
} // fin del constructor de EmpleadoPorHoras con cinco argumentos
// establece el sueldo
public void establecerSueldo( double sueldoPorHoras )
{
sueldo = ( sueldoPorHoras < 0.0 ) ? 0.0 : sueldoPorHoras;
} // fin del método establecerSueldo
// devuelve el sueldo
public double obtenerSueldo()
{
return sueldo;
} // fin del método obtenerSueldo
// establece las horas trabajadas
public void establecerHoras( double horasTrabajadas )
{
horas = ( ( horasTrabajadas >= 0.0 ) && ( horasTrabajadas <= 168.0 ) ) ?
horasTrabajadas : 0.0;
} // fin del método establecerHoras
// devuelve las horas trabajadas
public double obtenerHoras()
{
return horas;
} // fin del método obtenerHoras
// calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado
public double ingresos()
{
if ( obtenerHoras() <= 40 ) // no hay tiempo extra
return obtenerSueldo() * obtenerHoras();
else
return 40 * obtenerSueldo() + ( obtenerHoras() - 40 ) * obtenerSueldo() * 1.5;
} // fin del método ingresos
// devuelve representación String de un objeto EmpleadoPorHoras
public String toString()
{
return String.format( "empleado por horas: %sn%s: $%,.2f; %s: %,.2f",
super.toString(), "sueldo por hora", obtenerSueldo(),
"horas trabajadas", obtenerHoras() );
} // fin del método toString
}
public class EmpleadoPorComision extends Empleado
{
private double ventasBrutas; // ventas totales por semana
private double tarifaComision; // porcentaje de comisión
// constructor con cinco argumentos
public EmpleadoPorComision( String nombre, String apellido, String nss,
double ventas, double tarifa )
{
super( nombre, apellido, nss );
establecerVentasBrutas( ventas );
establecerTarifaComision( tarifa );
} // fin del constructor de EmpleadoPorComision con cinco argumentos
// establece la tarifa de comisión
public void establecerTarifaComision( double tarifa )
{
tarifaComision = ( tarifa > 0.0 && tarifa < 1.0 ) ? tarifa : 0.0;
} // fin del método establecerTarifaComision
// devuelve la tarifa de comisión
public double obtenerTarifaComision()
{
return tarifaComision;
} // fin del método obtenerTarifaComision
// establece el monto de ventas brutas
public void establecerVentasBrutas( double ventas )
{
ventasBrutas = ( ventas < 0.0 ) ? 0.0 : ventas;
} // fin del método establecerVentasBrutas
// devuelve el monto de ventas brutas
public double obtenerVentasBrutas()
{
return ventasBrutas;
} // fin del método obtenerVentasBrutas
// calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado
public double ingresos()
{
return obtenerTarifaComision() * obtenerVentasBrutas();
} // fin del método ingresos
// devuelve representación String de un objeto EmpleadoPorComision
public String toString()
{
return String.format( "%s: %sn%s: $%,.2f; %s: %.2f",
"empleado por comision", super.toString(),
"ventas brutas", obtenerVentasBrutas(),
"tarifa de comision", obtenerTarifaComision() );
} // fin del método toString
}
public class EmpleadoBaseMasComision extends EmpleadoPorComision
{
private double salarioBase; // salario base por semana
// constructor con seis argumentos
public EmpleadoBaseMasComision( String nombre, String apellido,
String nss, double ventas, double tarifa, double salario )
{
super( nombre, apellido, nss, ventas, tarifa );
establecerSalarioBase( salario ); // valida y almacena el salario base
} // fin del constructor de EmpleadoBaseMasComision con seis argumentos
// establece el salario base
public void establecerSalarioBase( double salario )
{
salarioBase = ( salario < 0.0 ) ? 0.0 : salario; // positivo
}
// devuelve el salario base
public double obtenerSalarioBase()
{
return salarioBase;
} // fin del método obtenerSalarioBase
// calcula los ingresos; sobrescribe el método ingresos en EmpleadoPorComision
public double ingresos()
{
return obtenerSalarioBase() + super.ingresos();
} // fin del método ingresos
// devuelve representación String de un objeto EmpleadoBaseMasComision
public String toString()
{
return String.format( "%s %s; %s: $%,.2f",
"con salario base", super.toString(),
"salario base", obtenerSalarioBase() );
} // fin del método toString
}
public class PruebaSistemaNomina
{
public static void main( String args[] )
{
// crea objetos de las subclases
EmpleadoAsalariado empleadoAsalariado =
new EmpleadoAsalariado( "John", "Smith", "111-11-1111", 800.00 );
EmpleadoPorHoras empleadoPorHoras =
new EmpleadoPorHoras( "Karen", "Price", "222-22-2222", 16.75, 40 );
EmpleadoPorComision empleadoPorComision =
new EmpleadoPorComision(
"Sue", "Jones", "333-33-3333", 10000, .06 );
EmpleadoBaseMasComision empleadoBaseMasComision =
new EmpleadoBaseMasComision(
"Bob", "Lewis", "444-44-4444", 5000, .04, 300 );
System.out.println( "Empleados procesados por separado:n" );
System.out.printf( "%sn%s: $%,.2fnn",
empleadoAsalariado, "ingresos", empleadoAsalariado.ingresos() );
System.out.printf( "%sn%s: $%,.2fnn",
empleadoPorHoras, "ingresos", empleadoPorHoras.ingresos() );
System.out.printf( "%sn%s: $%,.2fnn",
empleadoPorComision, "ingresos", empleadoPorComision.ingresos() );
System.out.printf( "%sn%s: $%,.2fnn",
empleadoBaseMasComision,
"ingresos", empleadoBaseMasComision.ingresos() );
// crea un arreglo Empleado de cuatro elementos
Empleado empleados[] = new Empleado[ 4 ];
// inicializa el arreglo con objetos Empleado
empleados[ 0 ] = empleadoAsalariado;
empleados[ 1 ] = empleadoPorHoras;
empleados[ 2 ] = empleadoPorComision;
empleados[ 3 ] = empleadoBaseMasComision;
System.out.println( "Empleados procesados en forma polimorfica:n" );
// procesa en forma genérica a cada elemento en el arreglo de empleados
for ( Empleado empleadoActual : empleados )
{
System.out.println( empleadoActual ); // invoca a toString
// determina si el elemento es un EmpleadoBaseMasComision
if ( empleadoActual instanceof EmpleadoBaseMasComision )
{
// conversión descendente de la referencia de Empleado
// a una referencia de EmpleadoBaseMasComision
EmpleadoBaseMasComision empleado =
( EmpleadoBaseMasComision ) empleadoActual;
double salarioBaseAnterior = empleado.obtenerSalarioBase();
empleado.establecerSalarioBase( 1.10 * salarioBaseAnterior );
System.out.printf(
"el nuevo salario base con 10%% de aumento es : $%,.2fn",
empleado.obtenerSalarioBase() );
} // fin de if
System.out.printf(
"ingresos $%,.2fnn", empleadoActual.ingresos() );
} // fin de for
// obtiene el nombre del tipo de cada objeto en el arreglo de empleados
for ( int j = 0; j < empleados.length; j++ )
System.out.printf( "El empleado %d es un %sn", j,
empleados[ j ].getClass().getName() );
} // fin de main
}
3.Impresióndepantalla,sóloelresultadoobtenido(noimpresionesdecódigo)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

Groovy no es java sin punto y coma v3
Groovy no es java sin punto y coma v3Groovy no es java sin punto y coma v3
Groovy no es java sin punto y coma v3
 
40 Php. Bucles Do While
40 Php. Bucles Do While40 Php. Bucles Do While
40 Php. Bucles Do While
 
Taller Matrices En Java
Taller Matrices En JavaTaller Matrices En Java
Taller Matrices En Java
 
codigos
codigoscodigos
codigos
 
Codigo en visual basic
Codigo en visual basicCodigo en visual basic
Codigo en visual basic
 
Lista enlazada 2 parcial
Lista enlazada 2 parcialLista enlazada 2 parcial
Lista enlazada 2 parcial
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
 
Objetop
ObjetopObjetop
Objetop
 
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Código Java Escrito de Forma Estándar
Código Java Escrito de Forma EstándarCódigo Java Escrito de Forma Estándar
Código Java Escrito de Forma Estándar
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Practicas programacion 1 10
Practicas programacion 1 10Practicas programacion 1 10
Practicas programacion 1 10
 
El apuntador this
El apuntador this El apuntador this
El apuntador this
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Deteccion de Ciclos en c
Deteccion de Ciclos en cDeteccion de Ciclos en c
Deteccion de Ciclos en c
 
Práctica nominas
Práctica nominasPráctica nominas
Práctica nominas
 

Similar a PolimorfismoOO

P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2climancc
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyJose Juan R. Zuñiga
 
Problemas propuestos2.0
Problemas propuestos2.0Problemas propuestos2.0
Problemas propuestos2.0YO Por Que
 
Tips componentes swing_v5
Tips componentes swing_v5Tips componentes swing_v5
Tips componentes swing_v5ggzhack
 
Clase 11 De Septiembre 2009
Clase 11 De Septiembre 2009Clase 11 De Septiembre 2009
Clase 11 De Septiembre 2009mtemarialuisa
 

Similar a PolimorfismoOO (20)

P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2
 
Por pagar
Por pagarPor pagar
Por pagar
 
Patrones utiles para solid
Patrones utiles para solidPatrones utiles para solid
Patrones utiles para solid
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
diapo1.pdf
diapo1.pdfdiapo1.pdf
diapo1.pdf
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Presentacion
PresentacionPresentacion
Presentacion
 
MéTodos
MéTodosMéTodos
MéTodos
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Guia5 java
Guia5 javaGuia5 java
Guia5 java
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
MéTodos
MéTodosMéTodos
MéTodos
 
MéTodos
MéTodosMéTodos
MéTodos
 
Problemas propuestos2.0
Problemas propuestos2.0Problemas propuestos2.0
Problemas propuestos2.0
 
Tarea sesion 08_gottlieb
Tarea sesion 08_gottliebTarea sesion 08_gottlieb
Tarea sesion 08_gottlieb
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Tips componentes swing_v5
Tips componentes swing_v5Tips componentes swing_v5
Tips componentes swing_v5
 
Clase 11 De Septiembre 2009
Clase 11 De Septiembre 2009Clase 11 De Septiembre 2009
Clase 11 De Septiembre 2009
 
MéTodos En Java
MéTodos En JavaMéTodos En Java
MéTodos En Java
 

Más de Lizbet Janeth Oropeza Gonzalez (20)

Conceptos
ConceptosConceptos
Conceptos
 
Resumen
ResumenResumen
Resumen
 
Practicas
PracticasPracticas
Practicas
 
Prac1
Prac1Prac1
Prac1
 
Preguntas
PreguntasPreguntas
Preguntas
 
Dibujo de polimorfismo
Dibujo de polimorfismoDibujo de polimorfismo
Dibujo de polimorfismo
 
Tareas
TareasTareas
Tareas
 
Resumen
ResumenResumen
Resumen
 
Resumen
ResumenResumen
Resumen
 
Prac2
Prac2Prac2
Prac2
 
Prac1
Prac1Prac1
Prac1
 
Apunte6
Apunte6Apunte6
Apunte6
 
Apunte5
Apunte5Apunte5
Apunte5
 
Apunte4
Apunte4Apunte4
Apunte4
 
Apunte3
Apunte3Apunte3
Apunte3
 
Apunte2
Apunte2Apunte2
Apunte2
 
Apunte1
Apunte1Apunte1
Apunte1
 
Preguntas
PreguntasPreguntas
Preguntas
 
This
ThisThis
This
 
Investigacion de los metodos
Investigacion de los metodosInvestigacion de los metodos
Investigacion de los metodos
 

Último

SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 

PolimorfismoOO

  • 1. Ingeniería enAnimación Digital yEfectosVisuales Asignatura:ProgramaciónOrientadaaObjetos Profesor:ISC.LizbethHernándezOlán Unidad4 polimorfismo Fecha: 31/05/17 Practica1 PruebaPolimorfismo Página1de7 No.Control 16081905 NombredelAlumno OropezaGonzálezLizbetJaneth 1.EnunciadodelProblema. 2.CódigoFuente /* Practica 1 No.Control 16081905 Oropeza González Lizbet Janeth */ public class PruebaPolimorfismo { public static void main( String args[] ) { // asigna la referencia a la superclase a una variable de la superclase EmpleadoPorComision3 empleadoPorComision = new EmpleadoPorComision3( "Sue", "Jones", "222-22-2222", 10000, .06 ); // asigna la referencia a la subclase a una variable de la subclase EmpleadoBaseMasComision4 empleadoBaseMasComision = new EmpleadoBaseMasComision4( "Bob", "Lewis", "333-33-3333", 5000, .04, 300 ); // invoca a toString en un objeto de la superclase, usando una variable de lasuperclase System.out.printf( "%s %s:nn%snn", "Llamada a toString de EmpleadoPorComision3 con referencia de superclase ", "a un objeto de la superclase", empleadoPorComision.toString() ); // invoca a toString en un objeto de la subclase, usando una variable de la subclase System.out.printf( "%s %s:nn%snn", "Llamada a toString de EmpleadoBaseMasComision4 con referencia", "de subclase a un objeto de la subclase", empleadoBaseMasComision.toString() ); // invoca a toString en un objeto de la subclase, usando una variable de lasuperclase EmpleadoPorComision3 empleadoPorComision2 = empleadoBaseMasComision; System.out.printf( "%s %s:nn%sn", "Llamada a toString de EmpleadoBaseMasComision4 con referencia de superclase", "a un objeto de la subclase", empleadoPorComision2.toString() ); } // fin de main } public abstract class Empleado { private String primerNombre; private String apellidoPaterno; private String numeroSeguroSocial; // constructor con tres argumentos public Empleado( String nombre, String apellido, String nss ) { primerNombre = nombre; apellidoPaterno = apellido; numeroSeguroSocial = nss; } // fin del constructor de Empleado con tres argumentos
  • 2. // establece el primer nombre public void establecerPrimerNombre( String nombre ) { primerNombre = nombre; } // fin del método establecerPrimerNombre // devuelve el primer nombre public String obtenerPrimerNombre() { return primerNombre; } // fin del método obtenerPrimerNombre // establece el apellido paterno public void establecerApellidoPaterno( String apellido ) { apellidoPaterno = apellido; } // fin del método establecerApellidoPaterno // devuelve el apellido paterno public String obtenerApellidoPaterno() { return apellidoPaterno; } // fin del método obtenerApellidoPaterno // establece el número de seguro social public void establecerNumeroSeguroSocial( String nss ) { numeroSeguroSocial = nss; // debe validar } // fin del método establecerNumeroSeguroSocial // devuelve el número de seguro social public String obtenerNumeroSeguroSocial() { return numeroSeguroSocial; } // fin del método obtenerNumeroSeguroSocial // devuelve representación String de un objeto Empleado public String toString() { return String.format( "%s %snnumero de seguro social: %s", obtenerPrimerNombre(), obtenerApellidoPaterno(), obtenerNumeroSeguroSocial() ); } // fin del método toString // método abstracto sobrescrito por las subclases public abstract double ingresos(); // aquí no hay implementación } public class EmpleadoAsalariado extends Empleado { private double salarioSemanal; // constructor de cuatro argumentos public EmpleadoAsalariado( String nombre, String apellido, String nss, double salario ) { super( nombre, apellido, nss ); // los pasa al constructor de Empleado establecerSalarioSemanal( salario ); // valida y almacena el salario } // fin del constructor de EmpleadoAsalariado con cuatro argumentos public void establecerSalarioSemanal( double salario ) { salarioSemanal = salario < 0.0 ? 0.0 : salario;
  • 3. } // fin del método establecerSalarioSemanal // devuelve el salario public double obtenerSalarioSemanal() { return salarioSemanal; } // fin del método obtenerSalarioSemanal // calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado public double ingresos() { return obtenerSalarioSemanal(); } // fin del método ingresos // devuelve representación String de un objeto EmpleadoAsalariado public String toString() { return String.format( "empleado asalariado: %sn%s: $%,.2f", super.toString(), "salario semanal", obtenerSalarioSemanal() ); } // fin del método toString } public class EmpleadoPorHoras extends Empleado { private double sueldo; // sueldo por hora private double horas; // horas trabajadas por semana // constructor con cinco argumentos public EmpleadoPorHoras( String nombre, String apellido, String nss, double sueldoPorHoras, double horasTrabajadas ) { super( nombre, apellido, nss ); establecerSueldo( sueldoPorHoras ); // valida y almacena el sueldo por horas establecerHoras( horasTrabajadas ); // valida y almacena las horas trabajadas } // fin del constructor de EmpleadoPorHoras con cinco argumentos // establece el sueldo public void establecerSueldo( double sueldoPorHoras ) { sueldo = ( sueldoPorHoras < 0.0 ) ? 0.0 : sueldoPorHoras; } // fin del método establecerSueldo // devuelve el sueldo public double obtenerSueldo() { return sueldo; } // fin del método obtenerSueldo // establece las horas trabajadas public void establecerHoras( double horasTrabajadas ) { horas = ( ( horasTrabajadas >= 0.0 ) && ( horasTrabajadas <= 168.0 ) ) ? horasTrabajadas : 0.0; } // fin del método establecerHoras // devuelve las horas trabajadas public double obtenerHoras() { return horas; } // fin del método obtenerHoras // calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado public double ingresos()
  • 4. { if ( obtenerHoras() <= 40 ) // no hay tiempo extra return obtenerSueldo() * obtenerHoras(); else return 40 * obtenerSueldo() + ( obtenerHoras() - 40 ) * obtenerSueldo() * 1.5; } // fin del método ingresos // devuelve representación String de un objeto EmpleadoPorHoras public String toString() { return String.format( "empleado por horas: %sn%s: $%,.2f; %s: %,.2f", super.toString(), "sueldo por hora", obtenerSueldo(), "horas trabajadas", obtenerHoras() ); } // fin del método toString } public class EmpleadoPorComision extends Empleado { private double ventasBrutas; // ventas totales por semana private double tarifaComision; // porcentaje de comisión // constructor con cinco argumentos public EmpleadoPorComision( String nombre, String apellido, String nss, double ventas, double tarifa ) { super( nombre, apellido, nss ); establecerVentasBrutas( ventas ); establecerTarifaComision( tarifa ); } // fin del constructor de EmpleadoPorComision con cinco argumentos // establece la tarifa de comisión public void establecerTarifaComision( double tarifa ) { tarifaComision = ( tarifa > 0.0 && tarifa < 1.0 ) ? tarifa : 0.0; } // fin del método establecerTarifaComision // devuelve la tarifa de comisión public double obtenerTarifaComision() { return tarifaComision; } // fin del método obtenerTarifaComision // establece el monto de ventas brutas public void establecerVentasBrutas( double ventas ) { ventasBrutas = ( ventas < 0.0 ) ? 0.0 : ventas; } // fin del método establecerVentasBrutas // devuelve el monto de ventas brutas public double obtenerVentasBrutas() { return ventasBrutas; } // fin del método obtenerVentasBrutas // calcula los ingresos; sobrescribe el método abstracto ingresos en Empleado public double ingresos() { return obtenerTarifaComision() * obtenerVentasBrutas(); } // fin del método ingresos // devuelve representación String de un objeto EmpleadoPorComision public String toString() {
  • 5. return String.format( "%s: %sn%s: $%,.2f; %s: %.2f", "empleado por comision", super.toString(), "ventas brutas", obtenerVentasBrutas(), "tarifa de comision", obtenerTarifaComision() ); } // fin del método toString } public class EmpleadoBaseMasComision extends EmpleadoPorComision { private double salarioBase; // salario base por semana // constructor con seis argumentos public EmpleadoBaseMasComision( String nombre, String apellido, String nss, double ventas, double tarifa, double salario ) { super( nombre, apellido, nss, ventas, tarifa ); establecerSalarioBase( salario ); // valida y almacena el salario base } // fin del constructor de EmpleadoBaseMasComision con seis argumentos // establece el salario base public void establecerSalarioBase( double salario ) { salarioBase = ( salario < 0.0 ) ? 0.0 : salario; // positivo } // devuelve el salario base public double obtenerSalarioBase() { return salarioBase; } // fin del método obtenerSalarioBase // calcula los ingresos; sobrescribe el método ingresos en EmpleadoPorComision public double ingresos() { return obtenerSalarioBase() + super.ingresos(); } // fin del método ingresos // devuelve representación String de un objeto EmpleadoBaseMasComision public String toString() { return String.format( "%s %s; %s: $%,.2f", "con salario base", super.toString(), "salario base", obtenerSalarioBase() ); } // fin del método toString } public class PruebaSistemaNomina { public static void main( String args[] ) { // crea objetos de las subclases EmpleadoAsalariado empleadoAsalariado = new EmpleadoAsalariado( "John", "Smith", "111-11-1111", 800.00 ); EmpleadoPorHoras empleadoPorHoras = new EmpleadoPorHoras( "Karen", "Price", "222-22-2222", 16.75, 40 ); EmpleadoPorComision empleadoPorComision = new EmpleadoPorComision( "Sue", "Jones", "333-33-3333", 10000, .06 ); EmpleadoBaseMasComision empleadoBaseMasComision = new EmpleadoBaseMasComision( "Bob", "Lewis", "444-44-4444", 5000, .04, 300 ); System.out.println( "Empleados procesados por separado:n" );
  • 6. System.out.printf( "%sn%s: $%,.2fnn", empleadoAsalariado, "ingresos", empleadoAsalariado.ingresos() ); System.out.printf( "%sn%s: $%,.2fnn", empleadoPorHoras, "ingresos", empleadoPorHoras.ingresos() ); System.out.printf( "%sn%s: $%,.2fnn", empleadoPorComision, "ingresos", empleadoPorComision.ingresos() ); System.out.printf( "%sn%s: $%,.2fnn", empleadoBaseMasComision, "ingresos", empleadoBaseMasComision.ingresos() ); // crea un arreglo Empleado de cuatro elementos Empleado empleados[] = new Empleado[ 4 ]; // inicializa el arreglo con objetos Empleado empleados[ 0 ] = empleadoAsalariado; empleados[ 1 ] = empleadoPorHoras; empleados[ 2 ] = empleadoPorComision; empleados[ 3 ] = empleadoBaseMasComision; System.out.println( "Empleados procesados en forma polimorfica:n" ); // procesa en forma genérica a cada elemento en el arreglo de empleados for ( Empleado empleadoActual : empleados ) { System.out.println( empleadoActual ); // invoca a toString // determina si el elemento es un EmpleadoBaseMasComision if ( empleadoActual instanceof EmpleadoBaseMasComision ) { // conversión descendente de la referencia de Empleado // a una referencia de EmpleadoBaseMasComision EmpleadoBaseMasComision empleado = ( EmpleadoBaseMasComision ) empleadoActual; double salarioBaseAnterior = empleado.obtenerSalarioBase(); empleado.establecerSalarioBase( 1.10 * salarioBaseAnterior ); System.out.printf( "el nuevo salario base con 10%% de aumento es : $%,.2fn", empleado.obtenerSalarioBase() ); } // fin de if System.out.printf( "ingresos $%,.2fnn", empleadoActual.ingresos() ); } // fin de for // obtiene el nombre del tipo de cada objeto en el arreglo de empleados for ( int j = 0; j < empleados.length; j++ ) System.out.printf( "El empleado %d es un %sn", j, empleados[ j ].getClass().getName() ); } // fin de main }