面向对象改造——50道100以内的加减法口算习题

面向对象改造——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图

面向对象改造——50道100以内的加减法口算习题

② AdditionOperation 加法算式子类

③ SubstractOperation 减法算式子类


二、 Exercise习题类与实现

1.设计原则

按照单一职责原则,把类Exercise 的产生职责和使用职责分离出来,使类Exercise
仅仅作为一个存储和管理一定数量的算式题的数据集容器,同时建立一个使用习题
的新类ExerciseSheet。


2.数据结构的选取

– ExerciseSheet无法访问类Exercise中存放算式的私有成员operationList。为了能讥其仑对象使用Exercise 中存储在Array 中的算式,它必项提供公共操作,如检索、遍历等。

– 类Exercise可以选择其仑数据集的数据结构,存放算式。面向对象语言的容器型数据结构,如List、Queue、Stack 等。Java 语言的Collection(C#的ICollection)类局次结构提供了丰富的管理数据集的数据结构、接口和(抽象)类。


3.UML图

最终实现的类关系图:

面向对象改造——50道100以内的加减法口算习题

4.代码实现

① Exercise习题类

import java.util.ArrayList;import java.util.Random;/** * 习题类Exercise * 策略3:让Exercise类里包含ArrayList,提供next()和hasNext()公共方法, * 让客户能够遍历ArrayList里面的元素 * @author lenovo * */public class Exercise {	// 存放算式的动态数组	private ArrayListBinaryOperation来源:Avanti1v
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月22日
下一篇 2020年10月22日

相关推荐