实验内容:

面向对象程序设计-1

实验要求:

提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图

实验步骤:

1.按照老师博客的要求新建一个MyUtil项目

在src内新建java class

输入如下代码:

public class MyUtil{
public static String percentage2fivegrade(int grade){
//如果成绩小于0,转成“错误”
if ((grade < 0))
return "错误";
//如果成绩小于60,转成“不及格”
else if (grade < 60)
return "不及格";
//如果成绩在60与70之间,转成“及格”
else if (grade < 70)
return "及格";
//如果成绩在70与80之间,转成“中等”
else if (grade < 80)
return "中等";
//如果成绩在80与90之间,转成“良好”
else if (grade < 90)
return "良好";
//如果成绩在90与100之间,转成“优秀”
else if (grade <= 100)
return "优秀";
//如果成绩大于100,转成“错误”
else
return "错误";
}
}

2.新建一个test文件夹,标注为test source

在MyUtil类名处create test

输入如下代码:

import org.junit.Test;
import junit.framework.TestCase;
public class MyUtilTest extends TestCase {
@Test
public void testNormal() {
assertEquals("不及格", MyUtil.percentage2fivegrade(55));
assertEquals("及格", MyUtil.percentage2fivegrade(65));
assertEquals("中等", MyUtil.percentage2fivegrade(75));
assertEquals("良好", MyUtil.percentage2fivegrade(85));
assertEquals("优秀", MyUtil.percentage2fivegrade(95));
}
@Test
public void testException() {
assertEquals("错误",MyUtil.percentage2fivegrade(-55));
assertEquals("错误",MyUtil.percentage2fivegrade(105));
}
@Test
public void testBoundary() {
assertEquals("不及格",MyUtil.percentage2fivegrade(0));
assertEquals("及格",MyUtil.percentage2fivegrade(60));
assertEquals("中等",MyUtil.percentage2fivegrade(70));
assertEquals("良好",MyUtil.percentage2fivegrade(80));
assertEquals("优秀",MyUtil.percentage2fivegrade(90));
}
} test运行结果如下:

面向对象程序设计-2

实验要求:

以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。

实验步骤:

1.学习有关StringBuffer的相关知识

StringBuffer append() 向字符串缓冲区追加元素
StringBuffer charAt() 返回此序列中指定索引处的 char 值
StringBuffer capacity() 得到缓冲区分配的总容量
StringBuffer indexOf() 返回当前StringBuffer对象中,第一个满足str子串的位置
StringBuffer toString( ) 返回此序列中数据的字符串表示形式
StringBuffer length() 得到当前StringBuffer的长度
length 与 capacity 的区别:分配的容量与实际的长度

2.按照老师博客中的要求,新建一个 StringBufferDemo项目

在src内新建一个java class

输入如下代码:

    public class StringBufferDemo{
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer12345");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tringBuffer12345"));
System.out.println("buffer = " + buffer.toString());
System.out.println(buffer.length());
}
}

3.创建一个test文件夹,标注为test source

新建一个test java class

输入如下代码:

