Boletín POO
Boletín POO
Boletín POO
Ejercicio 1.
Crea la clase Fracción. Los atributos serán numerador y denominador. Y algunos de los
métodos pueden ser invierte, simplifica, multiplica, divide, etc.
Ejercicio 2.
Crea la clase Tiempo con los métodos suma y resta. Los objetos de la clase Tiempo son
intervalos de tiempo y se crean de la forma Tiempo t = new Tiempo(1, 20, 30) donde los
parámetros que se le pasan al constructor son las horas, los minutos y los segundos respectivamente.
Crea el método toString() para ver los intervalos de tiempo de la forma 10h 35m 5s.
Si se suman por ejemplo 30m 40s y 35m 20s el resultado debería ser 1h 6m 0s. Realiza un
programa de prueba para comprobar que la clase funciona bien.
Ejercicio 3.
Defina una clase que sirva para representar el estado de una bombilla (encendido o
apagado). Defina, asimismo, dos métodos que permitan encender (on) y apagar (off) la luz de la
bombilla.
Para probarlo, cree un método main que cree un objeto de la clase definida, que haga uso de
los métodos previamente definidos y vaya mostrando el estado de la bombilla.
Ejercicio 4.
Defina una clase 'Monedero' que permita gestionar la cantidad de dinero de que una persona
dispone en un momento dado. La clase deberá tener un constructor que permitirá crear un monedero
con una cantidad de dinero inicial y deberá definir un método para meter dinero en el monedero,
otro para sacarlo y finalmente, otro para consultar el disponible; solo podrá conocerse la cantidad de
dinero del monedero a través de este último método. Por supuesto, no se podrá sacar más dinero del
que haya en un momento dado en el monedero.
Para probar el funcionamiento de la clase, escriba un método 'main' con una serie de
instrucciones que hagan uso de los métodos definidos.
Ejercicio 5.
Se quiere definir una clase que permita controlar un sintonizador digital de emisoras FM;
concretamente, lo que se desea es dotar al controlador de una interfaz que permita subir (up) o bajar
(down) la frecuencia (en saltos de 0.5 MHz) y mostrar la frecuencia sintonizada en un momento
dado (display).
Supondremos que el rango de frecuencias a manejar oscila entre los 80 Mhz y los 108 MHz
y que al inicio, el controlador sintoniza a 80 MHz. Si durante una operación de subida o bajada se
sobrepasa uno de los dos límites, la frecuencia sintonizada debe pasar a ser la del extremo contrario.
Queremos modelar una casa con muchas bombillas, de forma que cada bombilla se puede
encender o apagar individualmente. Para ello haremos una clase Bombilla con una variable privada
que almacene si está encendida o apagada, así como un método que nos diga si una bombilla
concreta está encendida.
Además queremos poner un interruptor general de la luz, tal que si saltan los fusibles, todas
las bombillas quedan apagadas. Cuando el fusible se repara, las bombillas vuelven a estar
encendidas o apagadas, según estuvieran antes del percance.
Para probar el funcionamiento de la clase, escriba un método 'main' con una serie de
instrucciones que hagan uso de los métodos definidos.
Se desea representar el conjunto de bombillas que hay en una casa, así como la potencia
consumida en un momento dado por todas ellas. Para ello, defina una clase 'Bombilla' que tenga al
menos dos atributos:
Uno para identificarla y otro que indique la potencia que consume; también, deberá crear
dos métodos que permitan encender y apagar la bombilla. La clase deberá disponer de un
mecanismo que permita obtener la potencia consumida por el conjunto de bombillas que estén
encendidas en un determinado instante.
Crea una clase Votacion que permita llevar el control de unas elecciones entre distintos
candidatos. De cada candidato se necesita saber el nombre y el número de votos que lleva.
Realiza la clase con los atributos necesarios y los métodos que permitan conocer la cantidad
de votos de cada candidato, así como el nombre del candidato más votado y cuantos votos ha
conseguido. Crear la clase PruebaVotacion donde se creen varios candidatos, se simule unas
pequeñas elecciones y se muestre el resultado.
Crea la clase Pizza con los atributos y métodos necesarios. Sobre cada pizza se necesita
saber el tamaño - mediana o familiar - el tipo - margarita, cuatro quesos o funghi - y su estado -
pedida o servida.
La clase debe almacenar información sobre el número total de pizzas que se han pedido y
que se han servido. Siempre que se crea una pizza nueva, su estado es “pedida”.
El siguiente código del programa principal debe dar la salida que se muestra:
Se desea llevar un control del estado de una cuenta corriente; la cuenta corriente está
caracterizada por su saldo y sobre ella se pueden realizar tres tipos de operaciones:
Suponga que la cuenta inicialmente tiene un saldo de cero. Escriba una clase
CuentaCorriente que implemente la funcionalidad descrita; escriba un pequeño programa principal
para probar su funcionamiento.
Ejercicio 11 (Relación entre objetos)
Defina una clase punto que tendrá dos atributos, de tipo real, x e y, que representarán las
coordenadas del punto dentro del plano. Defina un método que tenga como argumento otro objeto
de la clase punto y que calcule la distancia entre los dos puntos.
Para probar esta funcionalidad, escriba un método main en el que se creen dos puntos, el
primero de los cuales deberá tener las coordenadas 100.0, 200.0 y el segundo deberá tener las
coordenadas 400.0, 800.0 y calcule e imprima la distancia entre ambos:
distancia (p1,p2) = raizcuadrada(cuadrado(x2-x1)+cuadrado(y2-y1)) deberia salir 670.82
Crea una clase 'AlarmaDeTemperatura' cuyos objetos activen un objeto 'Timbre' cuando la
temperatura llegue a un cierto valor. Para probar la alarma simule en el Main un 'Sensor' que utilice
la clase 'AlarmaDeTemperatura' y simule variaciones de temperatura y cambios en la temperatura
de alarma. La clase 'Timbre' mostrará un mensaje por pantalla cuando se active y otro cuando se
desactive.
Crea una clase cubo que contenga información sobre la capacidad y su contenido actual en
litros. Se podrá consultar tanto la capacidad como el contenido en cualquier momento.
Dota a la clase de la capacidad de verter el contenido de un cubo en otro (hay que tener en
cuenta si el contenido del cubo origen cabe en el cubo destino, si no cabe, se verterá solo el
contenido que quepa). Hacer una clase principal para probar el funcionamiento con un par de cubos.
Crear una clase PruebaVotacion2 que permita crear un array de 5 candidatos de la clase
Votacion creada en el ejercicio 8. Usar un bucle para generar los objetos pidiendo por teclado el
nombre del candidato.
Utiliza otro bucle para generar de manera aleatoria 100 votos y finalmente recorrer el array
para mostrar los votos de todos los candidatos, así como el candidato ganador.
Defina una clase que permita almacenar datos sobre los planetas que forman parte del
sistema solar. Algunos atributos que puede ser interesante recoger son: la masa del cuerpo, su
diámetro, el período de rotación sobre el propio eje, período de traslación alrededor del sol,
distancia media a recorrida en su órbita, ...
Defina un método, que de un determinado planeta del sistema solar, imprima toda la
información de sobre el mismo.
A continuación crea una clase PruebaPlaneta2 que permita crear un array de 5 objetos de la
clase Planeta. Usa un bucle para generar los objetos pidiendo por teclado el nombre del planeta, y
asignar de manera aleatoria valores para la órbita (kilómetros) y traslación (días). Finalmente
recorrer el array para mostrar los datos de todos los planetas.
Se desea representar los coches que hay en un concesionario, de cada coche se almacenara
matricula, modelo, motor, precio y color. Se desea saber en todo momento la cantidad de dinero
invertida en el concesionario que será la suma del valor de todos los coches.
Se desea disponer de un método para insertar un nuevo coche aportando todos los datos del
mismo, y otro para obtener los datos de un coche (recibe un entero correspondiente a la posición en
el array estático y devuelve un objeto coche). También se tendrá un método para listar por pantalla
todos los coches del concesionario mostrando todos sus datos.
Realiza una clase con Main para probar todos los métodos de la clase Coche.
a) Mejora la opción “Nuevo disco” de tal forma que cuando se llenen todas las posiciones
del array, el programa muestre un mensaje de error. No se permitirá introducir los datos de ningún
disco hasta que no se borre alguno de la lista.
b) Mejora la opción “Borrar” de tal forma que se verifique que el código introducido por el
usuario existe.
c) Modifica el programa de tal forma que el código del disco sea único, es decir que no se
pueda repetir.
d) Crea un submenú dentro dentro de “Listado” de tal forma que exista un listado completo,
un listado por autor (todos los discos que ha publicado un determinado autor), un listado por género
(todos los discos de un género determinado) y un listado de discos cuya duración esté en un rango
determinado por el usuario.
Ejercicio 18 (Array de objetos + Propiedad estática).