北京电子科技学院(BESTI)

实    验    报    告

课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219

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

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

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

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

实验目的与要求:

目的:

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

要求:

1.完成实验、撰写实验报告,以博客方式发表在博客园

2.实验报告重点是运行结果、遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法

3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施

实验仪器:

名称 型号 数量
PC MAC 1

实验步骤:

(一)单元测试

1.三种代码

伪代码:以简洁的自然语言表明设计步骤;

产品代码:用以实现特定功能的程序或机器语言;

测试代码:用以对产品代码进行测试的代码

应用举例:学生考试等级划分程序产品代码

产品代码:

测试代码:

测试一:选取某一合法输入值进行测试

测试二:测试各个等级数值

测试三:测试边界情况、测试非法数值输入

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

以程序测试推动程序开发即先写测试代码,然后再写产品代码的开发方式

java中有单元测试工具JUnit来辅助进行TDD,具体过程见下:

java——〉File——〉New——〉Java Project——〉TDDDemo——〉右键单击TDDDemo——〉New——〉Source Folder——〉test——右键单击test——〉New——〉JUnit Test Case——〉MyUtilTest——〉其superclass改为junit.framework.TestCase

在src中新建MyUtil类并输入产品代码,然后运行测试代码(Run as——> JUnit Test)

运行结果如下(分别为修改产品代码前后测试结果):

(二)面向对象三要素

封装、继承与多态

封装:将与某一将数据与相关行为包装在一起以实现信息就隐藏,核心内容是模块化和信息隐藏,与此相伴的是接口的使用

封装示例

利用umbrello软件,可以将以上思路进行具象化表示

继承:以封装为基础,一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用。其更为广泛而重要的作用是实现多态,

继承示例:

Dog类和Cat类都有Color属性和相应的setter和getter方法,可以通过继承使其精炼化,把Color属性和相应的setter和getter方法放到父类Animal中

(三)设计模式初步

(1)S.O.L.I.D原则

SRP(Single Responsibility Principle,单一职责原则):对象提供单一职责的高度封装,对象的改变仅仅依赖于单一职责的改变

OCP(Open-Closed Principle,开放-封闭原则):即对扩充开放(功能可增加),对修改封闭(源代码不可改动)

OCP实现手段:(1)抽象和继承,(2)面向接口编程

LSP(Liskov Substitusion Principle,Liskov替换原则):子类必须可以被其基类所代,父类型对象可以被子类型对象所取代

ISP(Interface Segregation Principle,接口分离原则):客户不应该依赖他们并未使用的接口

DIP(Dependency Inversion Principle,依赖倒置原则)

(2)模式与设计模式

模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道。其中最重要的是设计模式。

(3)设计模式实示例

设计模式四个基本元素

Pattern name:描述模式,便于交流,存档

Problem:描述何处应用该模式

Solution:描述一个设计的组成元素,不针对特例

Consequence:应用该模式的结果和权衡

示例及运行结果:

(四)练习

1.使用TDD的方式设计实现复数类Complex。

设计思路:在测试类中,人为设置测验标准(即注明若干情况下的输出量,应本着尽可能全面的原则);在产品代码中,为了符合测试类标准,应该分情况进行输出。

代码实现及运行结果:

2.PSP统计:

步骤 耗时 百分比
需求分析 2min 10%
设计 3min 14%
代码实现 5min 24%
测试 3min 14%
分析总结 8min 38%

Java第二次实验报告——Java面向对象程序设计的更多相关文章

  1. java第二次实验报告

    课程:Java实验   班级:201352     姓名:池彬宁  学号:20135212 成绩:             指导教师:娄佳鹏   实验日期:15.05.05 实验密级:         ...

  2. java第二次实验报告20135231

    Java实验报告二:Java面向对象程序设计 20135231 何佳 实验要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉 ...

  3. 20165210 Java第二次实验报告

    20165210 实验二 Java面向对象程序设计 一.面向对象程序设计1--单元测试和TDD 实验要求 参考 http://www.cnblogs.com/rocedu/p/6371315.html ...

  4. 南京邮电大学java第二次实验报告

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

  5. 20145330《Java程序设计》第二次实验报告

    20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ...

  6. 20145320《Java程序设计》第二次实验报告

    20145320<Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.12 15: ...

  7. 《Java程序设计》第二次实验报告

    20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...

  8. 20145333 《Java程序设计》第二次实验报告

    2014333 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测试 ...

  9. 20145240 《Java程序设计》第二次实验报告

    20145240 <Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验 ...

随机推荐

  1. python爬虫实例大全

    WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典. DouBanSpider [2]- ...

  2. Response对象及常用方法

    void addCookie(Cookie cookie)给客户端添加一个Cookie对象,以保存客户端的信息 void addDateHeader(String name,long value) 添 ...

  3. 【转载】OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较

    原文作者 : Satya Mallick 译者 : aleen42 原文  https://aleen42.gitbooks.io/personalwiki/content/translation/o ...

  4. Struts2中Action各种转发类型

    Struts2:Action中result的各种转发类型: 内部请求转发dispatcher(默认值) redirect.redirectAction.plainText1.redirect是重定向到 ...

  5. MongoDB3.2 集群搭建

    一.集群的理论知识 1.1 集群成员 MongoDB的集群类似于GreenPlum集群,由一个入口节点负责任务分发与结果统计,分片结节负责执行任务.不同GP,多了一个config servers. 集 ...

  6. redis切换数据库的方法【jedis】

    package com.test; import redis.clients.jedis.Jedis; public class readredis { public static void main ...

  7. 【week2】Scrum中的站立会议

    Scrum站立会议    站立会议给我的第一印象就是站着开会,在经过我查阅资料之后,发现也是差不多的意思.学术一点的分析就是在Sprint开始后,团队将会在每个工作日特定时间举行一个简短会议,每次会议 ...

  8. (转)《linux性能及调优指南》 3.3 内存瓶颈

    翻译:Hank (http://blog.csdn.net/fireroll)版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明.原文名称:<Linux Performance an ...

  9. listBox和pictureBox的使用

    重要属性:pictureBox中SizeMode可以更改图像显示的尺寸大小. using System; using System.Collections.Generic; using System. ...

  10. c++读取文件夹及子文件夹数据

    这里有两种情况:读取文件夹下所有嵌套的子文件夹里的所有文件  和 读取文件夹下的指定子文件夹(或所有子文件夹里指定的文件名) <ps,里面和file文件有关的结构体类型和方法在 <io.h ...