Java - IMPLEMENTACIÓN DEL TAD CONJUNTO

   
Vista:

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 ppherranz@gmail.com
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:IMPLEMENTACIÓN DEL TAD CONJUNTO

Publicado por dfgdf (1 intervención) el 26/10/2008 16:06:52
uc3m eh?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:IMPLEMENTACIÓN DEL TAD CONJUNTO

Publicado por Efrain diaz (1 intervención) el 26/05/2009 19:09:16
graciaspor todo me parece una buena opcion para acceder a nueva informacon que necesitamos para adquirir nuevas ideas sobre TAD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:IMPLEMENTACIÓN DEL TAD CONJUNTO

Publicado por victor (1 intervención) el 29/10/2009 22:40:49
esta bien esta aportacion para los que quieren
es bueno buinisimo ,me ha servido mucho se me ha sido de gran ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:IMPLEMENTACIÓN DEL TAD CONJUNTO

Publicado por leonel (1 intervención) el 17/10/2010 19:28:58
por favor haber si me puden ayudar a implentar una clase conjunto con operaciones basicas como: union, interseccion y diferencia todo esto en java
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

IMPLEMENTACIÓN DEL TAD CONJUNTO

Publicado por Nessa (1 intervención) el 01/07/2011 10:59:10
Dejo una implementación con una clase propia (Task) con un ArrayList por si a alguien que pase por aquí le sirve. No está probada así que mejor no os fieis de que funciona correctamente, pero puede dar una idea de cómo podría ser.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package conjunto;
 
import java.util.ArrayList;
import java.util.Iterator;
 
import domainLogic.workflow.Task;
 
public class ConjuntoTask implements Conjunto<Task> {
 
	ArrayList<Task> _tasks;
 
	public ConjuntoTask(ArrayList<Task> tasks){
		_tasks = tasks;
	}
 
	@Override
	public boolean esVacio() {
		return _tasks.isEmpty();
	}
 
	@Override
	public boolean pertenece(Task e) {
		return _tasks.contains(e);
	}
 
	@Override
	public boolean anadirElemento(Task e) {
		return _tasks.add(e);
	}
 
	@Override
	public boolean borrarElemento(Task e) {
		return _tasks.remove(e);
	}
 
	@Override
	public int cardinalidad() {
		return _tasks.size();
	}
 
	@Override
	public boolean igualdad(Conjunto<Task> otro) {
		return esSubconjunto(otro) && esSuperconjunto(otro);
	}
 
	@Override
	public boolean esSubconjunto(Conjunto<Task> otro) {
		if(otro instanceof ConjuntoTask){
			return ((ConjuntoTask)otro)._tasks.containsAll(_tasks);
		}
		return false;
	}
 
	@Override
	public boolean esSuperconjunto(Conjunto<Task> otro) {
		if(otro instanceof ConjuntoTask){
			return _tasks.containsAll(((ConjuntoTask)otro)._tasks);
		}
		return false;
	}
 
	@Override
	public Conjunto<Task> union(Conjunto<Task> otro) {
		if(otro instanceof ConjuntoTask){
			ArrayList<Task> retorno = (ArrayList<Task>)_tasks.clone();
			retorno.addAll(((ConjuntoTask)otro)._tasks);
			return new ConjuntoTask(retorno);
		}
		return null;
	}
 
	@Override
	public Conjunto<Task> interseccion(Conjunto<Task> otro) {
		if(otro instanceof ConjuntoTask){
			ArrayList<Task> retorno = (ArrayList<Task>)_tasks.clone();
			retorno.retainAll(((ConjuntoTask)otro)._tasks);
			return new ConjuntoTask(retorno);
		}
		return null;
	}
 
	@Override
	public Conjunto<Task> diferencia(Conjunto<Task> otro) {
		if(otro instanceof ConjuntoTask){
			ArrayList<Task> retorno = (ArrayList<Task>)_tasks.clone();
			retorno.removeAll(((ConjuntoTask)otro)._tasks);
			return new ConjuntoTask(retorno);
		}
		return null;
	}
 
	@Override
	public Iterator<Task> iterador() {
		return _tasks.iterator();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar