PROGRAMACIÓN ORIENTADA A OBJETOS OBJETIVOS

Anuncio
PROGRAMACIÓN ORIENTADA A OBJETOS
BOLETIN 5: CRITERIOS DE ORDENACION
Curso: 2011/12
Versión: 1.0.0
OBJETIVOS
Profundizar en el diseño de tipos.
Trabajar con criterios de ordenación: natural y adicional.
Ejercicio 1: Criterio de orden natural
Paciente y Medico
Criterio de orden natural: en ambos casos el criterio de orden natural entre dos
objetos de tipo Paciente o Medico, será el establecido por apellidos, nombre y DNI. Es
decir, el establecido en el tipo Persona. ¿Debe realizar algún cambio?
Gen
Criterio de orden natural: el criterio de orden natural entre dos objetos de tipo Gen es
el establecido por el orden alfabético de sus nombres. En caso de igualdad de nombres
se ordenará alfabéticamente por el nombre de las especies a las que pertenecen. Realice
los cambios que estime oportuno en la interfaz Gen y en la clase GenImpl.
Realice una clase Test con el nombre TestBoletin5 en donde se declare e inicialice
varios objetos de tipo Gen; y se muestre por pantalla el resultado de comparar según el
criterio de orden natural dichos objetos.
Ejercicio 2: Criterio de orden adicional
Gen
Añada dos criterios de orden alternativo para objetos de tipo Gen:
Según el cromosoma donde se ubique dicho gen.
Según el número de nucleótidos.
Ejercicio 3: SortedSet
En la clase TestSortedSet realice los siguientes pasos:
a. Copie el siguiente código tras el método principal o método main de la clase
TestSortedSet. Este código se supone que construye el repositorio de genes que
constituye GenBank.
public static List<Gen> construyeGenBank(){
Gen g1 = new GenImpl("BDH1", 5, "Homo Sapiens");
Gen g2 = new GenImpl("LGALS8", 5, "Homo Sapiens");
Gen g3 = new GenImpl("PAOX", 5, "Homo Sapiens");
Gen g4 = new GenImpl("ZNF324B", 1, "Homo Sapiens");
Gen g5 = new GenImpl("LYZL4", 0, "Homo Sapiens");
List<Gen> res = new ArrayList<Gen>();
res.add(g1); res.add(g2); res.add(g3);
res.add(g4); res.add(g5);
return res;
}
Boletín 5: Criterios de ordenación
b. En el método principal invoque el método construyeGenBank y asigne su
resultado a un objeto previamente declarado.
c. Muestre por pantalla la lista de genes creada.
d. Vuelque el contenido de la lista en un conjunto ordenado, de manera, que los
genes queden almacenados en dicho conjunto según el nombre. Es decir,
siguiendo el criterio de orden natural. ¿Cómo realiza esta operación? Una opción
es recorriendo uno a uno los elementos de la lista y añadiéndolos al conjunto.
¿Se le ocurre otra opción? Piense en el constructor a partir de otro objeto de tipo
Collection.
e. Muestre el conjunto obtenido y observe cómo está ordenado.
f. Cree un conjunto ordenado según aparición en el cromosoma.
g. Muestre el conjunto ordenado según el cromosoma en donde se encuentra dicho
Gen. ¿Qué observa? Según cómo esté implementado el comparador, el conjunto
ordenado según el cromosoma donde se encuentra el gen aparecerán menos
genes de los esperados. ¿Cómo solucionaría este punto?
h. Modifique el comparador de objetos de tipo Gen según el cromosoma en que se
encuentra el gen para evitar esta problemática. Para ello, en caso de estar los
genes parámetro de entrada en el mismo cromosoma desempate según el orden
natural de dichos genes.
i. Haga el comparador por número de nucleótidos anterior consistente con la
igualdad. (size)
Ejercicio 4: Clase de utilidad para genes
El objetivo de este ejercicio es crear métodos estáticos en una clase utilidad de nombre
Genes. Como trabajo previo, realice un constructor que nos facilite la construcción de
objetos de tipo Gen, para ello el constructor recibirá una cadena de caracteres para
inicializar la cadena de nucleótidos (a partir de la cadena construya la lista) además del
nombre, número de cromosoma y nombre de la especie.
Cree una clase de utilidad para el tipo Gen, de forma que usando métodos del tipo List y
la clase Collections, responda a las siguientes cuestiones:
a. Dado un conjunto de genes, devuelva el Gen de menor número de nucleótidos.
b. Dados un gen y dos caracteres, sustituya en los nucleótidos del gen un carácter
por el otro.
c. Dado un gen y un entero n devuelve una cadena con los últimos n nucleótidos.
d. Dado un gen y un nucleótido devuelve el número de veces que está presente en
el gen.
e. Dado un gen y una cadena de caracteres s devuelve la posición de los
nucleótidos donde aparece s por primera vez.
f. Dado un gen intercambiar la primera y última posición de su lista de
nucleótidos.
Realice una clase TestGenes en donde se compruebe la corrección de los métodos
anteriores.
2
Boletín 5: Criterios de ordenación
Ejercicio 5: Clases genéricas
Cree el siguiente tipo:
Intervalo: de tipo T que es Comparable<T>.
Propiedades:
- Límite superior: de tipo T, consultable.
- Límite inferior: de tipo T, consultable.
Métodos:
- Método de nombre esInterior, que dado un objeto de tipo T devuelve cierto si el
objeto se encuentra dentro del intervalo.
- Método de nombre estaIncluido, que dado un objeto de tipo Intervalo<T>
devuelve el valor de verdadero si el intervalo de entrada está incluido en el
intervalo que invoca el método.
Criterio de igualdad: dos intervalos serán iguales si tienen los mismos valores para los
límites inferiores y superiores.
Representación como cadena: la representación del valor de un objeto de tipo
Intervalo será “[limite_inferior, limite_superior]”.
Representación como un número entero: coherente con el criterio de igualdad, es
decir, basado en su límite inferior y superior.
En la clase que implemente la interfaz, el constructor lanzará la excepción
IllegalArgumentException si el límite inferior tiene un valor mayor al límite superior.
Finalmente, cree una clase con nombre TestIntervalo donde se instancie el tipo y se
muestre en consola el resultado de invocar sus métodos.
3
Descargar