实验楼第二次试验报告

北京电子科技学院(BESTI)

实     验    报     告

课程:Java程序设计  班级:1353  姓名:王剑桥  学号:20135316

成绩:               指导教师:娄嘉鹏     实验日期:2015.5.6

实验密级:      预习程度:        实验时间:

仪器组次:      必修/选修:选修     实验序号:2

实验名称:             JAVA面向对象程序设计

实验目的与要求:

1. 初步掌握单元测试和TDD。

2.理解并掌握面向对象三要素:封装、继承、多态。

3.初步掌握UML建模。

4.熟悉S.O.L.I.D原则。

5.了解设计模式。

实验仪器:

名称

型号

数量

PC

Lenovo

1

虚拟机

实验楼

1

一、实验步骤

Java中有单元测试工具JUnit来辅助进行TDD,我们用TDD的方式把前面百分制转五分制的例子重写一次,体会一下有测试工具支持的开发的好处。
打开Eclipse,单击File->New->Java Project新建一个TDDDemo的Java项目,如下图:

注意测试用例前一定要有注解@Test,测试用例方法名任意,代码如下:

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

之后增加测试异常情况和测试边界情况代码如下:

测试运行结果入下:

(二)面向对象三要素

(1)抽象

抽象一词的本意是指人在认识思维活动中对事物表象因素的舍弃和对本质因素的抽取。抽象是人类认识复杂事物和现象时经常使用的思维工具,抽象思维能力在程序设计中非常重要,"去粗取精、化繁为简、由表及里、异中求同"的抽象能力很大程度上决定了程序员的程序设计能力。
抽象就是抽出事物的本质特征而暂时不考虑他们的细节。对于复杂系统问题人们借助分层次抽象的方法进行问题求解;在抽象的最高层,可以使用问题环境的语言,以概括的方式叙述问题的解。在抽象的较低层,则采用过程化的方式进行描述。在描述问题解时,使用面向问题和面向实现的术语。
程序设计中,抽象包括两个方面,一是过程抽象,二是数据抽象。

(2)封装、继承与多态

面向对象(Object-Oriented)的三要素包括:封装、继承、多态。面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。OOA根据抽象关键的问题域来分解系统,关注是什么(what)。OOD是一种提供符号设计系统的面向对象的实现过程,用非常接近问题域术语的方法把系统构造成“现实世界”的对象,关注怎么做(how),通过模型来实现功能规范。OOP则在设计的基础上用编程语言(如Java)编码。贯穿OOA、OOD和OOP的主线正是抽象。
OOD中建模会用图形化的建模语言UML(Unified Modeling Language),UML是一种通用的建模语言,我们实验中使用umbrello进行建模,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,依赖倒置原则)

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、在进行增加异常测试和测试边界实验环节中,最终以致不能达到老师所给的实验结果,提示有错误,在仔细阅读两个java文件以及错误提示后,大胆的修改了老师的代码,修改结果如下:

最终达到了测试通过的实验目的。

3、整体实验来看,操作相对不熟悉,经过多次练习,提高了一定的熟练度,大胆尝试着自己独立操作,基本能够达到基础的运行结果;

三、实验收获

在经过第一次使用实验楼后,这次实验对实验楼有了一定的了解,操作起来相对没那么困难。基于老师详细的步骤,能够成功的得到实验结果。在遇到问题的时候,根据eclipse的错误提示,知道该去哪里找错误,经过仔细查阅代码,独立思考问题所在,大胆尝试修改代码,反复多次调试,最终达到实验练习的题目要求。通过这次的实验操作,学习到了TDD测试方法以及对面向对象的三要素,封装,继承,多态还有抽象等有了一定的了解和认识,弥补了知识的空白。最后又了解了SOLID设计原则,SRP(Single Responsibility Principle,单一职责原则)OCP(Open-Closed Principle,开放-封闭原则)LSP(Liskov Substitusion Principle,Liskov替换原则)ISP(Interface Segregation Principle,接口分离原则)DIP(Dependency Inversion Principle,依赖倒置原则)。这次试验收获颇多。

转载于:https://www.cnblogs.com/20135316wjq/p/4486532.html

