# 20202316 2021-2022-1 《数据结构与面向对象程序设计》实验报告
课程:《程序设计与数据结构》
班级: 2023
姓名:饶坤
学号:20202316
实验教师:王志强
实验日期:2021年9月30日
必修/选修: 必修
## 1.实验内容
下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 完成蓝墨云上 (1)-(5)实验。
## 2.实验过程及结果
1. 初步掌握单元测试和TDD
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
测试一MyUtilTest便是一个列子
截图:
二.理解并掌握面向对象三要素:封装、继承、多态
(1)什么是封装?
封装可以隐藏实现细节,使得代码模块化;在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
(2)封装的意义?
1封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。
2保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装 。
3方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==> 方法封装。
4当对象含有完整的属性和与之对应的方法时称为封装
。
5从对象外面不能直接访问对象的属性,只能通过和该属性对应的方法访问。
6对象的方法可以接收对象外面的消息。
下面是我在网上所看到的一个封装student的程序,别人无法修改(private表示最小访问权)
什么是继承?
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。
通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现
继承的实现方式
特点:1.复用性的提高 2.子类可以应用分类属性 3.设计程序简单了。
子类继承父类属性和方法也可以覆盖父类方法。
什么是多态?
多态是同一个行为具有多个不同表现形式或形态的能力
特点:1.灵活性2.可扩充性.3.可替换性.
三.初步掌握UML建模
对实验二的Caculator建模
蓝墨云上的四个实验如下(1)-(4)
(1)
(2)
(3)
(4)
(5)
## 3. 实验过程中遇到的问题和解决过程
- 问题1: 我一开始是真不知道封装、继承、多态这几个的真正的区别和特点,总是在运用的时候把他们搞混
- 问题1解决方案: 我在网上查找了一些相应的资料,并且还找到了一些可供参考的典型代码,我都记下了
- 问题2:junit的配置问题,不会配置
- 问题2解决方案: 在云班课以及网上查询
## 其他(感悟、思考等)
每一次的实验我都能学到许多新的知识,这一次就学到了封装、继承、多态这几个新的词汇,以及在一定程度上对他们进行运用编程,虽然还不是很熟练,但多练总会好,总会熟练的。