课堂作业-Bag类的实现
课堂作业-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));
}
}

课堂作业-Bag类的实现的更多相关文章
- 课堂作业Complex类的实现
#include <iostream> #include <cmath> using namespace std; class Complex{ public: Complex ...
- 20162320刘先润第三周Bag类测试
前言 以下内容是本周Bag代码的课后作业,要求是完成伪代码.产品代码和测试代码,为了书写方便我将伪代码以注释的形式写在了产品代码的后面 测试步骤 1.首先对Bag类引用BagInterface的代码进 ...
- 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)
计算器的第一步,至今还记记忆犹新,本次的课堂作业,便是那个框架.闲话少叙,代码如下传送门: Main.cpp #include "stdafx.h" #include<ios ...
- 课堂实验-Bag
这次的课堂实验比较简单,但尴尬的是竟然没有做出来,自己的代码能力下降了不少.IDEA的Junit测试出了问题.所以这次实验是和结对伙伴结对编程写的. public class Bag<T> ...
- Java课程课堂作业代码
前言 本文章只是单纯记录课堂老师布置的课堂作业代码,题目都比较简单,所以没有写解题思路,相信大家都能理解,当然其中有的解法和代码不是最优的,当时只是为了完成题目,后来也懒得改了,如果有不恰当或者不正确 ...
- C#基础第八天-作业-设计类-面向对象方式实现两个帐户之间转账
要求1:完成以下两种账户类型的编码.银行的客户分为两大类:储蓄账户(SavingAccount)和信用账户(CreditAccount),两种的账户类型的区别在于:储蓄账户不允许透支,而信用账户可以透 ...
- 《Java 程序设计》课堂实践项目-类定义
<Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...
- 仿ArrayList功能的bag类
仿ArrayList功能的bag类 要想做到能够实现ArrayList功能,首先要有一个能往里填任何类型元素的的空间,但是不能用ArrayList来创建空间,这样这个项目就没有意义,因此,我创建了一个 ...
- 20155213 第十二周课堂作业MySort
20155213 第十二周课堂作业MySort 作业要求 模拟实现Linux下Sort -t : -k 2的功能 参考 Sort的实现 提交码云链接和代码运行截图 初始代码 1 import java ...
随机推荐
- hdu 1087 Super Jumping! Jumping! Jumping!(动态规划DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 Super Jumping! Jumping! Jumping! Time Limit: 200 ...
- 《Applying Deep Learning to Answer Selection: A Study And an Open Task》文章理解小结
本篇论文是2015年的IBM watson团队的. 论文地址: 这是一篇关于QA问题的一篇论文: 相关论文讲解1.https://www.jianshu.com/p/48024e9f7bb22.htt ...
- perl登录ssh
use warnings; use strict; use Net::SSH::Perl; my $host = '192.168.255.128'; my $username = 'root'; m ...
- vs 2015 插件 supercharger 破解方式
亲测有效:效果如图 方法如下: 1.打开Supercharger的options; 2.点击Pricing & Registration 3.复制 license 然后再按Paste &am ...
- Laravel 5.2 整合 Uploadify 上传图片
前端: <!-- 引入CSS.JS --> <link rel="stylesheet" type="text/css" href=" ...
- python爬虫模块之HTML下载模块
HTML下载模块 该模块主要是根据提供的url进行下载对应url的网页内容.使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象. 根 ...
- 2015多校第6场 HDU 5353 Average 贪心,细节处理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5353 题意:有n个人围城一个环,每一个人手里都有一些糖果,第i个人有ai块.现在有三种操作:第i个人给 ...
- Oracle简述
Oracle是甲骨文公司推出的一款大型数据库管理系统.甲骨文公司成立于1977年,总部位于美国加利福尼亚州的红木滩.1989年,Oracle正式进入中国市场:2013年,甲骨文超越 IBM ,成为继 ...
- 初学jmeter
jmeter安装的前提需要有jdk环境,下载安装好jdk环境后记得要设置好环境变量. 配置环境变量:右击“我的电脑”-->"高级"-->"环境变量" ...
- PHP定界符出现错误
Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T ...