IMPLEMENTACIÓN DEL TAD CONJUNTO
Publicado por Pedro (1 intervención) el 14/11/2007 16:18:04
A ver si alguien me pudiese ayudar con estos 4 ejercicios. A lo mejor es más facil de lo que creo, pero como estoy empezando con java, pues me resulta imposible hacerlo.
4.1. Ejercicio 1
En Java no existe ninguna clase/interfaz estándar que implemente el Conjunto matemático. La interfaz java.util.Set proporciona métodos para tratar una colección de elementos no repetidos, pero no incluye ninguna operación matemática. Por tanto, vamos a crear nuestro propio TAD Conjunto.
Basándonos en las operaciones descritas en la introducción y en el apartado 3, podemos definir la interfaz Conjunto para elementos del tipo genérico E como sigue a continuación:
public interface Conjunto<E> {
public boolean esVacio();
public boolean pertenece(E e);
public boolean anadirElemento(E e);
public boolean borrarElemento(E e);
public int cardinalidad();
public boolean igualdad(Conjunto<E> otro);
public boolean esSubconjunto(Conjunto<E> otro);
public boolean esSuperconjunto(Conjunto<E> otro);
public Conjunto<E> union(Conjunto<E> otro);
public Conjunto<E> interseccion(Conjunto<E> otro);
public Conjunto<E> diferencia(Conjunto<E> otro);
public java.util.Iterator iterador();
}
La clase ConjuntoImpl<E> implementará las operaciones de la interfaz Conjunto<E>, utilizando para ello el contenedor Set del framework de contenedores de Java:
public class ConjuntoImpl<E> implements Conjunto<E> {
private Set<E> _elementos;
public ConjuntoImpl() {
_elementos=new TreeSet<E>();
}
public boolean esVacio() {
return _elementos.isEmpty();
}
...
}
Se requerirá la implementación de una clase IteradorConjuntoImpl<E>, que permita iterar sobre los elementos de un conjunto dado. Esta clase deberá implementar la interfaz java.util.Iterator. El método iterador definido para la clase ConjuntoImpl devolverá un objeto de este tipo.
Realizar una clase PruebaConjunto que pruebe las funcionalidades del TAD Conjunto.
4.2. Ejercicio 2
Se pide realizar una nueva implementación de la interfaz Conjunto<E>, pero utilizando esta vez para ello el contenedor Map del framework de contenedores de Java.
public class ConjuntoImpl2<E> implements Conjunto<E> {
private Map<E,E> _elementos;
public ConjuntoImpl2() {
_elementos=new HashMap<E,E>();
}
...
}
Podéis utilizar la clase PruebaConjunto desarrollada en el ejercicio 1 para probar la nueva implementación de la interfaz Conjunto. El único cambio en la clase de prueba debería ser instanciar un objeto de tipo ConjuntoImpl2 en vez de uno de tipo ConjuntoImpl.
4.3. Ejercicio 3
Partiendo de la implementación realizada en el ejercicio 1, se quiere añadir una nueva operación al TAD Conjunto: la unión disjunta.
La unión disjunta de dos conjuntos A y B se define como el conjunto de elementos que están presentes en A o en B, pero no ambos. Si la intersección de A y B es vacía, entonces la unión disjunta es igual a la unión de los dos conjuntos.
Se pide:
Modificar las clases anteriores para añadir esta nueva operación.
Probar la nueva operación desde la clase PruebaConjunto.
4.4. Ejercicio 4
Una utilidad de los conjuntos es su uso en tratamiento de textos. Utilizando las clases desarrolladas en los ejercicios anteriores, se pide programar un main que cree un conjunto de Strings con todas las preposiciones y lo utilice para eliminar las preposiciones presentes en un texto dado.
Si alguien me pudiese ayudar, se lo agradeceria ,muxo.
Mi correo es [email protected]
Muchas gracias
4.1. Ejercicio 1
En Java no existe ninguna clase/interfaz estándar que implemente el Conjunto matemático. La interfaz java.util.Set proporciona métodos para tratar una colección de elementos no repetidos, pero no incluye ninguna operación matemática. Por tanto, vamos a crear nuestro propio TAD Conjunto.
Basándonos en las operaciones descritas en la introducción y en el apartado 3, podemos definir la interfaz Conjunto para elementos del tipo genérico E como sigue a continuación:
public interface Conjunto<E> {
public boolean esVacio();
public boolean pertenece(E e);
public boolean anadirElemento(E e);
public boolean borrarElemento(E e);
public int cardinalidad();
public boolean igualdad(Conjunto<E> otro);
public boolean esSubconjunto(Conjunto<E> otro);
public boolean esSuperconjunto(Conjunto<E> otro);
public Conjunto<E> union(Conjunto<E> otro);
public Conjunto<E> interseccion(Conjunto<E> otro);
public Conjunto<E> diferencia(Conjunto<E> otro);
public java.util.Iterator iterador();
}
La clase ConjuntoImpl<E> implementará las operaciones de la interfaz Conjunto<E>, utilizando para ello el contenedor Set del framework de contenedores de Java:
public class ConjuntoImpl<E> implements Conjunto<E> {
private Set<E> _elementos;
public ConjuntoImpl() {
_elementos=new TreeSet<E>();
}
public boolean esVacio() {
return _elementos.isEmpty();
}
...
}
Se requerirá la implementación de una clase IteradorConjuntoImpl<E>, que permita iterar sobre los elementos de un conjunto dado. Esta clase deberá implementar la interfaz java.util.Iterator. El método iterador definido para la clase ConjuntoImpl devolverá un objeto de este tipo.
Realizar una clase PruebaConjunto que pruebe las funcionalidades del TAD Conjunto.
4.2. Ejercicio 2
Se pide realizar una nueva implementación de la interfaz Conjunto<E>, pero utilizando esta vez para ello el contenedor Map del framework de contenedores de Java.
public class ConjuntoImpl2<E> implements Conjunto<E> {
private Map<E,E> _elementos;
public ConjuntoImpl2() {
_elementos=new HashMap<E,E>();
}
...
}
Podéis utilizar la clase PruebaConjunto desarrollada en el ejercicio 1 para probar la nueva implementación de la interfaz Conjunto. El único cambio en la clase de prueba debería ser instanciar un objeto de tipo ConjuntoImpl2 en vez de uno de tipo ConjuntoImpl.
4.3. Ejercicio 3
Partiendo de la implementación realizada en el ejercicio 1, se quiere añadir una nueva operación al TAD Conjunto: la unión disjunta.
La unión disjunta de dos conjuntos A y B se define como el conjunto de elementos que están presentes en A o en B, pero no ambos. Si la intersección de A y B es vacía, entonces la unión disjunta es igual a la unión de los dos conjuntos.
Se pide:
Modificar las clases anteriores para añadir esta nueva operación.
Probar la nueva operación desde la clase PruebaConjunto.
4.4. Ejercicio 4
Una utilidad de los conjuntos es su uso en tratamiento de textos. Utilizando las clases desarrolladas en los ejercicios anteriores, se pide programar un main que cree un conjunto de Strings con todas las preposiciones y lo utilice para eliminar las preposiciones presentes en un texto dado.
Si alguien me pudiese ayudar, se lo agradeceria ,muxo.
Mi correo es [email protected]
Muchas gracias
Valora esta pregunta


0