课堂作业-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)); } }
相关文章推荐
- 11.21课堂作业-实现jQuery,DOM的增删查改
- 线性表的顺序实现——数据结构课堂作业
- 课堂作业 泛型类-Bag
- 方便 minicom串口实现自动化流水线作业
- Servlet监听器与Timer定时器配合实现JAVA WEB应用简单自动作业
- cs231n作业一之实现softmax
- 第三次作业约瑟夫环(JAVA实现)NO.1
- 课堂作业01——架构师的职责及工作流程
- sift+bag_of_words+LDA实现图片搜索(一)
- 作业 显示在线列表,实现踢人功能
- 【顺序栈作业】顺序栈的实现
- 第五课堂作业
- [Unity3D课堂作业] Priests and Devils 牧师与恶魔
- 作业:递归实现插入排序和在o(nlgn)时间复杂度内寻找和为定值的两个元素
- C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加
- (作业)利用网络编程实现多个城市的天气查询
- 数据结构作业 ------ 用链表实现简单多项式加法
- JAVA 多进程应用 多个定时器作业的SWING界面及实现 -- s00n
- 第四次程序设计作业 C++计算器计算及命令行的使用 前缀表达式方法实现
- 软件工程--趣盒--第四次团队作业--软件实现与测试