实验楼第二次试验报告相关推荐

  1. java幻灯片效果_在PowerPoint 中,幻灯片切换效果是指(  )。

    [判断题]在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求. [单选题]在 E-R模型中,包含以下基本成分 [简答题]课程9月作业题目 有 ...

  2. 20189317 《网络攻防技术》 第二周作业

    一.黑客信息 (1)国外黑客 1971年,卡普尔从耶鲁大学毕业.在校期间,他专修心理学.语言学以及计算机学科.也就是在这时他开始对计算机萌生兴趣.他继续到研究生院深造.20世纪60年代,退学是许多人的 ...

  3. 信息安全系统设计基础学习总结第二周

    实验一: 作业 zy e http://www.cnblogs.com/zhengwei0712/p/4823168.html 实验二和实验三: http://www.cnblogs.com/zhen ...

  4. 实验楼linux指令,Linux操作命令(二)

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 该节主要讲解mkdir,rm,mv,cp,cat,nl 命令. 这里对linux常用的命令进行整理,以便日后查看. –来 ...

  5. 实验楼python3中挑战一_实验楼python3学习挑战项目

    实验楼python3学习挑战项目 在实验楼学习python3做的挑战项目做的代码整理. 链接:https://www.shiyanlou.com/courses/596 1.圆的面积 题目: 能够计算 ...

  6. matlab向万里电子版,万里学院matlab第一次试验报告格式

    万里学院matlab第一次试验报告格式 数字信号处理实验 一.实验目的 1.熟悉离散信号和系统的MATLAB 表示和产生方法: 2.熟悉线性卷积和相关的MATLAB编程方法: 二.实验内容 1.实现单 ...

  7. 实验楼第三次实验报告

    实验楼第三次试验报告 北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353 姓名:王剑桥 学号:20135316 成绩:            ...

  8. 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析

    楼赛是实验楼新上线的项目挑战.不同于侧重算法的 OJ.ACM一类的,楼赛考验的是动手能力,分析和解决问题的能力.这些正是实验楼的动手实践学IT理念所推崇的. 作为实验楼第一次常规周赛,本次三道题目有很 ...

  9. 医疗器械标准目录 第二部分专业技术领域(1)

    第二部分  专业技术领域 目录 第二部分  专业技术领域 一.外科手术器械 二.注射器(针).穿刺器械 三.外科植入物 四.计划生育器械 五.医用血管内导管及非血管内导管 六.口腔材料.器械和设备 七 ...

最新文章

  1. Akka的Hello World(二)Akka的Actor生命周期
  2. IDA Pro逆向实战之Crackme(简单篇)
  3. java垃圾回收到老年代次数,Java垃圾回收之回收算法
  4. Spring集成和Web服务
  5. 苹果自带相册打马赛克_如果你用苹果手机!学会这3个技巧,就能让手机变得更加好用...
  6. 标星7000+,这个 Python 艺术二维码生成器厉害了!
  7. 浅谈JS中的原型对象和原型链
  8. xlsx文件打开乱码_xlsx文件怎么打开乱码
  9. c语言科学计数法输出1_e10,北航13年机试--十进制数字的科学计数法表示的C语言实现...
  10. teechart for java_TeeChart java控件
  11. POWER SWOT分析
  12. 毕业生就业管理系统 C++
  13. 发现一个大牛Scott Lowe博客
  14. 弘辽科技:刷单越来越不行了吗?
  15. EMI的主要原因-共模电流
  16. JSP中访问本地图片
  17. esp32拍照传输到手机android,ESP32 之 esp32-cam wifi拍照传图系统2
  18. mysql设置固定ip地址访问_mysql设置指定ip访问,用户权限相关操作
  19. python京东购买_python大规模爬取京东
  20. 西游记中菩提老祖的真实身份

热门文章

  1. Flutter开发之布局-3-center(17)
  2. Mac-使用文本编辑的html浏览器打开出现源代码问题
  3. Redis高可用之集群配置(六)
  4. flex 嵌套 之 高度自适应
  5. Centos-移动文件或目录-mv
  6. Win10系列:UWP界面布局基础11
  7. 【javascript】—— JS判断浏览器类型、操作系统
  8. mysql数据库死锁 情景一
  9. 从大象安全套到超级表格
  10. 如何使用:before和:after伪元素?