Tipos List y Set

Anuncio
PROGRAMACIÓ
ORIE
TADA A OBJETOS
TIPOS LIST Y SET
Curso: 2011/12
Versión: 1.0.0
OBJETIVOS
•
•
Profundizar en el uso de las interfaces List y Set.
Profundizar en el uso del for extendido.
OPERACIONES SOBRE LISTAS Y CONJUNTOS
GenBank (http://www.ncbi.nlm.nih.gov/nuccore) es la base de datos de referencia para
secuencias de genes. En ella se puede consultar información del gen relativa a su
secuencia de nucleótidos, la función que desarrolla el gen, enfermedades con las que se
le relaciona y publicaciones científicas que avalan esta información. GenBank es
mantenida y actualizada por un consorcio formado por el Centro Nacional para
Información Biotecnológica de EEUU (NCBI), el Instituto Europeo de Biología
Molecular (EMBL) y el Banco de Datos de ADN de Japón (DDBJ). La información de
GenBank reside en los servidores de NCBI y es actualizada diariamente con la
información recibida en cada una de las otras dos instituciones del consorcio.
EJERCICIO 1. TIPO GEN
Cree el tipo gen, interfaz Gen y clase GenImpl de implementación, atendiendo a las
siguientes definiciones:
Gen
Propiedades
- Nombre, de tipo cadena de caracteres, consultable
- Cromosoma, de tipo entero, consultable
- Especie, de tipo cadena de caracteres, consultable
- Nucleótidos, lista de caracteres, consultable
Constructores: uno por defecto y otro que recibe nombre, cromosoma y especie
Criterio de igualdad: dos genes son iguales si su nombre y su especie son iguales
Representación como cadena: [Nombre, Especie]
Implemente un método del tipo Gen que permita mutarlo, es decir, recibe una posición
y un carácter y sustituye el nucleótido que ocupa esa posición. Además cree otro
método que dado un entero, devuelva el nucleótido de esa posición. Lance y capture una
excepción si no existe la posición dada.
EJERCICIO 2. CLASE DE UTILIDAD GENBANK
A continuación vamos a crear una clase de utilidad GenBank que contendrá una serie de
métodos estáticos para la correcta actualización y sincronización de su contenido. Los
métodos son los siguientes
1. Implemente el método actualiza que recibe tres parámetros: un conjunto de
genes con los genes actualmente contenidos en GenBank, y dos conjuntos
Tipos List y Set
conteniendo los genes actualizados para EMBL y JJDB. El método devuelve el
nuevo conjunto para GenBank actualizado con todos los nuevos genes
reportados a cada uno de los miembros del consorcio.
2. Implemente el método repetidos que recibe tres conjuntos de genes, uno por
cada miembro del consorcio, y devuelve un conjunto con aquellos genes que
están repetidos en los tres conjuntos.
3. Implemente el método genesCromosoma que recibe el conjunto de genes de
GenBank y un número de cromosoma y devuelve una lista con aquellos genes
que pertenecen al cromosoma especificado. Tenga en cuenta que el protozoario
Aulacantha, con 1600 cromosomas en sus células, es la especie con el mayor
número de cromosomas, por lo que si se recibe un valor de cromosoma que no
esté
entre
1
y
1600
se
debe
lanzar
una
excepción
CromosomaNoValidoExcepcion que deberá ser creada.
4. Implemente el método genesCromosomaPosicion que recibe la lista con
genes creada en el apartado anterior, y un conjunto de genes, y devuelve un
conjunto con las posiciones que ocupa cada uno de los genes del conjunto en la
lista. Tenga en cuenta que para esto tendrá que consultar si el gen está contenido
en la lista, y en caso de que así sea se buscará la posición que ocupa en la lista y
se añadirá al conjunto que se devuelve.
EJERCICIO 3 – DIFERENCIA SIMÉTRICA ENTRE DOS CONJUNTOS
La diferencia simétrica de dos conjuntos A y B es otro conjunto C tal que cada elemento
de C es elemento de A o de B, pero no de los dos. Escriba en una clase UtilesConjuntos
el método estático diferenciaSimetrica que reciba dos Set<T> y devuelva su diferencia
simétrica.
EJERCICIO 4. REIMPLEMENTACION DE TIPOS YA CREADOS
Vamos a reimplementar algunos de los tipos ya creados en las prácticas anteriores
haciendo uso de listas y conjuntos. Los tipos Departamento y Hospital basaban su
implementación en arrays. Reescriba tanto las interfaces como las clases usando listas.
Tenga en cuenta que tendrá que cambiar la definición de atributos, constructores, y
métodos de la clase. Para cada clase implemente además del constructor por parámetros
uno por defecto.
2
Descargar