您的位置:首页 > 其它

课堂作业-Bag类的实现

2017-09-27 00:02 309 查看

课堂作业-Bag类的实现

要求:

代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息

参见Bag的UML图,用Java继承BagInterface实现泛型类Bag,并对方法进行单元测试(JUnit),测试要涵盖正常、异常情况、边界情况。

实验思路

0.编写接口

1.编写伪代码

2.实现接口

3.使用junit进行测试

代码编写的主要思想分析

使用数组实现Bag类,达到可增可删可判断是否为空等等。

0 . 定义一个Object类型的数组,其长度为0

1 . 判断是否为空时只需要判断其数组的长度是否为0

2 . 增加新元素时,先定义一个比原来长度增加1的数组,再将原来的数组重新赋值到新的数组里面

3 . 删除指定元素时,先将元素的下标找出来,用for循环将指定元素后面的元素覆盖指定元素

4 . 获取某元素在Bag里面的数量,用线性查找便可完成

5 . 判断某元素在Bag是否存在,用线性查找便可

public class Bag implements BagInterface {

private Object[] data1 = new Object[0];
int q = 0, index;
Object result;

public boolean isEmpty() {
if (data1.length != 0)
return false;
else
return true;
}

public boolean add(Object anEntry) {
q++;
Object[] objects = new Object[q - 1];
objects = sum(data1);
data1 = new Object[q];
for (int i = 0; i < data1.length - 1; i++) {
data1[i] = objects[i];
}
data1[q - 1] = anEntry;
return true;
}

public boolean remove(Object anEntry) {
int index = linearSearch(data1, anEntry);
for (int i = index + 1; i < data1.length; i++) {
data1[index] = data1[i];
}
q--;
Object[] objects = new Object[q + 1];
objects = sum(data1);
if (q <= 0)
return true;
else {
data1 = new Object[q];
for (int i = 0; i < q; i++) {
data1[i] = objects[i];
}
}
return true;
}

public int getCurrentSize() {
return data1.length;
}

public void clear() {
data1 = new Object[0];
}

public int getFrequencyOf(Object anEntry) {
int count = 0;
for (int i = 0; i < data1.length; i++) {
if (anEntry == data1[i]) {
count++;
}
}
return count;
}

public boolean contains(Object anEntry) {
for (int i = 0; i < data1.length; i++) {
if (anEntry == data1[i])
return true;
}
return false;
}

public Object[] sum(Object[] objects) {
Object[] objects1 = new Object[objects.length];
for (int i = 0; i < objects.length; i++) {
objects1[i] = objects[i];
}
return objects1;
}

public static int linearSearch(Object[] data, Object target) {
int index = 0;
for (int i = 0; i < data.length; i++) {
if (target == data[i]) {
index = i;
}
}
return index;
}

public Object[] toArray() {
insertionSort(data1);
return data1;
}

public static void insertionSort(Object[] data) {
for (int index = 1; index < data.length; index++) {
Object key = data[index];
int position = index;
// Shift larger values to the right
while (position > 0 && data[position - 1].equals(key)) {
data[position] = data[position - 1];
position--;
}
data[position] = key;
}
}
}

junit测试

import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase;

import static org.junit.Assert.assertEquals;

/**
* Bag Tester.
*
* @author <Authors name>
* @version 1.0
* @since <pre>09/25/2017</pre>
*/
public class BagTest extends TestCase {

public BagTest(String name) {
super(name);
}

public void setUp() throws Exception {
super.setUp();
}

public void tearDown() throws Exception {
super.tearDown();
}

/**
* Method: isEmpty()
*/
public void testIsEmpty() throws Exception {
//TODO: Test goes here...
assertEquals(true, new MyArrayList().isEmpty());
}

/**
* Method: add(Object anEntry)
*/
public void testAdd() throws Exception {
//TODO: Test goes here...
MyArrayList bag = new MyArrayList();
bag.add(1);
assertEquals(true, bag.add(5));
}
@org.junit.Test
public void testremove() throws Exception {
MyArrayList bag = new MyArrayList();
bag.add(7);
bag.add(4);
assertEquals(true, bag.remove(4));
}

@org.junit.Test
public void testgetCurrentSize() throws Exception{
MyArrayList bag = new MyArrayList();
bag.add(1);
bag.add(3);
assertEquals(2,bag.getCurrentSize());

}

@org.junit.Test
public void testcontains() throws Exception{
MyArrayList bag = new MyArrayList();
bag.add(1);
bag.add(3);
assertEquals(false, bag.contains(2));
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: