Examen de Ingeniería en Tecnologías de la Información PDF
Document Details
Uploaded by Deleted User
UTPL
2025
UTPL
Milton Isaac Velásquez Guerrero
Tags
Related
- Guía 6. Windows Forms y Programación Orientada a Objetos PDF
- Programación Orientada a Objetos en Java PDF
- Programación Orientada a Objetos en Java PDF
- Apuntes de Programación Orientada a Objetos (POO) en Java - PDF
- Programación Orientada a Objetos (POO) PDF
- Programación Orientada a Objetos (POO) - Capítulo 1
Summary
Este documento es un examen de Programación Orientada a Objetos (POO) para la asignatura de Ingeniería en Tecnologías de la Información en la UTPL. Incluye diagramas de clases UML, mini especificaciones, implementación con Java y visualizaciones de resultados del tercer bimestre. Es un examen de un curso de programación.
Full Transcript
MODALIDAD ABIERTA Y A DISTANCIA ÁREA TÉCNICA INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Programación Orientada a Objetos Resolución de problemas y casos 1 (APE 1) TERCER BIMESTRE Autor: Milton Isaac Velásquez Guerrero mi...
MODALIDAD ABIERTA Y A DISTANCIA ÁREA TÉCNICA INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Programación Orientada a Objetos Resolución de problemas y casos 1 (APE 1) TERCER BIMESTRE Autor: Milton Isaac Velásquez Guerrero [email protected] Octubre 2024 – febrero 2025 1 INDICE Tabla de contenido Diagrama de clases UML..........................................................................3 Mini especificación..................................................................................4 Implementación/codificación en el lenguaje de programación Java.......10 Visualización de resultados....................................................................14 2 Diagrama de clases UML 3 Mini especificación Clase Campania // se declaran datos o atributos con visibilidad privada 1. Declarar a. medioDivulgacion: Cadena b. fechaCampania: LocalDate c. monto: Real 2. Método Campania(medioDivulgacion:Cadena, fechaCampania:LocalDate, monto:Real) a. medioDivulgacion = medioDivulgacion b. fechaCampania = fechaCampania c. monto = monto 3. Fin método Campania 4. Método obtenerMedio():Cadena a. Return medioDivulgacion 5. Fin Método obtenerMedio 6. Método obtenerFechaCampania():LocalDate a. Return fechaCampania 7. Fin Método obtenerFechaCampania 8. Método obtenerMonto():Real a. Return monto 9. Fin Método obtenerMonto 10. Método establecerMedio(medio:Cadena) a. medioDivulgacion = medio; 11. Fin Método establecerMedio 12. Método establecerFechaCampania(fecha:LocalDate) a. fechaCampania = fecha; 13. Fin Método establecerFechaCampania 14. Método establecerMonto(monto:Real) a. monto = monto; 15. Fin Método establecerMonto 16. Método __str() a. Imprimir “- Medio de Divulgacion: ", medioDivulgacion ", Fecha de la Campania: ", fechaCampania ,", Monto de la Campania: ", monto 17. Fin Método __str Fin Clase Campania 4 Clase Candidato // se declaran datos o atributos con visibilidad privada 1. Declarar a. nombre: Cadena b. partidoPolitico :Cadena c. propuestas: [] Cadena d. campanias: [] Campania e. montoTotal: Real 2. Método Candidato(nombre:Cadena, partidoPolitico:Cadena, propuestas[]: Cadena, campanias[]Campania, montoTotal: Real) a. nombre = nombre b. partidoPolitico = partidoPolitico c. propuestas = propuestas d. campanias = campanias e. montoTotal = montoTotal 3. Fin Método Candidato 4. Método obtenerNombre():Cadena a. Return nombre 5. Fin Método obtenerNombre 6. Método obtenerPartido( ):Cadena a. Return partidoPolitico 7. Fin Método obtenerPartido 8. Método obtenerPropuestas( ): [] Cadena a. Return propuestas 9. Fin Método obtenerPropuestas 10. Método obtenerCampanias( ): [] Campania a. Return campanias 11. Fin Método obtenerCampanias 12. Método obtenerMontoTotal( ): Real a. Return montoTotal 13. Fin Método obtenerMontoTotal 14. Método establecerNombre(nombre:Cadena) a. nombre=nombre 15. Fin método establecerNombre 16. Método establecerPartidoPolitico(partidoPolitico:Cadena) a. partidoPolitico = partidoPolitico 17. Fin método establecerPartidoPolitico 18. Método establecerPropuestas(propuestas []: Cadena ) { a. propuestas = propuestas 19. Fin método establecerPropuestas 20. Método establecerCampanias(campanias: Campania) { a. campanias = campanias 21. Fin Método establecerCampanias // Se asignara por el Consejo para evitar que se modifique 22. Método establecerMontoTotal(montoTotal:Real) { a. montoTotal = montoTotal 23. Fin Método establecerMontoTotal 5 24. Método __str() // Declarar variables locales necesarias a. I: Entero b. Imprimir “Nombre: ", nombre c. Imprimir “Partido: ", partidoPolitico d. Imprimir "Propuestas: " e. for i = 0; i "); 46 opcion = leer.nextInt(); 47 48 switch (opcion) { 49 case 1: 50 System.out.println("**** Revisar Candidato ****"); 51 System.out.println("Ingrese el ID del candidato"); 52 System.out.println("> 2");// Simulacion de entrada 53 candidatos.__str(); 54 break; 55 case 2: 56 System.out.println("**** Editar Candidato ****"); 57 System.out.println("Ingrese el ID del candidato"); 58 System.out.println("> 3");// Simulacion de entrada 59 // conversion de entrada -1 validar si es > 0 60 System.out.println("Nombre: " + candidatos.getNombre() + 61 " Partido: " + candidatos.getPartidoPolitico()); 62 System.out.println("**** Editar Campos del Candidato " + candidatos.getNombre() + " 63 ****"); 64 System.out.println("1. Nombre\n" + 65 "2. Partido Politico"); 10 66 System.out.println("Ingrese la opcion"); 67 System.out.println("> 1");// Simulacion de entrada 68 System.out.println("Ingrese el nuevo nombre"); 69 System.out.println("> Patricio");// Simulacion de entrada 70 candidatos.setNombre("Patricio"); 71 break; 72 case 3: 73 System.out.println("**** Generar Evaluacion e Informe ****"); 74 System.out.println("El " + CNE.getNombreConsejo() + " Evalua a los siguientes 75 candidatos"); 76 System.out.println(CNE.visualizarCandidatos(candidatos)); 77 for (Candidato candidato : candidatos) { 78 System.out.println(CNE.evaluarCandidato(candidato)); 79 } 80 System.out.println("**** Informe en orden descendente de los candidatos ****"); 81 System.out.println(CNE.generarInforme(candidatos)); 82 } 83 84 } while (opcion != 4); 85 System.out.println("**** Gracias por usar el sistema ****"); } } Clase Consejo Tipo Controlador 1 import java.time.LocalDate; 2 3 public class Consejo 4{ 5 private LocalDate[] fechasAutorizadas; 6 private double montoMaximo; 7 private String nombre; 8 9 public Consejo(LocalDate[] fechasAutorizadas, double montoMaximo, String nombre) { 10 this.fechasAutorizadas = fechasAutorizadas; 11 this.montoMaximo = montoMaximo; 12 this.nombre = nombre; 13 } 14 15 public String getNombreConsejo() { 16 return nombre; 17 } 18 19 public String evaluarCandidato(Candidato candidato) { 20 String texto = ""; 21 boolean fechasvalidas = true, montoValido = true; 22 double montoMaximoCandidato = 0; 23 for (Campania campania : candidato.getCampanias()) { 24 // Validar Fechas de Campañas 25 if (!evaluarFechaAutorizada(campania.getFechaCampania())) { 26 fechasvalidas = false; 27 } 28 // Sumar Montos de Campañas 29 montoMaximoCandidato += campania.getMonto(); 30 } 31 // Asignar montoMaximoCandidato a candidato 32 candidato.setMontoTotal(montoMaximoCandidato); 33 // Validar Monto Maximo 34 montoValido = evaluarMontoMaximo(montoMaximoCandidato); 35 // Es apto 36 if (fechasvalidas && montoValido) { 37 return "Para el Candidato" + candidato.getNombre() + " tiene una campania en reglamento"; 38 } 39 // Sancion por fechas excedidas Añade a texto por si cumple ambas condiciones 40 if (!fechasvalidas) { 41 texto += "Sancion para el Candidato " + candidato.getNombre() + " con suspensión temporal" + 42 "de la campaña por cualquier medio\n"; 43 } 44 // Sancion por monto excedido Añade a texto por si cumple ambas condiciones 45 if (!montoValido) { 46 texto += "Sancion para el Candidato " + candidato.getNombre() 47 + " con devolución de todos los recursos gubernamentales \n"; 11 48 } 49 return texto; 50 } 51 52 public Candidato[] ordenarCandidatosPorMonto(Candidato[] candidatos) { 53 boolean intercambio; 54 for (int i = 0; i < candidatos.length - 1; i++) { 55 intercambio = false; 56 for (int j = 0; j < candidatos.length - i - 1 && !intercambio; j++) { 57 if (candidatos[j].getMontoTotal() < candidatos[j + 1].getMontoTotal()) { 58 Candidato temp = candidatos[j]; 59 candidatos[j] = candidatos[j + 1]; 60 candidatos[j + 1] = temp; 61 intercambio = true; // Permite salir si se hizo el intercambio 62 } 63 } 64 } 65 return candidatos; 66 } 67 68 public String visualizarCandidatos(Candidato[] candidatos) { 69 String texto = ""; 70 for (Candidato candidato : candidatos) { 71 texto += "Nombre: " + candidato.getNombre() + "\n"; 72 } 73 return texto; 74 } 75 76 public String generarInforme(Candidato[] candidatos) { 77 int candidatoslenght = candidatos.length; 78 String texto = ""; 79 Candidato[] candidatosOrdenados = this.ordenarCandidatosPorMonto(candidatos); 80 81 for (int i = 0; i < candidatos.length; i++) { 82 texto += "El candidato " + candidatos[i].getNombre() + " posee un monto total de: " 83 + candidatos[i].getMontoTotal() + "\n"; 84 } 85 texto+="Registrando datos de los candidatos se obtiene como conclusion que: \n"; 86 texto += "El candidato con mayor monto es: " + 87 candidatosOrdenados.getNombre() + 88 " con un monto de " 89 + candidatosOrdenados.getMontoTotal() + "\n" + 90 "El candidato con menor monto es: " + candidatosOrdenados[candidatoslenght - 1].getNombre() 91 + " con un monto de " 92 + candidatosOrdenados[candidatoslenght - 1].getMontoTotal() + "\n"; 93 return texto; 94 } 95 96 private boolean evaluarFechaAutorizada(LocalDate fechaCampania) { 97 // Iterar fechas de Campaña 98 for (LocalDate fechaAutorizada : this.fechasAutorizadas) { 99 // Comparar si la fecha es igual que la fecha de autorizacion 100 if (fechaAutorizada.equals(fechaCampania)) { 101 return true; 102 } 103 } 104 return false; 105 } 106 107 private boolean evaluarMontoMaximo(double MontoCandidato) { 108 // El monto maximo es menor o igual 109 if (this.montoMaximo >= MontoCandidato) { 110 return true; 111 } 112 return false; 113 } 114 115 } Clase Campania Tipo Modelo 1 import java.time.LocalDate; 12 2 3 public class Campania { 4 private String medioDivulgacion; 5 private LocalDate fechaCampania; 6 private double monto; 7 8 public Campania(String medioDivulgacion, LocalDate fechaCampania, double monto) { 9 this.medioDivulgacion = medioDivulgacion; 10 this.fechaCampania = fechaCampania; 11 this.monto = monto; 12 } 13 14 public String getMedio() { 15 return medioDivulgacion; 16 } 17 18 public void setMedio(String medioDivulgacion) { 19 this.medioDivulgacion = medioDivulgacion; 20 } 21 22 public LocalDate getFechaCampania() { 23 return fechaCampania; 24 } 25 26 public void setFechaCampania(LocalDate fechaCampania) { 27 this.fechaCampania = fechaCampania; 28 } 29 30 public double getMonto() { 31 return monto; 32 } 33 34 public void setMonto(double monto) { 35 this.monto = monto; 36 } 37 38 public void __str() { 39 40 System.out.println( 41 "- Medio de Divulgacion: " + medioDivulgacion + 42 ", Fecha de la Campania: " + fechaCampania + 43 ", Monto de la Campania: " + monto); 44 } 45 } Clase Candidato Tipo Modelo 1 public class Candidato { 2 private String nombre; 3 private String partidoPolitico; 4 private String propuestas[]; 5 private Campania campanias[]; 6 private double montoTotal; 7 8 public Candidato(String nombre, String partidoPolitico, String[] propuestas, Campania campanias[]) { 9 this.nombre = nombre; 10 this.partidoPolitico = partidoPolitico; 11 this.propuestas = propuestas; 12 this.campanias = campanias; 13 } 14 15 public String getNombre() { 16 return nombre; 17 } 18 19 public void setNombre(String nombre) { 20 this.nombre = nombre; 21 } 22 23 public String getPartidoPolitico() { 24 return partidoPolitico; 25 } 26 13 27 public void setPartidoPolitico(String partidoPolitico) { 28 this.partidoPolitico = partidoPolitico; 29 } 30 31 public String[] getPropuestas() { 32 return propuestas; 33 } 34 35 public void setPropuestas(String[] propuestas) { 36 this.propuestas = propuestas; 37 } 38 39 public Campania[] getCampanias() { 40 return campanias; 41 } 42 43 public void setCampanias(Campania[] campanias) { 44 this.campanias = campanias; 45 } 46 47 public double getMontoTotal() { 48 return montoTotal; 49 } 50 51 // Se asignara por el Consejo para evitar que se modifique 52 public void setMontoTotal(double montoTotal) { 53 this.montoTotal = montoTotal; 54 } 55 56 public void __str() { 57 58 System.out.println("Nombre: " + this.nombre); 59 System.out.println("Partido: " + this.partidoPolitico); 60 System.out.println("Propuestas: "); 61 for (int i = 0; i < this.propuestas.length; i++) { 62 System.out.println(" - " + this.propuestas[i]); 63 } 64 System.out.println("Campanias: "); 65 for (int i = 0; i < this.campanias.length; i++) { 66 this.campanias[i].__str(); 67 } 68 } 69 } Visualización de resultados **** Sistema de Candidatos presidenciales 2025 **** 1. Revisar Candidato 2. Editar Candidatos 3. Generar Informe 4. Salir Ingrese Opcion -->1 **** Revisar Candidato **** Ingrese el ID del candidato > 2 Nombre: Pedro Partido: partido2 Propuestas: - propuesta3 - propuesta4 Campanias: - Medio de Divulgacion: Publicitario, Fecha de la Campania: 2023-10-25, Monto de la Campania: 300.0 - Medio de Divulgacion: Presencial, Fecha de la Campania: 2023-10-27, Monto de la Campania: 200.0 **** Sistema de Candidatos presidenciales 2025 **** 1. Revisar Candidato 2. Editar Candidatos 3. Generar Informe 4. Salir Ingrese Opcion -->2 **** Editar Candidato **** Ingrese el ID del candidato 14 > 3 Nombre: Jose Partido: partido3 **** Editar Campos del Candidato Jose **** 1. Nombre 2. Partido Politico Ingrese la opcion > 1 Ingrese el nuevo nombre > Patricio **** Sistema de Candidatos presidenciales 2025 **** 1. Revisar Candidato 2. Editar Candidatos 3. Generar Informe 4. Salir Ingrese Opcion -->3 **** Generar Evaluacion e Informe **** El CNE Evalua a los siguientes candidatos Nombre: Juan Nombre: Pedro Nombre: Patricio Sancion para el Candidato Juan con devolución de todos los recursos gubernamentales Sancion para el Candidato Pedro con suspensión temporalde la campaña por cualquier medio Para el CandidatoPatricio tiene una campania en reglamento **** Informe en orden descendente de los candidatos **** El candidato Juan posee un monto total de: 1200.0 El candidato Pedro posee un monto total de: 500.0 El candidato Patricio posee un monto total de: 300.0 Registrando datos de los candidatos se obtiene como conclusion que: El candidato con mayor monto es: Juan con un monto de 1200.0 El candidato con menor monto es: Patricio con un monto de 300.0 **** Sistema de Candidatos presidenciales 2025 **** 1. Revisar Candidato 2. Editar Candidatos 3. Generar Informe 4. Salir Ingrese Opcion -->4 **** Gracias por usar el sistema **** 15