Prueba Diagnóstica de Competencias
en Programación Orientada a Objetos

Instrumento 3 · Variable 1 & 3 · Componente cuantitativo · 60 minutos · 100 puntos
Instrucciones generales Esta prueba evalúa tres dimensiones de competencia en programación: (A) manejo de sintaxis básica, (B) capacidad de depuración autónoma, y (C) comprensión de arquitectura de software por capas. Responde de forma individual y sin consultar herramientas de IA. Tiempo: 60 minutos. Puntaje total: 100 puntos.
IDENTIFICACIÓNDatos del participante
DIMENSIÓN A · 30 puntosManejo de sintaxis básica en programación orientada a objetos
10 pts
A1 · Sintaxis

Definición de clase con atributos y constructor

Escribe en Java una clase llamada Producto con atributos id (entero), nombre (String) y precio (double). Incluye: constructor con todos los parámetros, métodos getters y un método toString().

10 pts
A2 · Sintaxis

Herencia y polimorfismo

Crea una subclase ProductoDigital que agregue el atributo urlDescarga (String). Sobreescribe el método toString().

10 pts
A3 · Sintaxis

Uso de colecciones y ciclos

Escribe un fragmento que: (1) cree un ArrayList<Producto>, (2) agregue tres productos, y (3) recorra la lista imprimiendo nombre y precio de cada uno.

DIMENSIÓN B · 30 puntosCapacidad de depuración autónoma
10 pts
B1 · Depuración

Identificación de errores de compilación

El siguiente código contiene 3 errores de sintaxis. Identifícalos, explica por qué es un error y escribe la corrección.

public class Calculadora { private int resultado public Calculadora() { resultado = 0; } public void sumar(int a, int b) { resultado = a + b } public int getResultado(int x) { return resultado; } }
10 pts
B2 · Depuración

Identificación de errores lógicos en tiempo de ejecución

El siguiente método compila sin errores, pero produce un resultado incorrecto. Describe qué resultado produce, cuál debería ser el correcto, y cuál es la causa del error lógico.

public int calcularPromedio(int[] numeros) { int suma = 0; for (int i = 0; i < numeros.length; i++) { suma = numeros[i]; // ← observa esta línea } return suma / numeros.length; }
10 pts
B3 · Depuración

Lectura e interpretación de un stack trace

Exception in thread "main" java.lang.NullPointerException at ServicioCliente.buscarPorId(ServicioCliente.java:34) at Main.main(Main.java:12)
DIMENSIÓN C · 40 puntosComprensión de arquitectura de software por capas
10 pts
C1 · Arquitectura

Identificación de capas en un sistema existente

Indica a qué capa arquitectónica pertenece cada clase: Presentación (UI), Lógica de Negocio (BLL) o Acceso a Datos (DAL/DAO).

Clase y descripción Capa
ClienteDAO — conecta a la base de datos y ejecuta consultas SQL para gestionar clientes
FormularioRegistro — muestra campos de texto al usuario y captura sus datos de entrada
ServicioFactura — calcula impuestos, aplica descuentos y valida los datos de una factura
PanelPrincipal — menú de navegación que redirige al usuario entre módulos del sistema
ProductoRepository — realiza operaciones CRUD sobre la tabla Productos en MySQL
15 pts
C2 · Arquitectura

Análisis de violaciones a la separación de capas

El siguiente fragmento viola el principio de separación de responsabilidades. Identifica al menos dos violaciones, explica por qué son un problema y propone cómo corregirlas.

public class FormularioPedido { // clase de la capa UI public void guardarPedido(String producto, int cantidad) { // Validación de negocio directamente en la UI if (cantidad <= 0) { System.out.println("Cantidad inválida"); return; } // Conexión a BD directamente desde la UI Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/tienda", "root", "1234"); PreparedStatement ps = conn.prepareStatement( "INSERT INTO pedidos VALUES (?,?)"); ps.setString(1, producto); ps.setInt(2, cantidad); ps.executeUpdate(); } }
15 pts
C3 · Arquitectura

Diseño de un sistema simple con arquitectura por capas

Diseña la estructura de clases para un sistema de registro de estudiantes que permita: guardar un nuevo estudiante, buscar por cédula, y mostrar la lista de estudiantes registrados.

Prueba diseñada por Bryan Vega Rondón (2026). Variable 1 y Variable 3. Aplicable como diagnóstico pre-intervención y como medición post-intervención. La rúbrica de corrección se entrega en documento separado al evaluador.