Está en la página 1de 3

UNIVERSIDAD DE MALAGA

DPTO. DE LENGUAJES Y C. DE LA COMPUTACION


E.T.S. DE INGENIERIA INFORMATICA
PROGRAMACIN ORIENTADA A OBJETOS

PROBLEMAS ADICIONALES
TEMA 2
1. Disea una clase NumeroRacional que represente una fraccin con numerador y
denominador enteros. Por tanto tendr dos variables de instancia (numerador y
denominador) para almacenar dichos valores (ambas declaradas como private). Adems
tendr dos constructores: uno sin argumentos (NumeroRacional()), que construye la
fraccin 0/1 y otro con dos argumentos (NumeroRacional(int num, int den)) que
construye la fraccin num/den. El denominador no puede ser 0, as que se lanzar una
excepcin (RuntimeException) si se pasa como segundo argumento un 0.
La clase ofrecer mtodos (public) para:
- consultar el numerador (int getNumerador())
- consultar el denominador (int getDenominador())
- representar con una cadena de caracteres el nmero racional (String toString()) . Si
el denominador es 1, en la representacin slo aparecer el numerador. Nota: para este caso
puedes utilizar el mtodo toString de la clase Integer para convertir un entero a una
cadena de caracteres (String Integer.toString(int)).
- sumar dos fracciones (NumeroRacional suma(NumeroRacional num))
- restar dos fracciones (NumeroRacional resta(NumeroRacional num))
- multiplicar dos fracciones (NumeroRacional mult(NumeroRacional num))
- dividir dos fracciones (NumeroRacional div(NumeroRacional num))
Los objetos de esta clase se deben mantener en su forma reducida. Por ejemplo la fraccin 3/6
debera almacenarse como 1/2. Tambin se debe evitar tener un denominador negativo. As, la
fraccin 2/-3 se almacenar como -2/3, y la fraccin -2/-3 se almacenar como 2/3.
Para probar esta clase, construye otra clase PruebaRacionales que contenga el mtodo
main para realizar diversas operaciones con nmeros racionales.

Nota: si necesitas calcular el mximo comn divisor de dos nmeros (enteros positivos),
puedes consultar los ejercicios resueltos de la relacin 2 de la asignatura Fundamentos de la
Programacin. Y si necesitas calcular el mnimo comn mltiplo, debes saber que: mcd(a,b) *
mcm(a,b) = a*b. Si necesitas calcular el valor absoluto de un nmero entero puedes usar el
mtodo Math.abs(int) que devuelve el parmetro en positivo.

E.T.S. de Ingeniera Informtica Dpto de Lenguajes y C. de la Computacin


Programacin Orientada a Objetos Problemas Adicionales Tema 2 2
2. Disea una clase Coleccion que represente una coleccin de nmeros enteros. Tendr dos
variables de instancia (ambas declaradas como private): un array de enteros y un contador
del nmero de casillas ocupadas del array, es decir, del nmero de elementos que contiene la
coleccin. Adems tendr dos constructores: uno sin argumentos (Coleccion()), que crea
una coleccin con un array vaco de tamao TAM (una constante de clase private definida e
inicializada a 10) y otro con un argumento (Coleccion(int tam)) que crea una coleccin
con un array vaco de tamao tam. Se lanzar una excepcin (RuntimeException) si el
tamao no es positivo.
La clase ofrecer mtodos (public) para:
- consultar el nmero de elementos de la coleccin (int getNumElem())
- consultar el elemento que ocupa una determinada posicin i del array (int
getElem(int i)).
- comprobar si la coleccin est vaca (boolean sinElementos())
- vaciar una coleccin (void vacia())
- aadir un elemento a la coleccin (void aade(int elemen)). Si el array que
almacena la coleccin est lleno, se doblar su capacidad y se meter el nuevo elemento.
- eliminar un elemento de la coleccin (void elimina(int elem)). Si el elemento no
est, no se hace nada.
- comprobar si la coleccin contiene un elemento (boolean contiene(int elem))
- representar con una cadena de caracteres la coleccin (String toString()). La
representacin consistir en la secuencia de nmeros que forman la coleccin, separados
por comas y encerrados entre corchetes.
Para probar esta clase, construye otra clase PruebaColeccion que contenga el mtodo
main para realizar diversas operaciones con una coleccin de enteros.
3. Disea una clase Conjunto que represente un conjunto de nmeros enteros. Esta clase debe
heredar de la clase Coleccion diseada en el problema 2. No aade ninguna variable de
instancia ms. Tendr dos constructores: uno sin argumentos (Conjunto()), que crea un
conjunto con un array vaco de tamao TAM (una constante de clase definida en Coleccion)
y otro con un argumento (Conjunto(int tam)) que crea un conjunto con un array vaco
de tamao tam. Se lanzar una excepcin (RuntimeException) si el tamao no es
positivo.
La clase ofrecer mtodos (public) para:
- realizar la unin de dos conjuntos (Conjunto union(Conjunto c)). Devuelve un
nuevo conjunto que es la unin del conjunto c y del conjunto receptor del mensaje union.
- realizar la interseccin de dos conjuntos (Conjunto interseccion(Conjunto c)).
Devuelve un nuevo conjunto que es la interseccin del conjunto c y del conjunto receptor del
mensaje interseccion.

Adems se deber redefinir el mtodo aade de Coleccion para evitar almacenar
elementos repetidos.
Para probar esta clase, construye otra clase PruebaConjunto que contenga el mtodo main
para realizar diversas operaciones con un conjunto de enteros.

E.T.S. de Ingeniera Informtica Dpto de Lenguajes y C. de la Computacin


Programacin Orientada a Objetos Problemas Adicionales Tema 2 3
4. Disea una clase ColeccionOrdenada que represente una coleccin ordenada (de menor a
mayor) de nmeros enteros. Esta clase debe heredar de la clase Coleccion diseada en el
problema 2 (la declaracin de las variables de instancia de la clase Coleccion se debe
modificar para hacer que sean protected en lugar de private). Tendr dos constructores
equivalentes a los de la clase Coleccion. Adems habr que redefinir los mtodos aade,
elimina y contiene para tener en cuenta la ordenacin de los elementos.
Para probar esta clase, construye otra clase PruebaColeccionOrdenada que contenga el
mtodo main para realizar diversas operaciones con una coleccin ordenada de enteros.

También podría gustarte