Durante esta actividad, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
Esta actividad puede ser elaborada de manera individual o en parejas.
Escribe una clase llamada edd.util.SimpleBag
. Esta clase representa la estructura de datos bolsa que permite almacenar objetos genéricos.
La clase debe ser implementada utilizando una lista sencillamente encadenada, conformada por instancias de la clase edd.util.Node
definida de la siguiente manera:
package edd.util; public class Node<E> { public E info; public Node<E> next; }
En la parte superior del archivo SimpleBag.java
coloca en comentarios los datos personales de los autores de la tarea. Por ejemplo:
/*-------------------------------------------------------------------- * Práctica 2: Bolsa * Fecha: 31-Ene-2014 * Autores: * 1166611 Pepper Pots * 1160611 Anthony Stark *--------------------------------------------------------------------*/
Estos son los métodos que debe soportar la clase edd.util.SimpleBag
:
public SimpleBag()
Constructor que permite crear una nueva bolsa.
public void add(E x)
Inserta x
al final de esta bolsa.
public String toString()
Devuelve una cadena de caracteres que representa esta bolsa con todos los elementos que contiene. Referirse a las pruebas de unidad para conocer el formato exacto.
public boolean remove(E x)
Si x
existe en esta esta bolsa, lo remueve y devuelve true
. En caso contrario no modifica la bolsa y devuelve false
. Utiliza el método equals
para determinar si x
existe en esta bolsa. Si la bolsa contiene a x
más de una vez, solo remueve la primera ocurrencia.
public int size()
Devuelve el número de elementos contenidos actualmente en esta bolsa.
public boolean isEmpty()
Devuelve true
si esta bolsa está vacía, false
en caso contrario.
public boolean contains(E x)
Devuelve true
si esta bolsa contiene a x
, false
en caso contrario. Utiliza el método equals
para determinar si x
existe en esta bolsa.
public int count(E x)
Devuelve el número de veces que aparece x
en esta bolsa. Utiliza el método equals
para determinar si x
existe en esta bolsa.
public void clear()
Vacía completamente esta bolsa.
Prueba tu código usando la siguiente clase de JUnit:
package edd.util; import static org.junit.Assert.*; import org.junit.Test; public class SimpleBagTest { @Test public void test1() { SimpleBag<Integer> b = new SimpleBag<>(); assertEquals(0, b.size()); assertTrue(b.isEmpty()); assertEquals("[]", b.toString()); b.add(4); assertEquals("[4]", b.toString()); b.add(8); assertEquals("[4, 8]", b.toString()); b.add(15); assertEquals("[4, 8, 15]", b.toString()); b.add(16); assertEquals("[4, 8, 15, 16]", b.toString()); assertEquals(4, b.size()); assertFalse(b.isEmpty()); b.add(23); assertEquals("[4, 8, 15, 16, 23]", b.toString()); b.add(42); assertEquals("[4, 8, 15, 16, 23, 42]", b.toString()); b.add(8); assertEquals("[4, 8, 15, 16, 23, 42, 8]", b.toString()); assertEquals(7, b.size()); assertTrue(b.remove(8)); assertEquals("[4, 15, 16, 23, 42, 8]", b.toString()); assertTrue(b.remove(8)); assertEquals("[4, 15, 16, 23, 42]", b.toString()); assertFalse(b.remove(8)); assertEquals("[4, 15, 16, 23, 42]", b.toString()); assertTrue(b.remove(4)); assertEquals("[15, 16, 23, 42]", b.toString()); assertTrue(b.remove(42)); assertEquals("[15, 16, 23]", b.toString()); assertTrue(b.remove(15)); assertEquals("[16, 23]", b.toString()); assertEquals(2, b.size()); assertFalse(b.isEmpty()); assertTrue(b.remove(23)); assertEquals("[16]", b.toString()); assertTrue(b.remove(16)); assertEquals("[]", b.toString()); assertEquals(0, b.size()); assertTrue(b.isEmpty()); } @Test public void test2() { SimpleBag<String> b = new SimpleBag<>(); b.add("enero"); b.add("febrero"); b.add("marzo"); b.add("enero"); b.add("abril"); b.add("mayo"); b.add("enero"); b.add("junio"); b.add("julio"); assertEquals("[enero, febrero, marzo, enero, abril, " + "mayo, enero, junio, julio]", b.toString()); assertEquals(9, b.size()); assertTrue(b.contains("enero")); assertTrue(b.contains("febrero")); assertTrue(b.contains("marzo")); assertTrue(b.contains("abril")); assertTrue(b.contains("mayo")); assertTrue(b.contains("julio")); assertFalse(b.contains("agosto")); assertFalse(b.contains("septiembre")); assertFalse(b.contains("octubre")); assertEquals(3, b.count("enero")); assertEquals(1, b.count("febrero")); assertEquals(1, b.count("marzo")); assertEquals(1, b.count("abril")); assertEquals(1, b.count("mayo")); assertEquals(1, b.count("junio")); assertEquals(1, b.count("julio")); assertEquals(0, b.count("agosto")); assertEquals(0, b.count("septiembre")); assertEquals(0, b.count("octubre")); b.clear(); assertEquals("[]", b.toString()); assertTrue(b.isEmpty()); assertEquals(0, b.size()); } @Test public void test3() { SimpleBag<Boolean> b = new SimpleBag<>(); assertTrue(b.isEmpty()); assertEquals(0, b.size()); b.clear(); assertTrue(b.isEmpty()); assertEquals(0, b.size()); b.add(true); b.add(false); b.add(true); assertEquals("[true, false, true]", b.toString()); assertFalse(b.isEmpty()); assertEquals(3, b.size()); b.clear(); assertEquals("[]", b.toString()); assertTrue(b.isEmpty()); assertEquals(0, b.size()); b.clear(); assertEquals("[]", b.toString()); assertTrue(b.isEmpty()); assertEquals(0, b.size()); b.add(false); b.add(true); b.add(false); b.add(false); assertEquals("[false, true, false, false]", b.toString()); assertFalse(b.isEmpty()); assertEquals(4, b.size()); b.remove(false); assertEquals("[true, false, false]", b.toString()); assertFalse(b.isEmpty()); assertEquals(3, b.size()); b.clear(); assertEquals("[]", b.toString()); assertTrue(b.isEmpty()); assertEquals(0, b.size()); } }
Sube el archivo SimpleBag.java
usando el Sistema de Entrega de Tareas Automatizado. Si la práctica fue desarrollada en equipo, basta que solo uno de los miembros la entregue. No se aceptan tareas por ningún otro medio.
Fecha límite: Viernes, 31 de enero.
Esta actividad será evaluada usando los siguientes criterios:
100 | La actividad cumple con todos los requerimientos. |
---|---|
-10 | No se incluyó en comentario los datos de los autores. |
10 | El programa fuente contiene errores sintácticos. |
50-90 | El programa produce algunos errores al momento de correrlo. |
DA | La solución es un plagio. |