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
Personaque tenga los atributosnombre,edad, y los métodos abstractostrabajar()ymostrarInformacion().La clase
Empleadodebe heredar dePersonay agregar los atributossalarioypuesto.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
gettersysetters.Crea una subclase de
EmpleadollamadaEmpleadoPorHoraque 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
EmpleadoPorHorapueda 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