V2#
Punto 1: Aplicación de los 4 Pilares de la Programación Orientada a Objetos (POO) [30 pts]#
Crea una clase llamada «Empleado» que represente a un empleado de una empresa. La clase debe implementar los cuatro pilares de la programación orientada a objetos: abstracción, encapsulamiento, herencia, y polimorfismo. Debes cumplir los siguientes requisitos:
Crea una interfaz llamada
Persona
que tenga los atributosnombre
,edad
, y los métodos abstractostrabajar()
ymostrarInformacion()
.La clase
Empleado
debe heredar dePersona
y agregar los atributossalario
ypuesto
.Implementa los métodos necesarios para aplicar encapsulamiento, asegurando que los atributos sean privados y se puedan acceder o modificar a través de métodos
getters
ysetters
.Crea una subclase de
Empleado
llamadaEmpleadoPorHora
que sobrescriba el métodotrabajar()
y calcule el salario basado en horas trabajadas. Este método debe pedir las horas y estas deben pasarse por su argumento.Implementa polimorfismo mostrando un caso donde un objeto de tipo
EmpleadoPorHora
pueda ser tratado como unaPersona
, es decir, verifica que el métodotrabajar()
funciona de diferente modo.
Requisitos adicionales:
Agrega un constructor en cada clase.
Instancia objetos en el método
main()
y muestra ejemplos de polimorfismo.
Ejemplo de salida esperada:
Empleado: Carlos, Edad: 30, Salario: 3000. Puesto: Desarrollador.
Empleado por hora: Ana, Edad: 25, Salario: 1200 por 40 horas trabajadas.
interface Persona{
String nombre = "Sebas";
int edad = 27;
public abstract void trabajar();
public abstract void mostrarInformacion();
}
class Empleado implements Persona{
private double salario;
private String puesto;
public Empleado(String puesto, double salario){
this.puesto = puesto;
this.salario = salario;
}
public void setSalario(double salario){
this.salario = salario;
}
public double getSalario(){
return salario;
}
public void setPuesto(String puesto){
this.puesto = puesto;
}
public String getPuesto(){
return puesto;
}
@Override
public void trabajar(){
System.out.println("Trabajando");
};
@Override
public void mostrarInformacion(){
System.out.println("Empleado: %s, Edad: %d, Salario: %.1f Puesto: %s.%n".formatted(nombre, edad, getSalario(), getPuesto()));
};
}
class EmpleadoPorHora extends Empleado{
public EmpleadoPorHora(String puesto, double salario){
super(puesto, salario);
}
public void trabajar(int horas){
double precio_hora = 50000;
System.out.println("El precio de %d horas trbajadas es %.1f. La hora cuesta %.1f".formatted(horas, precio_hora*horas, precio_hora));
};
}
public static void main(String[] args){
Empleado sebas = new Empleado("Profesor", 10000000);
sebas.trabajar();
sebas.mostrarInformacion();
System.out.println("");
// las varibles de la interfaz que son finales no se pueden modificar
EmpleadoPorHora sebas_horas = new EmpleadoPorHora("Profesor", 20000000);
sebas_horas.mostrarInformacion();
sebas_horas.trabajar();
sebas_horas.trabajar(15);
// un mismo metodo puede hacer cosas diferentes
}
main(null);
Trabajando
Empleado: Sebas, Edad: 27, Salario: 10000000.0 Puesto: Profesor.
Empleado: Sebas, Edad: 27, Salario: 20000000.0 Puesto: Profesor.
Trabajando
El precio de 15 horas trbajadas es 750000.0. La hora cuesta 50000.0
Punto 2: Manipulación de Cadenas [30 pts]#
Escribe un programa en Java que permita a un usuario ingresar una frase y, a partir de ella, realice las siguientes operaciones:
Invertir la frase: Implementa un método que invierta la cadena de entrada.
Validar si la frase es un palíndromo: Crea un método que determine si la frase (ignorando espacios y mayúsculas/minúsculas) es un palíndromo.
El programa debe interactuar con el usuario y mostrar los resultados para cada una de las operaciones. Usa la clase String
y sus métodos asociados para manipular las cadenas.
Ejemplo de entrada:
Ingresa una frase: Anilina ama a anilina
Ejemplo de salida esperada:
Frase invertida: anilina a ama anilina
Es un palíndromo: Sí
public String Invertir(String frase){
String frase_invertida = "";
for(int i = frase.length()-1; i >= 0; i--){
frase_invertida += frase.charAt(i);
}
return frase_invertida;
}
public String RemoverEspacios(String cadena){
String cadena_sin_espacios = "";
for(int i=0; i<cadena.length(); i++){
if(cadena.charAt(i) != ' '){
cadena_sin_espacios += cadena.charAt(i);
}
}
return cadena_sin_espacios;
}
public String EsPalindrome(String frase){
String frase_invertida = RemoverEspacios(Invertir(frase));
if(frase_invertida.equalsIgnoreCase(RemoverEspacios(frase))){
return "Sí";
}
else{
return "No";
}
}
import java.util.Scanner;
System.out.print("Ingresa una frase: ");
// Scanner myObj = new Scanner(System.in);
// String frase = myObj.nextLine(); // Read user input
String frase = "Anilina ama anilina";
System.out.println(frase+"\n");
System.out.println("Frase invertida: "+Invertir(frase));
System.out.println("Es un palíndrome: "+EsPalindrome(frase));
// Anilina ama anilina
Ingresa una frase:
Anilina ama anilina
Frase invertida: anilina ama anilinA
Es un palíndrome: Sí
Punto 3: Arreglos Bidimensionales y Búsquedas [40 pts]#
Tienes que diseñar un sistema para gestionar las calificaciones de un grupo de estudiantes. Se requiere que crees un programa en Java que permita lo siguiente:
Declara un arreglo bidimensional de enteros donde las filas representen estudiantes y las columnas representen calificaciones en tres asignaturas.
int[][] calificaciones = { {85, 78, 92}, // EstudianteA {76, 85, 83}, // EstudianteB {90, 88, 91}, // EstudianteC {70, 60, 75} // EstudianteD }; // otra forma del código int[] EstudianteA = {85, 78, 92}; int[] EstudianteB = {76, 85, 83}; int[] EstudianteC = {90, 88, 91}; int[] EstudianteD = {70, 60, 75};
Implementa un método que permita calcular el promedio de cada estudiante.
Implementa un método de búsqueda que permita buscar una calificación específica y retornar la posición (fila, columna) en la que se encuentra dicha calificación. Si no se encuentra, el método debe indicarlo.
Agrega un menú que permita al usuario:
Calcular el promedio de todos los estudiantes.
Buscar una calificación específica en el sistema.
Ejemplo de salida esperada:
Menú:
1. Calcular promedio por estudiante
2. Buscar calificación
Opción: 1
Promedio de Estudiante 1: 85
Promedio de Estudiante 2: 81
Promedio de Estudiante 3: 89.6
Promedio de Estudiante 4: 68.3
int[] EstudianteA = {85, 78, 92};
int[] EstudianteB = {76, 85, 83};
int[] EstudianteC = {90, 88, 91};
int[] EstudianteD = {70, 60, 75};
public double Promedio(int[] Estudiante){
double promedio = 0;
for(int i = 0; i<Estudiante.length; i++){
promedio += Estudiante[i];
}
return promedio/Estudiante.length;
}
public void BuscarCalificaion(int calificacion){
int flag = 0;
for(int i = 0; i<EstudianteA.length; i++){
if(EstudianteA[i] == calificacion){
System.out.println(" Estudiante A con calificacion "+calificacion);
flag += 1;
}
else if(EstudianteB[i] == calificacion){
System.out.println(" Estudiante B con calificacion "+calificacion);
flag += 1;
}
else if(EstudianteC[i] == calificacion){
System.out.println("Estudiante C con calificacion "+calificacion);
flag += 1;
}
else if(EstudianteD[i] == calificacion){
System.out.println(" Estudiante D con calificacion "+calificacion);
flag += 1;
}
}
if(flag==0){
System.out.println(" No se encontro la calificacion "+calificacion+".");
}
}
import java.util.Scanner;
public void Menu(){
System.out.print("""
Menú:
1. Calcular promedio por estudiante
2. Buscar calificación
""");
// System.out.println("Opción: ")
// Scanner myObj = new Scanner(System.in);
// int opcion = myObj.nextInt(); // Read user input
int opcion = 1;
System.out.println("Opción: "+opcion);
if(opcion==1){
System.out.println("""
Promedio de Estudiante A: %.2f
Promedio de Estudiante B: %.2f
Promedio de Estudiante C: %.2f
Promedio de Estudiante D: %.2f
""".formatted(Promedio(EstudianteA), Promedio(EstudianteB),
Promedio(EstudianteC), Promedio(EstudianteD)));
}
else if(opcion==2){
System.out.print(" ¿Qué calificación quieres buscar?: ");
//int calificacion = myObj.nextInt(); // Read user input
int calificacion = 95;
System.out.print(calificacion+"\n");
BuscarCalificaion(calificacion);
}
}
Menu()
Menú:
1. Calcular promedio por estudiante
2. Buscar calificación
Opción: 1
Promedio de Estudiante A: 85.00
Promedio de Estudiante B: 81.33
Promedio de Estudiante C: 89.67
Promedio de Estudiante D: 68.33