Universidad Autónoma “Juan Misael Saracho”
Facultad De Ciencias y Tecnologías
Carrera: Ingeniería Informática
PROGRAMACIÓN ORIENTADA A OBJETOS EN SMALLTALK / GEMSTONE/S
INSTRUCCIONES GENERALES
1. Los ejercicios deben implementarse en Smalltalk para GemStone/S.
2. Al finalizar, probar el código en Workspace y mostrar la salida en Transcript.
3. Presentación:
o Documento impreso en hojas tamaño oficio con carátula y capturas de ejecución correcta.
o El estilo y diseño queda a criterio personal (“Mientras mejor presentado, mejor valorado”).
EJERCICIOS PROPUESTOS
Ejercicio 1 – Gestión de Vehículos (Herencia y Polimorfismo)
• Crear una superclase Vehiculo con atributos: marca, modelo, año.
• Crear subclases:
o Auto con atributo puertas.
o Moto con atributo cilindrada.
• Implementar en Vehiculo un método descripcion que muestre la información básica.
• En cada subclase sobrescribir descripcion para incluir sus atributos específicos.
• Crear varios objetos de Auto y Moto, guardarlos en un array y recorrerlo mostrando en Transcript las
descripciones (polimorfismo).
Ejercicio 2 – Sistema de Empleados y Nómina
• Crear la clase Empleado con atributos: nombre, salarioBase.
• Crear dos subclases:
o EmpleadoTiempoCompleto con atributo bono.
o EmpleadoMedioTiempo con atributo horasTrabajadas.
• Implementar en Empleado un método calcularSalario.
• Cada subclase sobrescribe este método:
o Tiempo Completo: salarioBase + bono.
o Medio Tiempo: horasTrabajadas * salarioBase.
• Probar creando varios empleados de cada tipo y mostrar en Transcript el salario calculado para cada uno.
Ejercicio 3 – Biblioteca Digital
• Crear la clase Material con atributos: titulo, autor, año.
• Crear subclases:
o Libro con atributo paginas.
o Revista con atributo numeroEdicion.
• Implementar en Material un método mostrarInfo.
• Cada subclase sobrescribe este método para mostrar también su atributo específico.
• Crear una colección con libros y revistas, recorrerla e imprimir en Transcript la información de cada
material (aplicando polimorfismo).
Ejercicio 4 – Reservas de Hotel
• Crear la clase Reserva con atributos: codigo, cliente, dias.
• Crear dos subclases:
o ReservaSimple con tarifa fija por día (ejemplo: 200 Bs).
o ReservaPremium con tarifa por día más un servicio adicional (ejemplo: 200 Bs + 50 Bs por día).
• Implementar el método calcularCosto.
• Probar creando distintos tipos de reservas y mostrar en Transcript el costo total de cada una.
Ejercicio 5 – Polimorfismo en Métodos de Pago
• Crear una superclase Pago con atributo: monto.
• Crear subclases:
o PagoEfectivo.
o PagoTarjeta con atributo comision.
• Implementar un método procesarPago.
o En PagoEfectivo: mostrar en Transcript el monto pagado.
o En PagoTarjeta: mostrar en Transcript el monto más la comisión.
• Crear un array con diferentes tipos de pagos y recorrerlo enviando procesarPago a cada objeto.
Materia: Base De Datos III DIS-324 Docente: José Santos Aguirre Gareca
Universidad Autónoma “Juan Misael Saracho”
Facultad De Ciencias y Tecnologías
Carrera: Ingeniería Informática
📑 EJERCICIO 6: ELABORE UNA BDOO PARA UN SISTEMA DE VOTACIÓN ELECTRÓNICA
📌 Contexto. - Bolivia requiere un sistema de votación electrónica que permita registrar electores,
candidatos y votos de manera segura, confiable y persistente. La implementación se realizará en
GemStone/S, utilizando los principios de la orientada a objetos (clases, objetos, herencia, polimorfismo y
encapsulamiento).
INSTRUCCIONES DE DESARROLLO
a) Definir clases principales
1. Crear la clase Persona con atributos: nombre, ci.
2. Crear dos subclases que hereden de Persona:
o Elector con atributo distrito.
o Candidato con atributos: partido, propuesta.
3. Sobrescribir el método mostrarInfo en cada subclase para que muestre sus datos específicos
(polimorfismo).
b) Implementar la clase Voto
1. Crear la clase Voto con atributos:
o elector (referencia a un objeto Elector).
o candidato (referencia a un objeto Candidato).
o fechaHora.
2. Implementar un método mostrarDetalle que muestre en Transcript:
“Elector: [nombre] – Candidato: [nombre] – Partido: [partido] – Fecha: [fechaHora]”
c) Base de datos orientada a objetos
1. Definir una colección AllElectores para almacenar los electores.
2. Definir una colección AllCandidatos para almacenar los candidatos.
3. Definir una colección AllVotos para almacenar todos los votos emitidos.
4. Guardar las colecciones en UserGlobals para persistencia.
d) Reglas del sistema de votación
1. Un Elector puede emitir solo un voto.
2. Un Voto debe estar relacionado tanto a un Elector como a un Candidato.
3. Implementar un método en Elector llamado emitirVoto: que reciba un Candidato como parámetro y cree
un objeto Voto.
o Si ya existe un voto asociado al elector, debe mostrar en Transcript: “El elector ya votó”.
e) Reportes en Transcript
Implementar métodos para generar los siguientes reportes:
1. Lista de todos los electores registrados.
2. Lista de todos los candidatos registrados.
3. Total de votos emitidos.
4. Cantidad de votos por candidato (ejemplo: “Candidato X – Partido Y – 120 votos”).
5. Determinar el ganador (candidato con mayor número de votos).
f) Prueba en Workspace
1. Crear al menos 5 electores y 3 candidatos.
2. Simular el proceso de votación (cada elector emite su voto).
3. Mostrar en Transcript:
o Los votos emitidos.
o El conteo final por candidato.
o El ganador de la elección.
Materia: Base De Datos III DIS-324 Docente: José Santos Aguirre Gareca