20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计
20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计
实验内容
初步掌握单元测试和TDD
理解并掌握面向对象三要素:封装、继承、多态
初步掌握UML建模
熟悉S.O.L.I.D原则
了解设计模式
实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
- 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验过程
- 题目1:使用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。类图中只少两个类。
- 题目2:提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印
任务:以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)
- 题目3:实验二 Java面向对象程序设计(http://www.cnblogs.com/rocedu/p/4472842.html)
对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号%6进行取余运算,根据结果进行代码扩充:
0: 让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
1: 让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
2: 让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
3: 让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
5: 让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 题目4:参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)
以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。 - 题目5:参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号
- 题目6:提交:
码云上你完成的代码的链接。
任务:
//定义一个数组
int arr[] = {1,2,3,4,5,6,7,8};
//打印原始数组的值
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码删除上面数组中的5
...
//打印出 1 2 3 4 6 7 8 0
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码再在4后面5
...
//打印出 1 2 3 4 5 6 7 8
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
实验知识点
- 有关伪代码、产品代码、测试代码:
伪代码:是对程序要完成的操作所进行的需求清单,不用代码写,用中文或英文来写
产品代码:实现这些需求的代码。
测试代码:对产品代码检测是否哦能够通过运行。
- TDD(Test Driven Devlopment, 测试驱动开发)
平常都是先打产品代码,再加以实例进行测试,但这样有时候会导致效率和精度比较低,很容易出错,TDD开发方式就是要反其道而行之,先把测试代码给打出来,然后根据测试代码来设计产品代码。【截图19】
- UML类
UML是一种通用的建模语言,通过UML类图,可以更加直观地分析图面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。 - S.O.L.I.D原则
SOLID原则即:
SRP(Single Responsibility Principle,单一职责原则)
OCP(Open-Closed Principle,开放-封闭原则)
LSP(Liskov Substitusion Principle,Liskov替换原则)
ISP(Interface Segregation Principle,接口分离原则)
DIP(Dependency Inversion Principle,依赖倒置原则)
- SRP原则:决不要有一个以上的理由修改一个类
一个类就应当有这个类相应地职能与责任,将多个职责放在一个类中,容易生成所谓的“上帝类”,在面向对象的开发思想中,每个类都应该做到高内聚,一个类就是一个小类,它有它应该负责的领域,这样才方便复用。
- OCP原则:软件实体(类,模块,函数等)应该对扩充开放,对修改封闭
代码应当只对扩充代码进行开放,而对修改代码进行封闭。这样能够保证数据的完整性和安全性,使用价值更高。
- LSP原则:子类必须可以被其基类所代替;
使用指向基类的指针或引用的函数,必须能够在不知道具体派生类对象类型的情况下使用它。
-ISP原则:客户不应该依赖他们并未使用的接口
并非所有类都是给客户使用,也不是所有方法都是客户有权使用的。因此我们定义方法就要有限制,客户可以用什么,不可以用什么都是我们应该在程序设计中所规划的。
- DIP原则:
高层模块不应该依赖于低层模块。
二者都应该依赖于抽象
抽象不应该依赖于细节。
细节应该依赖于抽象
在类层级中,层级越高就应该越抽象,所起的作用就越公共,下面层级的类都应该依赖于高层的抽象类,这样才能更好根据不同的需求写不同的方法,同时又省去了繁杂的代码。
实验感悟
- 这次实验的知识很丰富,可以说TDD和SOLID原则极大成地提高我们作为一名程序员的素质,但我们的知识库有限,很多知识都不能进行有效的吸收,甚至我到现在测试代码也不能完全掌握,个人也认为先写产品代码要舒服得多,顺利得多,效率快得多。此外,这些实验题目的难度也是出乎本人所料,很容易不知道从哪里下手。但这种弊端估计是暂时的,随着我们的深入学习,以及实验的多做多练,水平估计还是会有一定的提升。
20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计的更多相关文章
- 20162321王彪-实验二-Java面向对象程序设计
实验二Java面向对象程序设计 实验内容一 初步掌握单元测试和TDD 什么是单元测试:单元测试时开发者编写的一小段代码,用于检测被测代码的一个很小的,很明确的功能是否正确.执行单元测试,是为了证明某段 ...
- 20175314 实验二 Java面向对象程序设计
20175314 实验二 Java面向对象程序设计 一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二 ...
- 20155303 实验二 Java面向对象程序设计
20155303 实验二 Java面向对象程序设计 目录 一.单元测试和TDD 任务一:实现百分制成绩转成"优.良.中.及格.不及格"五级制成绩的功能 任务二:以TDD的方式研究学 ...
- 20145326《Java程序设计》实验二Java面向对象程序设计实验报告
20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20155217 实验二 Java面向对象程序设计 实验报告
20155217 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模 ...
- 20162305 实验二 Java面向对象程序设计 实验报告
20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- 干货:JVM 堆内存和非堆内存
堆和非堆内存 按照官方的说法:"Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的."" ...
- npm包管理器相关知识
关于npm包安装命令的介绍,如下图:
- 笔记-JS高级程序设计-基本概念篇
1:JS中的一切(变量,函数名和操作符)都是区分大小写的 2:标识符(变量,函数,属性的名字,以及函数的参数),第一个字符必须是字母,下划线,或者美元$,书写方式采用驼峰式,不能将关键字作为标识符. ...
- OAutho2 请求响应格式
1.OAuth2.PasswordGrant REQUEST: POST /token HTTP/1.1 Host: localhost: Content-Type: application/x-ww ...
- uwsgi服务启动(start)停止(stop)重新装载(reload)
1. 添加uwsgi相关文件 在之前的文章跟讲到过centos中搭建nginx+uwsgi+flask运行环境,本节就基于那一次的配置进行说明. 在www中创建uwsgi文件夹,用来存放uwsgi相关 ...
- button 和input 的区别及在表单form中的用法
先说一下button 和input的定义: <button> 标签定义的是一个按钮 1.在 <button> 元素内部,您可以放置任何内容,比如文本或图像.这是该元素与使用 & ...
- Facebook兆级别图片存储及每秒百万级别图片查询原理
前言 Facebook(后面简称fb)是世界最大的社交平台,需要存储的数据时刻都在不断剧增(占比最大为图片,每天存储约20亿张,大概是微信的三倍). 那么问题来了,fb是如何存储兆级别的图片?并且又是 ...
- js获取元素的滚动高度,和距离顶部的高度
jq: 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 $(doc ...
- tcpdump抓包工具的使用
个人原创,转载请注明,否则依法追究法律责任 2018-02-28 16:01:26 tcpdump 倾倒网络传输数据,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 1 不接任何参数 ...
- ubuntu14.04行更新软件包
ubuntu14.04行更新软件包 headsen chen 2017-10-12 16:01:34 apt-get update对应的就是第一步. apt-get upgrade 与apt-g ...