20145316《Java程序设计》实验二报告
20145316《Java程序设计》实验二报告
一、实验目的与要求
- 1.初步掌握单元测试和TDD。
- 2.理解并掌握面向对象三要素:封装、继承、多态。
- 3.初步掌握UML建模。
- 4.熟悉S.O.L.I.D原则。
- 5.了解设计模式。
二、实验内容
(一)单元测试和TDD
Java中有单元测试工具JUnit来辅助进行TDD,我们用TDD的方式把前面百分制转五分制的例子重写一次,体会一下有测试工具支持的开发的好处。
- 1.打开Eclipse,单击
File->New->Java Project新建一个TDDDemo的Java项目。 - 2.注意测试用例前一定要有注解
@Test,测试用例方法名任意,代码如下:

- 3.经过测试修改,最终结果如下:

- 4.之后增加测试异常情况和测试边界情况,测试运行结果入下:

(二)面向对象三要素
1.抽象: 抽象一词的本意是指人在认识思维活动中对事物表象因素的舍弃和对本质因素的抽取。抽象是人类认识复杂事物和现象时经常使用的思维工具,抽象思维能力在程序设计中非常重要,"去粗取精、化繁为简、由表及里、异中求同"的抽象能力很大程度上决定了程序员的程序设计能力。
抽象就是抽出事物的本质特征而暂时不考虑他们的细节。对于复杂系统问题人们借助分层次抽象的方法进行问题求解;在抽象的最高层,可以使用问题环境的语言,以概括的方式叙述问题的解。在抽象的较低层,则采用过程化的方式进行描述。在描述问题解时,使用面向问题和面向实现的术语。
程序设计中,抽象包括两个方面,一是过程抽象,二是数据抽象。2.封装、继承与多态:面向对象(Object-Oriented)的三要素包括:封装、继承、多态。面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。OOA根据抽象关键的问题域来分解系统,关注是什么(what)。OOD是一种提供符号设计系统的面向对象的实现过程,用非常接近问题域术语的方法把系统构造成“现实世界”的对象,关注怎么做(how),通过模型来实现功能规范。OOP则在设计的基础上用编程语言(如Java)编码。贯穿OOA、OOD和OOP的主线正是抽象。
OOD中建模会用图形化的建模语言UML(Unified Modeling Language),UML是一种通用的建模语言,Windows中推荐大家使用StarUML。
过程抽象的结果是函数,数据抽象的结果是抽象数据类型(Abstract Data Type,ADT),类可以作具有继承和多态机制的ADT。数据抽象才是OOP的核心和起源。

(三)设计模式初步
(1)S.O.L.I.D原则
面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:
SRP(Single Responsibility Principle,单一职责原则)OCP(Open-Closed Principle,开放-封闭原则)LSP(Liskov Substitusion Principle,Liskov替换原则)ISP(Interface Segregation Principle,接口分离原则)DIP(Dependency Inversion Principle,依赖倒置原则)
(2)OCP是OOD中最重要的一个原则。
OCP的内容是:software entities (class, modules, function, etc.) should open for extension,but closed for modification.
软件实体(类,模块,函数等)应该对扩充开放,对修改封闭。
对扩充开放(Open For Extension )要求软件模块的行为必须是可以扩充的,在应用需求改变或需要满足新的应用需求时,我们要让模块以不同的方式工作; 对修改封闭(Closed for Modification )要求模块的源代码是不可改动的,任何人都不许修改已有模块的源代码。 基于OCP,利用面向对象中的多态性(Polymorphic),更灵活地处理变更拥抱变化,OCP可以用以下手段实现:(1)抽象和继承,(2)面向接口编程。(四)练习
1、使用TDD的方式设计关实现复数类Complex。
(1)伪代码
1,定义一个复数类,分别用变量表示复数的实部和虚部。
2,通过复数类的实部和虚部分别相加减实现复数的相加减。
3,按照复数的格式将复数打印出来
(2)产品代码

(3)测试代码