import org.junit.Test;
import junit.framework.TestCase;
public class StringBufferDemoTest extends TestCase {
StringBuffer sq = new StringBuffer("gst and sq");
StringBuffer gst = new StringBuffer("sq and gst lueluelue hahaha");
public void testcharat() {
assertEquals('g', sq.charAt(0));
assertEquals('s', gst.charAt(0));
}
public void testcapacity() {
assertEquals(26, sq.capacity());
assertEquals(43, gst.capacity());
}
public void testlength() {
assertEquals(10, sq.length());
assertEquals(27, gst.length());
}
public void testindexof() {
assertEquals(0, sq.indexOf("gst"));
assertEquals(11, gst.indexOf("lue"));
}
} 运行结果:
![](https://images2018.cnblogs.com/blog/1296864/201804/1296864-20180416095342534-2087470503.png)

面向对象程序设计-3

实验要求:

参考http://www.cnblogs.com/rocedu/p/6736847.html

对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式

用自己的学号%6进行取余运算,根据结果进行代码扩充:

4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

实验步骤:

创建项目等一系列操作同上

输入的src内代码为:

abstract class Data {
abstract public void DisplayValue();
}
class Integer extends Data {
int value;
Integer() {
value=100;
}
public void DisplayValue(){
System.out.println (value);
}
}
class Floater extends Data {
float value;
Floater() {
value=5320;
}
public void DisplayValue(){
System.out.println (value);
}
}
abstract class Factory {
abstract public Data CreateDataObject();
}
class IntFactory extends Factory {
public Data CreateDataObject(){
return new Integer();
}
}
class FloatFactory extends Factory {
public Data CreateDataObject(){
return new Floater();
}
}
class Document {
Data pd;
Document(Factory pf){
pd = pf.CreateDataObject();
}
public void DisplayData(){
pd.DisplayValue();
}
}
public class MyDoc {
static Document d;
public static void main(String[] args) {
d = new Document(new FloatFactory());
d.DisplayData();
}
} 运行截图:

面向对象程序设计-4

实验要求:

任务:以TDD的方式开发一个复数类Complex,要求如下:

// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex()
public Complex(double R,double I) //Override Object
public boolean equals(Object obj)
public String toString() // 定义公有方法:加减乘除
Complex ComplexAdd(Complex a)
Complex ComplexSub(Complex a)
Complex ComplexMulti(Complex a)
Complex ComplexDiv(Complex a)

实验步骤:

新建项目,src内新建java class

输入如下代码:

import java.util.Objects;

import static java.lang.Math.sqrt;
import static java.lang.StrictMath.round; public class Fushu {
public static void main (String args[]){
Complex sq = new Complex(1.0,4.0);
Complex gst = new Complex(1.0,3.0);
}
static class Complex{
double x;
double y;
Complex(double x,double y){
this.x=x;
this.y=y;
}
Complex ComplexAdd(Complex a){
return new Complex(x+a.x,y+a.y );
}
Complex ComplexSub(Complex a){
return new Complex(x-a.x,y-a.y );
}
Complex ComplexMulti(Complex a){
return new Complex(x*a.x-y*a.y,x*a.y+y*a.x);
}
Complex ComplexDiv(Complex a){
double g = sqrt(a.x*a.x)+sqrt(a.y*a.y);
double s = (x*a.y-y*a.x);
return new Complex ((x*a.x)+(y*a.y)/g,round(s/g));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Complex complex = (Complex) o;
return Double.compare(complex.x, x) == 0 &&
Double.compare(complex.y, y) == 0;
}
@Override
public String toString() { if (y > 0) {
return "("+x+"+"+y+"i"+")";
}
else
{
return "("+x+"-"+y+"i"+")";
}
}
}
}

在test文件目录下新建class

输入代码如下:

import junit.framework.TestCase;
import org.junit.Test; public class FushuTest extends TestCase {
Fushu.Complex sq = new Fushu.Complex(1.0, 4.0);
Fushu.Complex gst = new Fushu.Complex(1.0, 3.0);
@Test
public void testAdd() {
assertEquals("(2.0+7.0i)", sq.ComplexAdd(gst).toString());
} @Test
public void testSub() {
assertEquals("(0.0+1.0i)", sq.ComplexSub(gst).toString());
} @Test
public void testMul() {
assertEquals("(-11.0+7.0i)", sq.ComplexMulti(gst).toString());
} @Test
public void testDiv() {
assertEquals("(4.0-0.0i)", sq.ComplexDiv(gst).toString());
}
}

运行截图:

实验中遇到的问题

一、在IDEA中按照博客步骤找不到Generator,并且之后出现安装失败

解决方法:在setting中直接搜索Generator2.0安装

二、老师的博客中SringBufferDeo类里面测试理论与实际不符

解决办法:在append()中加入12345

三、单元测试时出现test not found错误

解决方法:测试类中类名不能大写,改成小写即可

实验PSP:

步骤 耗时 百分比
需求分析 30m 16%
设计 60m 33%
实现 30m 16%
测试 20m 11%
分析总结 40m 22%

20165329 Java实验二:面向对象编程的更多相关文章

  1. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  2. 20165317JAVA实验二-面向对象程序设计

    JAVA实验二-面向对象程序设计 提交点一 参考Intellj IDEA 简易教程-单元测试完成单元测试的学习 在IDEA中建立名为MyUtil5317的project,并在其src文件夹中创建名为M ...

  3. 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...

  4. Java实验二实验报告:java面向对象程序设计

    java实验二实验报告 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验 ...

  5. 2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-20175205实验二面向对象程序设计<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...

  6. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  7. #2019-2020-4 实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2019-2020-4 实验二面向对象程序设计<Java开发环境的熟悉>实验报告 一.面向对象程序设计-1 ①实验要求: 1.参考 http://www.cnblogs.com/roced ...

  8. 20165222《Java程序设计》——实验二 面向对象程序设计

    20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...

  9. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

随机推荐

  1. Redis:主从复制

    前言 在前面的两篇文章中,分别介绍了Redis的内存模型和Redis的持久化. 在Redis的持久化中曾提到,Redis高可用的方案包括持久化.主从复制(及读写分离).哨兵和集群.其中持久化侧重解决的 ...

  2. python selenium2 定位一组元素find_elements实例

    打开hao123首页,需要定位以上区域中的所有链接,他们有相同的父元素<ul class="js_bd site-bd site-hd0">,所有链接处在li>a ...

  3. svmrank 的误差惩罚因子c选择 经验

    C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确,所以 ...

  4. Timing wheel心跳机制

    在web服务中,断开空闲连接是一种减少资源浪费的一种手段,由此就有了心跳机制来判断一个连接是否空闲. 一种简单粗暴的方式: 1. 服务端每个连接保存一个最后一次操作的时间戳,每次这个连接对应fd可读时 ...

  5. [AT2268] [agc008_f] Black Radius

    题目链接 AtCoder:https://agc008.contest.atcoder.jp/tasks/agc008_f 洛谷:https://www.luogu.org/problemnew/sh ...

  6. CF1083C Max Mex 线段树

    题面 CF1083C Max Mex 题解 首先我们考虑,如果一个数x是某条路径上的mex,那么这个数要满足什么条件? 1 ~ x - 1的数都必须出现过. x必须没出现过. 现在我们要最大化x,那么 ...

  7. 【BZOJ2463】谁能赢呢?(博弈论)

    [BZOJ2463]谁能赢呢?(博弈论) 题面 BZOJ 洛谷 题解 洛谷上对于难度的评级我总觉有些问题. 很多人按照代码难度而并非思维难度在评级,导致很多评级很不合理啊... 不说废话了.. 对于一 ...

  8. BZOJ 3143 游走 | 数学期望 高斯消元

    啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...

  9. POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 )

    POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 ) 题意分析 给出n个点,m个询问,和当前位置pos. 先给出n-1条边,u->v以及边权w. 然后有m个询问 ...

  10. springboot项目添加jsp支持

    一.创建springboot项目 使用 http://start.spring.io/ 快速创建一个springboot项目下载并导入 二.添加依赖 在pom.xml中添加支持jsp的依赖如下: &l ...