Professional Documents
Culture Documents
Ej Poo
Ej Poo
EJERCICIOS
1. Cree una clase llamada Hora que tenga atributos separados de tipo entero para las horas, minutos y
segundos. Un constructor inicializará este dato a 0, y otro lo inicializará a valores fijos (y correctos).
2. La fecha es un dato compuesto en el cual se consideran tres valores enteros: día, mes y año. Diseñe una clase
Fecha que permita manejar este tipo de dato, teniendo en cuenta las siguientes consideraciones:
- El atributo que maneje al valor del día debe tener un rango permitido (1-31, 1-30, 1-28) para el mes al
que pertenece. Además se debe considerar que en los años bisiestos, el mes 2 (febrero) tiene 29 días.
- Deben existir métodos que devuelvan cada uno de los valores (día, mes y año) y además uno que
devuelva el nombre del día al que corresponde la fecha indicada (Ej.: Si la fecha es 29/06/2000 deberá
devolver "Jueves").
- Deben existir métodos que permitan devolver la fecha en los siguientes formatos:
dd/mm/aaaa Ej.: "25/06/1998"
dia de mes literal de año Ej.: "25 de junio de 1998"
- Se debe poder cambiar los valores de la fecha mediante métodos.
- Debe poder determinarse si una fecha es anterior a otra que es pasada como parámetro
- Debe poder determinarse la cantidad de días transcurridos entre esa fecha y otra que es pasada como
parámetro.
3. Crear una clase llamada Punto que tenga dos atributos de tipo real x y y para representar las coordenadas
cartesianas del punto. Además implemente métodos que permitan:
- visualizar las coordenadas del punto, ya sea en coordenadas rectangulares como en coordenadas polares.
- devolver la distancia que existe del origen de coordenadas al punto.
- devolver la distancia que existe desde ese punto a otro punto que es pasado como parámetro (otro objeto
Punto).
- devolver el cuadrante al que pertenece el punto.
- indicar si un punto es igual a otro o no (dos puntos son iguales cuando sus coordenadas son las mismas).
4. Crear una clase llamada Recta que tenga como atributos la pendiente y la ordenada al origen y se cree a
partir de:
- dos puntos (instancias de la clase Punto) diferentes.
- la ordenada al origen y la pendiente.
5. Crear una clase llamada Triangulo que tenga como atributos tres puntos que formen un triángulo y que
representan las esquinas de este.
6. Crear una clase llamada Rectangulo que tenga como atributos dos puntos que representen la esquina
superior izquierda y la esquina inferior derecha del rectángulo y un atributo que indica la inclinación del
rectángulo (por defecto 0 grados).
7. Los números fraccionarios constan de dos números enteros: uno para el numerador y otro para el
denominador. Implemente una clase Fraccion para manejar un número fraccionario y que tenga métodos
que permitan sumar, restar, multiplicar y dividir ese número con otro, como en el ejemplo:
// n1 = 2/3, n2 = 17/6
Note que el valor del número fraccionario siempre debe estar simplificado en su mínima expresión.
8. Un número complejo se parece a un binomio de la siguiente forma: a+bi, donde a y b son números reales. El
valor de i no es conocido, pero si se sabe que i2 es -1. Implemente una clase que permita manejar como dato
a un número complejo. La clase debe tener métodos que permita sumar, restar, multiplicar y dividir al
número con otro. También debe tener métodos que permitan devolver el valor de la parte real (a) y el valor
de la parte imaginaria (b), juntos y por separado.
9. Cree una clase llamada Persona, que permita manejar la información de una persona de la cuál SE CONOCE:
nombre, CI, edad, sexo, fecha de nacimiento (utilice la clase Fecha creada en un anterior ejercicio), lugar
de nacimiento estado civil y dirección. La clase debe manejar eficientemente la información y ocultarla
perfectamente.
10. Escriba un programa que permita manejar una lista (tamaño no mayor a 20) de personas (utilice la clase que
creó en el ejercicio anterior). La lista deberá mostrarse ordenada por nombre y luego por fecha de
nacimiento.
11. Diseñe una jerarquía de clases: Circulo, Cilindro y CilindroHueco. En esencia se puede decir que
un objeto cilindro es un objeto círculo con una altura, y un cilindro hueco es un cilindro con un espacio
hueco dentro de él. La clase Circulo debe tener un dato Radio (tipo real) y unas funciones miembro
PROGRAMACION ORIENTADA A OBJETOS UMSS
2/8 INF-SIS
setRadio, getArea y circunferencia, que obtienen el valor del radio y calculan el área del cilindro y la
longitud de la circunferencia. Para las clases Cilindro y CilindroHueco debe implementar además,
métodos que devuelvan el volumen.
Escriba un programa que permita crear objetos Circulo, Cilindro y CilindroHueco y los vaya
almacenando en un arreglo. Luego se debe recorrer el arreglo, buscando los cilindros huecos con un
volumen V.
Formulas:
Circulo: Longitud: 2π × r
Área: π × r 2
Cilindro: Área: 2π × r × h + 2π × r 2
Volumen: π × r 2 × h
Cilindro Hueco: ( )
Longitud: 2π r 2 − rint2 + 2π × r × h + 2π × h × rint
(
Volumen: π r − 2
rint2 )× h
12. Escriba una clase Menu que permita desplegar un menú de opciones, las cuales son atributos de la clase. El
diseño que presentará el menú desplegado se deja a su consideración. La clase mínimamente debe permitir:
añadir opciones al menú, visualizar el menú y permitir seleccionar una opción.
- Una lista ordenada de los alumnos por orden alfabético de sus nombres
- Una lista ordenada por notas en forma descendente.
- Una lista ordenada en orden alfabético de los estudiantes que obtuvieron notas por arriba del promedio
general de los alumnos.
Además se desea conocer todos los datos de un estudiante X y qué alumnos obtuvieron la misma nota que él
en la materia Y.
2. Se pide hacer un programa para gestionar el préstamo y devolución de libros de una biblioteca.
Se sabe que una biblioteca tiene libros de los cuales se conoce: código, autor, título y temática. Además se
sabe que de cada libro se puede tener varias copias.
Un lector busca un libro determinado; si el libro existe se debe preguntar si se lo desea prestar o no,
verificando previamente que hay ejemplares para prestar el libro. Si no hay ejemplares debe mostrar un
mensaje en este sentido.
Si se decide prestar el libro, debe almacenarse el nombre del lector, su dirección y teléfono, además del
código del libro que se prestó.
3. Existe un juego llamado "Guerritas", que se juega entre un jugador humano y una computadora, en un
tablero cuadriculado de tamaño definido (20*20).
El juego se intercala entre los dos jugadores. Primero el jugador humano que indica su juego desde teclado,
y luego la computadora que lo hace generando números aleatorios.
Realice un programa OO que permita jugar "Guerritas". Resuelva el problema con por lo menos 2 clases.
Al finalizar el juego el programa debe indicar quien ganó el juego y cuantos disparos realizó.
4. Un grupo de 5 chicos y 5 chicas han decidido jugar al juego de "la botella". Para ello todos se reúnen en un
círculo ordenados aleatoriamente y colocan al centro una botella. El juego consiste en hacer girar la botella
sobre su eje; al terminar de dar vueltas la boquilla de la botella termina apuntando a alguien. La persona a la
que apunta la botella tiene dos opciones: beso o verdad. Si se decide por beso, entonces debe darle un beso a
la persona que está en su enfrente y si se decide por verdad debe responder a cualquier pregunta que le haga
esta persona.
Si se decide por verdad, la siguiente vez que le toque tendrá que dar un beso. Si una persona da un beso,
todas las personas tienen que volver a reorganizarse aleatoriamente. Si una persona A se decidió por verdad
y luego las personas se vuelven a reorganizar, la persona A sigue teniendo que dar un beso.
La botella gira por derecha un numero aleatorio (entre 10 y 120) de posiciones hacia la derecha.
Se pide hacer un programa orientado a objetos que simule el juego y que al final (100 juegos) emita un
reporte para cada persona indicando: nombre, sexo, cantidad de besos dados a un hombre, cantidad de besos
dados a una mujer, cantidad de verdades dichas y el total de veces que la boquilla le apuntó.
5. Se tiene un Video Club "La Película", el cual presta videos de películas a sus socios. A los socios les gusta
sacar películas dependiendo de los actores que actúan en ella, para ello el gerente del Video Club desea
obtener los siguientes reportes:
Para poder cumplir con su meta se tiene la siguiente información: De cada vídeo se tiene el código, titulo,
productora (HBO, FOX, etc.), año de producción y los actores que participan en ella. Cabe hacer notar que
una película puede tener más de una copia, pero cada copia (vídeo) tiene un código que lo identifica de
manera única.
Se pide realizar un análisis, clasificación (encontrar clases), modelar (en pseudo OMT) y programar.
Como condición se tiene que por lo menos se debe realizar 3 clases que usted defina completamente de
manera que el programa cumpla totalmente con los requerimientos del problema.
PROGRAMACION ORIENTADA A OBJETOS UMSS
4/8 INF-SIS
Puede asumir, si lo considera necesario, que existe ya una clase adicional (aparte de las tres) hecha que se
llama Fecha, es decir es necesario hacerla.
6. La dirección de extensión de la UMSS administra varios proyectos, los cuales deben ser aprobados o
rechazados, para ello existe una comisión integrada por 5 personas, un presidente y 4 vocales. Para aprobar o
reprobar un proyecto, los vocales realizan una votación, a favor o en contra. En caso de haber empate, el
Presidente interviene votando para que no exista un empate.
Se desea saber si el proyecto X se aprobó o rechazó, con cuántos votos y quiénes votaron a favor, en caso de
aprobarse; o quienes votaron en contra, en caso de rechazarse.
De los integrantes de la comisión se tiene el nombre, teléfono, el voto y si es vocal o presidente. De cada
proyecto, el nombre, la descripción, y el país que respaldará el proyecto.
Esta clínica cuenta con un moderno edificio, atiende varias especialidades, cada especialidad es atendida en
un piso del edificio. Por ejemplo la especialidad de pediatría es atendida en el primer piso, medicina general
en la planta baja, etc.
Cada piso tiene varias salas para internar a los pacientes que lo necesitan.
Cada sala es identificada por un número, tiene un determinado número de camas, de las cuales algunas
pueden estar disponibles u ocupadas, por otro lado en cada sala sólo se permite pacientes de un mismo
género (Femenino, Masculino).
- A la clínica le interesa tener información de la disponibilidad de salas con el número de camas libres en
una especialidad X para un género Y.
- Se requiere saber en que piso están los pacientes de una especialidad X.
- Se requiere saber el número de salas de la especialidad X para el género Y.
Todos los datos que son información del problema son leídos desde teclado. (Resolver en mínimo 3 clases)
8. En las últimas olimpiadas de Sidney se presentaron distintos países, los cuales participaron en distintas
disciplinas, con atletas para cada una de ellas.
Cada país ha agrupado a sus atletas por la disciplina en la que participarán, es así que de cada país se
almacena la siguiente información: código, nombre, disciplinas en la que participará y los atletas de cada
disciplina.
Se tienen por lo menos 30 disciplinas de las cuales interesa mantener el nombre, breve descripción y
cantidad de atletas para la disciplina. De cada atleta nos interesa saber su identificador, nombre, género
(masculino, femenino), edad, estatura y peso.
9. Se desea tener un programa que administre las cartas que maneja una secretaria. De cada carta la secretaria
almacena una referencia, el cuerpo de la carta, la fecha, el destinatario, el remitente y el estado (Recibida,
Despachada).
Del destinatario y del remitente almacena el nombre, la dirección, cargo (por ejemplo Director de Carrera) y
la Institución (por ejemplo UMSS).
Debido a que los requerimientos son muy variados y no tienen un comportamiento establecido, es menester
proveerle de una manera interactiva de utilizar el programa.
Se pude asumir que las clases Fecha y Menu ya están hechas. Resolver utilizando POO.
10. Una gasolinera vende 3 tipos de combustible (gas, gasolina y diesel), de los cuales se lleva el siguiente
registro: código del combustible, cantidad vendida y precio por litro. La empresa, realiza una evaluación
mensual de su situación financiera para lo cual tabula la información resumen de cada día del mes.
Para efectuar toma de decisiones adecuadas y oportunas con respecto al rumbo que dará a su empresa, la
gerencia de dicha empresa quiere contar con un programa OO que efectúe la entrada de datos de todo el
combustible vendido junto con la información necesaria, indicada anteriormente. Sólo necesita hacer este
proceso para un determinado mes.
Además con la información ya obtenida y almacenada el gerente requiere de los siguientes reportes:
11. Se desea realizar un programa que administre la información de varios departamentos, con la finalidad de
tener un conjunto de reportes en la brevedad posible.
12. Se desea administrar la correspondencia de un departamento, de manera que sea fácil ubicar cualquier tipo
de correspondencia. Se sabe que el departamento entre su correspondencia maneja: Cartas, memorándums e
informes. De todos ellos se almacena la referencia que viene a ser una descripción de la carta con dos a cinco
palabras), la fecha, el documento en sí y un estado que indica <D, R> si es despachada o recibida.
En los distintos documentos de acuerdo a su categoría se mantiene distinta información adicional a la básica,
bajo el siguiente detalle.
- Si es carta, se desea tener información del remitente y el destinatario.
- Si es informe se desea tener el título.
- Si es memorándum se desea tener el motivo y el destinatario.
De los remitentes y destinatarios solo se desea tener el nombre como una cadena simple. Por otro lado se
desea tener en forma experimental la información de un mes.
Se desea tener un programa muy interactivo que pueda controlar el flujo de la información y permite
conseguir los distintos reportes.
Se pude asumir que ya se tiene hechas las clases componentes Fecha y Menu.
13. El juego "Bingo" se juega con cartones que tiene 15 casillas con números. Cada cartón tiene números
comprendidos entre 1 y 99 (ambos inclusive) que no se repiten y son escogidos al azar. Los números de los
cartones están ordenados en forma ascendente. Cada cartón tiene un número (código) que lo identifica
unívocamente.
Para realizar el juego se tienen bolillos marcados con cada uno de los números del 1 al 99. Estos bolillos se
introducen en un ánfora y se los va retirando al azar en cada jugada. Los bolillos nunca vuelven a
introducirse al ánfora, lo cual hace suponer que los números no pueden repetirse.
En cada jugada se "canta" el número del bolillo y si este está en alguno de los cartones del juego se lo
"tacha".
Gana quien tiene todos los números de su cartón "tachados".
PROGRAMACION ORIENTADA A OBJETOS UMSS
7/8 INF-SIS
Realice un programa OO que permita generar n cartones de Bingo y permita simular un juego. El programa
debe cantar cada número e indicar el número de cartón que ganó el juego.
NOTA: Debe considerar que en una misma jugada podría llenarse más de un cartón, situación en la cual
habrían varios ganadores.