面向对象改造——50道100以内的加减法口算习题
接上篇文章,50道100以内的加减法口算习题的模块化改造基础上,对其进行面向对象的进一步改造
上文链接: link.
文章目录
- 面向对象改造——50道100以内的加减法口算习题
- 前言
- 一、算式类BinaryOperation
-
- 1.设计原则
- 2.UML图
- 3.代码实现
- 二、 Exercise习题类与实现
-
- 1.设计原则
- 2.数据结构的选取
- 3.UML图
- 4.代码实现
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、算式类BinaryOperation
1.设计原则
类 BinaryOperation
? 把其中的公共部分抽象出来,把差异部分细化成BinaryOperation 的两个子类:
– 加法算式AdditionOperation
– 减法算式SubstractOperation
? 每个类叧负责完成各自单一的功能,两个子类相互独立。
? 这样的程序结构还便于程序扩展,如增加乘法、除法子类,不影响已经存在的类。
基类BinaryOperation 设计成抽象类。
? 子类AdditionOperation 和SubstractOperation
? 在基类中定义抽象斱法int calculate()返回运算式的计算结果,抽象方法boolean checkingCalculation()检查运算结果。具体实现则分别在两个子类中。
2.UML图
② AdditionOperation 加法算式子类
③ SubstractOperation 减法算式子类
二、 Exercise习题类与实现
1.设计原则
按照单一职责原则,把类Exercise 的产生职责和使用职责分离出来,使类Exercise
仅仅作为一个存储和管理一定数量的算式题的数据集容器,同时建立一个使用习题
的新类ExerciseSheet。
2.数据结构的选取
– ExerciseSheet无法访问类Exercise中存放算式的私有成员operationList。为了能讥其仑对象使用Exercise 中存储在Array 中的算式,它必项提供公共操作,如检索、遍历等。
– 类Exercise可以选择其仑数据集的数据结构,存放算式。面向对象语言的容器型数据结构,如List、Queue、Stack 等。Java 语言的Collection(C#的ICollection)类局次结构提供了丰富的管理数据集的数据结构、接口和(抽象)类。
3.UML图
最终实现的类关系图:

4.代码实现
① Exercise习题类
import java.util.ArrayList;import java.util.Random;/** * 习题类Exercise * 策略3:让Exercise类里包含ArrayList,提供next()和hasNext()公共方法, * 让客户能够遍历ArrayList里面的元素 * @author lenovo * */public class Exercise { // 存放算式的动态数组 private ArrayListBinaryOperation声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!