20135214万子惠 (2)——-Java面向对象程序设计
实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
(一)单元测试
(1) 三种代码







(2) TDD(Test Driven Devlopment, 测试驱动开发)


(二)面向对象三要素
(1)抽象
利用循环结构来简化代码(此处并没有编码)
(2)封装、继承与多态、









(三)设计模式初步
(1)S.O.L.I.D原则
- SRP(Single Responsibility Principle,单一职责原则)
- OCP(Open-Closed Principle,开放-封闭原则) ————软件实体(类,模块,函数等)应该对扩充开放,对修改封闭。
- 手段实现:(1)抽象和继承(2)面向接口编程
- LSP(Liskov Substitusion Principle,Liskov替换原则)
- ISP(Interface Segregation Principle,接口分离原则)
- DIP(Dependency Inversion Principle,依赖倒置原则)
(2)模式与设计模式
(3)设计模式实示例
四)练习
1使用TDD的方式设计关实现复数类Complex。
伪代码:
1. Z = a(实部) + bi(虚部);
2.相加:实数部与实部相加,虚部与虚部相加
3.相减:实部与实部相减,虚部与虚部相减
4.相乘
A*B=ac-bd+(ad+bc)i
A=a+bi, B=c+di
5.显示一个复数
虚部为负数情况,不显示前面的加号
public class Complex{// 1. Z = a(实部) + bi(虚部);
private int RealPart; // 实部
private int ImaginPart; // 虚部
public int getRealPart() {
return RealPart;
}
public void setRealPart(int r) {
RealPart = r;
}
public int getImaginPart() {
return ImaginPart;
}
public void setImaginPart(int i) {
ImaginPart = i;
}
// 构造函数
public Complex() {}
public Complex(int r, int i) {
super();
RealPart = r;
ImaginPart = i;
}
// 相加
public static String add(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart(a.getRealPart()+b.getRealPart());
temp.setImaginPart(a.getImaginPart()+b.getImaginPart());
return show(temp);
}
// 相减
public static String minus(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart(a.getRealPart()-b.getRealPart());
temp.setImaginPart(a.getImaginPart()-b.getImaginPart());
return show(temp);
}
//相乘
//A*B=ac-bd+(ad+bc)i
//A=a+bi, B=c+di
public static String Multi(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart((a.getRealPart()*b.getRealPart())-(a.getImaginPart()*b.getImaginPart()));
temp.setImaginPart((b.getImaginPart()*a.getRealPart())+(b.getRealPart()*a.getImaginPart()));
return show(temp);
}
// 显示输出
public static String show(Complex a){
StringBuffer sb = new StringBuffer();
sb.append(a.getRealPart());
if(a.getImaginPart()>0){
sb.append("+"+a.getImaginPart()+"i");
}else if(a.getImaginPart()<0){
sb.append(a.getImaginPart()+"i");
}
return sb.toString();
}
}

2.实验报告中统计自己的psp时间
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 20分钟 | 11.7% |
| 设计 | 10分钟左右 | 5.8% |
| 代码实现 | 1小时30分钟左右 | 52.9% |
| 测试 | 30分钟 | 17.64% |
| 分析总结 | 20分钟左右 | 11.7% |
3. 实现要有伪代码,产品代码,测试代码。
4.总结单元测试的好处
防止程序出现死角,有利于程序员们整理思路,找到问题所在
更容易在早期发现问题所在,问题不容易堆积,可以马上解决
遇到的问题:
1实验楼虚拟机的反应还是不太好,所以大部分都是在自己的电脑做完的。
2.把Animal和dog和cat class 放在一起后没有编译成功,后分别给他们放在不同的class中编译通过。
3在做字符对照测试的时候,不注意输入会容易出错。
4.Complex中一开始把显示定义为void类型,在测试时并不方便,后改为String类型后就可行了。
20135214万子惠 (2)——-Java面向对象程序设计的更多相关文章
- 2018-2019-2 实验二 Java面向对象程序设计
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验要求 1.没有Linux基础的同学 ...
- 20175315 实验二《Java面向对象程序设计》实验报告
20175315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会写以下三种代码: 伪代码 ...
- 20165235 实验二Java面向对象程序设计
20165235 Java面向对象程序设计 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.14 指导老师: ...
- 20165236 实验二 《Java面向对象程序设计》实验报告
20165236 实验二<Java面向对象程序设计>实验报告 姓名:郭金涛 学号:20165236 课程:Java程序设计 指导老师:娄嘉鹏 实验时间:2 ...
- 2017-2018-2 20165215 实验二 Java面向对象程序设计
20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- 2017-2018-2 20165327 实验二 《Java面向对象程序设计》实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 2017-2018-2 20165315 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会 ...
- 2017-2018-2 20165318 实验三《Java面向对象程序设计》实验报告
2017-2018-2 20165318 实验三<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:孙晓暄 ...
- 2017-2018-2 20165318 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165318 实验二<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:孙晓暄 ...
随机推荐
- linux安装.run
chmod +x ./framework-3.6.0-linux-full.runsudo ./framework-3.6.0-linux-full.run
- vs版本与.net framework 版本对应
vs2002 .net framework 1.0 vs2003 版本号:7.x .net framework 1.1 window server 2003 vs2005 版本号:8.x . ...
- oracle优化原则(二)
SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...
- 25款漂亮的 WordPress 杂志主题
WordPress是一个免费和开源博客工具和一个内容管理系统(CMS)基于 PHP 和 MySQL,它运行在一个 Web 托管服务.每个月的 WordPress 主题是由开发人员,其中用户喜欢使用 W ...
- 关于call和apply的那点事儿
在JavaScript中改变闭包中的this关键字中经常用到的就是call和apply了 首先:call和apply的作用的区别是什么? 答:call和apply 的作用是相同的.都是用来改变函数th ...
- R中rJava包载入时报错的问题
今天安装XLConnect包,安装后无法library(XLConnect)载入,看报错问题应该出在rJava上,找到了下面的解决办法: if (Sys.getenv("JAVA_HOME& ...
- 转: 详解css中的display属性
在一般的CSS布局制作时候,我们常常会用到display对应值有block.none.inline这三个值.下面我们来分别来认识和学习什么时候用什么值.这里通过CSS display知识加实例讲解方法 ...
- POJ 2253 Frogger 最短路 难度:0
http://poj.org/problem?id=2253 #include <iostream> #include <queue> #include <cmath&g ...
- 关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配.”的解决办法 解决办法: $("selector").clone().html()
- Eclipse版本及其代号
1.维基百科介绍 http://zh.wikipedia.org/wiki/Eclipse 2.版本及其代号