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班 姓名:孙晓暄 ...
随机推荐
- [转]Java程序员们最常犯的10个错误
1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个 ...
- 常用的js函数
function $(){ return document.getElementById(arguments[0])}; /** * 得到上一个元素 * @param {Object} elem */ ...
- git 将本地项目添加到远程
git init git add README.md git commit -m "first commit" git remote add origin git@github.c ...
- linux service等命令不能使用的解决办法
主要是路径没添加进来: 在shell里面输入这条命令:export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin ...
- java成员变量与局部变量修饰符的区别
成员变量: 可以被 public,static ,protected,default,final修饰. 局部变量:包括方法里的和 代码块里的(静态和非静态) 可以被default, final修饰 参 ...
- java软件设计的三层结构
接口: package dao; public interface Dao { String getData(); } package biz; import dao.Dao; public inte ...
- 导航栏视图设置 tabbleView 是设置总背景图
//导航栏视图设置 tabbleView 是设置总背景图 //默认的时白色半透明(有点灰的感觉), UIBarStyleBlack,UIBarStyleBlackTranslucent ,UIBarS ...
- EF Code-First数据迁移的尝试
Code-First的方式虽然省去了大量的sql代码,但增加了迁移的操作.尝试如下: 1.首先要在“扩展管理器”里搜索并安装NuGet“库程序包管理器”,否则所有命令都不能识别,会报CommandNo ...
- C# Process打开程序并移动窗口到指定位置
process.start只是按指定的参数来运行一个程序,而这个程序自己运行起来是什么样子的就不是Process所能处理的了,不过当程序运行起来后倒是可以通过Process的MainWindowHan ...
- 'NSInteger' (aka 'long') to 'int32
怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32 ...