Java面向对象程序设计
北京电子科技学院(BESTI)
实 验 报 告
课程:Java 班级:1352 姓名:马悦 学号:20135235
成绩: 指导教师:娄嘉鹏 实验日期:2015.05.07
实验密级: 预习程度: 实验时间:18:30~21:00
仪器组次: 必修/选修:选修 实验序号:2
实验名称: Java面向对象程序设计
实验目的: 1.初步掌握单元测试和TDD;
2.理解并掌握面向对象三要素:封装、继承、多态;
3.初步掌握UML建模;
4.熟悉S.O.L.I.D原则;了解设计模式。
5.了解设计模式。
实验要求:
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查 找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3.严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
4.请大家先在实验楼中的~/Code目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习。
实验仪器:
|
名称 |
型号 |
数量 |
|
计算机 |
ThinkPad |
1 |
|
虚拟机 |
实验楼 |
1 |
实验内容:
(一)单元测试
(1)三种代码
(2) TDD(Test Driven Devlopment, 测试驱动开发)
(二)面向对象三要素
(1)抽象
(2)封装、继承与多态
(三)设计模式初步
(1)S.O.L.I.D原则
(2)模式与设计模式
(3)设计模式实示例
(四)练习
(1)使用TDD的方式设计关实现复数类Complex。
(2)实验报告中统计自己的PSP(Personal Software Process)时间
(3)实验要有伪代码,产品代码,测试代码。
实验步骤:
实验一:单元测试



实验二:面向对象三要素


实验三:设计模式初步
(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)模式与设计模式
模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。 计算机科学中有很多模式:
- GRASP模式
- 分析模式
- 软件体系结构模式
- 设计模式:创建型,结构型,行为型
- 管理模式: The Manager Pool 实现模式
- 界面设计交互模式
- …
这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。
(3)设计模式实示例
设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。


实验四:练习
1.伪代码:
Complex类要输出实部,输出虚部,并按照a+bi的形式输出复数。
Complex类中有两个变量,实部RealPart和虚部ImaginePart;
方法:
getRealPart(int RealPart);返回实部
getImaginePart(int ImaginePart);返回虚部
toString(int RealPart,int ImaginePart);将复数输出成a+bi的格式。
2.测试代码:
import org.junit.Test;
import junit.framework.TestCase;
public class MyComplexTest extends TestCase {
@Test
public void testRealPart() {
assertEquals(1, MyComplex.getRealPart(1));
assertEquals(-1, MyComplex.getRealPart(-1));
assertEquals(5, MyComplex.getRealPart(5));
assertEquals(22, MyComplex.getRealPart(22));
assertEquals(-100, MyComplex.getRealPart(-100));
assertEquals(0, MyComplex.getRealPart(0));
}
@Test
public void testImaginePart(){
assertEquals(1, MyComplex.getImaginePart(1));
assertEquals(-1, MyComplex.getImaginePart(-1));
assertEquals(5, MyComplex.getImaginePart(5));
assertEquals(22, MyComplex.getImaginePart(22));
assertEquals(-100, MyComplex.getImaginePart(-100));
assertEquals(0, MyComplex.getImaginePart(0));
}
@Test
public void testtoString(){
assertEquals("1+2i", MyComplex.toString(1,2));
assertEquals("1-4i", MyComplex.toString(1,-4));
assertEquals("19", MyComplex.toString(19,0));
assertEquals("-3i", MyComplex.toString(0,-3));
assertEquals("0", MyComplex.toString(0,0));
}
}
3.产品代码:
public class MyComplex {
static int r;
static int i;
public static int getRealPart(int RealPart){
r = RealPart;
return r;
}
public static int getImaginePart(int ImaginePart){
i = ImaginePart;
return i;
}
public static String toString (int RealPart,int ImaginePart){
if(RealPart==0 && ImaginePart==0)
return "0";
else if(RealPart == 0)
return ImaginePart+"i";
else if(ImaginePart == 0)
return RealPart+"";
else
{
if(ImaginePart>0)
return RealPart+"+"+ImaginePart+"i";
else if(ImaginePart<0)
return RealPart+""+ImaginePart+"i";
}
return "Wrong!";
}
}

PSP时间分析:
|
步骤 |
耗时 |
百分比 |
|
需求分析 |
10min |
10% |
|
设计 |
15 |
15% |
|
代码实现 |
30 |
30% |
|
测试 |
30 |
30% |
|
分析总结 |
15 |
15% |
实验心得:
试验中Complex类的实现比较难,不知道Complex需要实现什么方法,对TDD的方法也不是很熟悉,不知道需要测试什么。而且在UML画图时,忘记了画箭头,随后补上了。我觉得这次实验相比较第一次实验是有难度的,知识点和内容远比上一次的多,感觉自己的知识掌握的并不牢靠,只是简单的记忆,并不能活学活用,其次,由于一些客观原因(电脑系统,网速等),没能在此次实验中全程使用虚拟机。
虽然编写代码时有些困难,但是我觉得java面向对象的思想很好,有助于理清思路,使程序看起来井井有条,清楚明白。然而,课下还需要对理论知识进行梳理巩固,在今后的学习中多加练习,做得更好。
Java面向对象程序设计的更多相关文章
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告
20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- 20145113 实验二 Java面向对象程序设计
20145113 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 1.初 ...
- JAVA课程实验报告 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225唐振远 实验二 "Java面向对象程序设计"
20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
随机推荐
- [图解tensorflow源码] TF系统概述篇
Rendezvous 1. 定义在core/framework/rendezvous.h 2. A Rendezvous is an abstraction for passing a Tensor ...
- ucos串口通讯模块设计
在嵌入式应用中,使用RTOS的主要原因是为了提高系统的可靠性,其次是提高开发效率.缩短开发周期.uCOS-II是一个占先式实时多任务内核,使用对象是嵌入式系统,对源代码适当裁减,很容易移植到8~32位 ...
- Log4J日志配置与Juit测试
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器).Appenders(输出源)和Layouts(布局). 这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- 渲染引擎,HTML解析
这是how browser to work 的翻译 转自:携程设计委员会 渲染引擎 渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上. 默认情况下渲染引擎可以显示HTML,XML文档以及 ...
- Docker Cache mechanism
Docker build 的 cache 机制: Docker Daemon 通过 Dockerfile 构建镜像时,当发现即将新构建出的镜像 与已有的新镜像重复时,可以选择放弃构建新的镜像,而是选用 ...
- webBrowser.Document.Cookie取不到HttpOnly的Cookie,取Cookie不完整
在做数据采集时,有些网站需要输入验证码,但各网站验证码都不同,不可能有完美的识别验证码的代码,所以我也没去研究,我所采取的方案是:在winform里通过WebBrowser调用网页先手动登录系统,然后 ...
- 2017-2018-1 20155234 实验三 实时系统及mypwd实现
2017-2018-1 20155234实验三实时系统及mypwd实现 实验三-并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号 ...
- kali base64命令的使用
1.启动终端 2.输入base64 3.输入需要编码的字符串 4,CTRL+D,结束输入,在屏幕上回显输出结果
- 负载均衡@StackExchange.Redis实现Session外置--纯干货喂饱你
Redis和StackExchange.Redis redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库 ...
- yum 出现error: db5 error
yum 安装k8s的过程中用了 Ctrl+ z, 然后yum 再也不能使用了: Error: rpmdb open failed 解决方法: rpm --rebuilddb yum clean all ...