三、实验遇到的问题及解决
- 1、在本次试验中,基本掌握了TDD测试方法,由于粗心,第一次实验的时候在进行测试代码编写时忘记输入@Test,导致实验结果失败,进过反复查看老师代码后成功找到错误所在解决了该问题;
2、整体实验来看,操作相对不熟悉,经过多次练习,提高了一定的熟练度,大胆尝试着自己独立操作,基本能够达到基础的运行结果;
四、实验收获
在经过第一次实验后,这次实验操作起来相对没那么困难。基于老师详细的步骤,能够成功的得到实验结果。在遇到问题的时候,根据eclipse的错误提示,知道该去哪里找错误,经过仔细查阅代码,独立思考问题所在,大胆尝试修改代码,反复多次调试,最终达到实验练习的题目要求。通过这次的实验操作,学习到了TDD测试方法以及对面向对象的三要素,封装,继承,多态还有抽象等有了一定的了解和认识,弥补了知识的空白。最后又了解了S.O.L.I.D设计原则等。这次试验收获颇多。
20145316《Java程序设计》实验二报告的更多相关文章
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- JAVA程序设计 实验一报告
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1351 姓名:李畅宇 学号:20135129 成绩: 指导教师:娄嘉鹏 ...
- 20145301《Java程序设计》实验二报告:Java面向对象程序设计
20145301<Java程序设计>实验二报告:Java面向对象程序设计 课程:Java程序设计 实验名称:Java面向对象程序设计 实验目的与要求: 初步掌握单元测试和TDD 理解并掌握 ...
- 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- 20172301 《Java软件结构与数据结构》实验二报告
20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- 201843 2019-2020-2 《Python程序设计》实验二报告
201843 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:20184302 实验教师:王 ...
- 20192113 2020-2021-2 《Python程序设计》实验二报告
20192113 2020-2021-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1921 姓名: 衣丽莎 学号:20192113 实验教师 ...
- 201922904李龙威 2019-2020-2 《Python程序设计》实验二报告
20192204 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1922 姓名: 李龙威 学号:20192204 实验教师 ...
- Java程序设计实验 实验五
课程:Java程序设计实验 班级:1353 姓名:符余佳源 学号:20135321 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...
随机推荐
- Jquery-easyUi------(布局)
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <! ...
- 当苹果因为UIDevice、udid、uniqueIdentifier而把我们的应用拒之门外invalid binary的时候,呕心沥血解决方法啊
本文转载至 http://blog.csdn.net/macmini/article/details/16341669 当我们辛辛苦苦把应用或者游戏做好的时候,满怀激动地把应用提交上去给苹果大大,谁知 ...
- 《转》武汉的IT公司
本文转载自sherry020406前段时间看到版上有同学问在武汉找工作的情况,我谈谈去年找工作时碰到或者听到的一些企业,希望以下内容对想去武汉工作的同学有帮助,也算是对job版的回报.有些公司的情况可 ...
- SQL TRIM()函数去除字符串头尾空格
SQL TRIM()函数去除字符串头尾空格 SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾.最常见的用途是移除字首或字尾的空白.这个函数在不同的资料库中有不同的名称: MySQL: T ...
- 关于Win7 x64下过TP保护(应用层)(转)
非常感谢大家那么支持我上一篇教程.Win10 快出了,所以我打算尽快把应用层的部分说完. 调试对象:DXF调试工具:CE.OD.PCHunter.Windbg调试先言:TP的应用层保护做得比较多,包括 ...
- docker的私有仓库的搭建
author: headsen chen date:2018-06-30 23:14:16 服务端(私有仓库:centos7_64位),使用端:centos6_64位 1.仓库的搭建: 安装dock ...
- 【BZOJ2553】[BeiJing2011]禁忌 AC自动机+期望DP+矩阵乘法
[BZOJ2553][BeiJing2011]禁忌 Description Magic Land上的人们总是提起那个传说:他们的祖先John在那个东方岛屿帮助Koishi与其姐姐Satori最终战平. ...
- .net应用程序安装部署时异常 Error 1001. 在初始化安装时发生异常 System.BadImageFormatException:未能加载文件或程序集 的解决办法【成功解决】
采用.net 4.0框架开发的一个桌面应用程序在某学校的一体机(Windows7的32位操作系统)上做安装部署时抛出异常,安装程序回滚,多次尝试仍不成功. Error 1001. 在初始化安装时发生异 ...
- Spoken English Practice (yesterday) (Look, I just wanted to apologize again for yesterday? It's fine, I know you didn't mean it. / when I say it, I mean it.)
绿色:连读: 红色:略读: 蓝色:浊化: 橙色:弱读 下划线_为浊化 口语蜕变(2017/7/12) ...
- 通过实现一个TableView来理解iOS UI编程
推荐一篇神作: 通过实现一个TableView来理解iOS UI编程 http://blog.jobbole.com/61101/