课程作业四——梳理面向对象的思想及列出类图

在类图辅助下的一次完善编码

Part 1 背景

OOA(Object Oriented Analysis,面向对象分析):

从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能够反映真实情况的需求模型。

OOD(Object Oriented Design,面向对象设计):

将面向对象分析阶段形成的需求模型进一步具体设计。如类的设计(继承、派生、类与类之间的消息协作)、算法的设计等。采取通用的工具,如流程图、类图等来描述。

Part 2 过程

本次的任务在于作出你所想要设计的计算器程序的类图,使用类来对原先的代码实现优化。借此契机,我以边做类图边修改代码的方式,来理清思路并补全我过去代码中不完善的地方。对于原先一直困扰我的“一遇除法就出错”的问题我在这次的作业里也进行了完善(主要思路:当结果除不尽时丢弃计算式进行重新生成)。所以这次完成的计算器程序算是我相对之前完善了许多的版本。附上我的github地址:小豪的GitHub

以下图一为我对程序总结的类图,设计出的类只有两个,分别是:生成计算式的 Expression 和语言选择工具 Choice 。其他无实值的调用函数归类为接口。(因为在语言选择工具的处理上还有一些不足,所以先以内部调用函数替代,在之后我测试好以后会补上支持语言选择工具的代码)
1093071-20170516211612666-782133981.png

图二为流程图,左半边为用户角度的计算器外部运行流程,右半边为计算器自身的内部实现流程。
1093071-20170516211624088-832842236.png

Part 3 问答交流

  • 问题1:采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?
    回答1:本次设计中我的类只有两个,分别是:生成计算式的 Expression(负责随机生成数字与符号,并将其与随机括号串成字符串的形式,并且判断是否接口为整数,如若不是,则返回去重新参与生成)和 语言选择工具 Choice(负责得到用户需要的语言选项,并在过程中应用该语言去告知用户出题选择、判别结果、统计正确解题数等命令)。

  • 问题2:类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?
    回答2:在我的两项类之间联系不大,没有直接相关联的地方。

  • 问题3:该自动出题软件采取何种算法或者是如何实现的?可以采用流程图描述的方法
    回答3: 如上流程图所示,具体展现运行的实现方式,算法则应用调度场算法,之前我有给出过相关的代码,详见Part two 调度场算法的学习

Part 4 编码中的心得体会

  1. 由Dev转向VS,由一个cpp文件到多文件的文件分离,这是我这次编码的主要工作之一。其中要提到的注意点是对于调用的问题,一种类型的调用,要做到在一个.h中声明,在其包含的.cpp中定义,这样在运行的过程中,程序才会正常运作。我原先忽略这一点,在不同的.h文件中直接定义,导致程序一直无法顺利运行下去,内部理不顺。
    1093071-20170516211642650-1612044032.png

  2. 做好类图或者流程图,很大程度上对自己的编码具有指导意义,我在编码的过程中深有体会。如何设计合理的类,如何让主体程序做好各个之间的调用,怎样处理好传值等等的问题,在做图当中都能加深理解。

  3. 这次的代码就先如此,给自己梳理一下下次完善过程中的几个需解决问题
  • 用户交互过程中,当输入不符合要求时所应作出的判断与处理
  • 加入语言选择工具,去调用输出写好在txt文件中的文本

1093071-20170516211832447-1612703581.png

以上就是我本次实践中的所有成果与感悟,最后谢谢你的欣赏!

转载于:https://www.cnblogs.com/S031602219/p/6863859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象编程(Object-Oriented Programming,OOP)是一种软件开发方法,它以对象的概念作为程序的基本单元,通过封装、继承和多态等机制实现对现实世界中事物的抽象和模拟。与面向过程编程相比,面向对象编程更注重对问题域的分析和设计,具有更高的可重用性和可维护性。 面向对象的哲学体系强调对对象的研究和理解,认为事物可以被抽象为一个个独立的对象,对象具有自身的状态和行为,并且能够与其他对象进行交互。从哲学角度来看,对象是现实世界中的实体,通过抽象和模拟对象的方式来解决问题和构建系统,与现实世界的联系更加紧密。 面向对象的科学体系则强调对面向对象编程的理论和方法的研究,包括对象的基本概念、封装、继承、多态和关联等机制的探讨。这种科学体系围绕着如何更好地使用面向对象的思维方式进行软件开发展开研究,以提高软件的质量和效率。在面向对象的科学体系中,还涉及到面向对象的分析与设计、设计模式、软件架构等重要概念和方法。 面向对象的哲学体系和科学体系相互依存、相互促进。哲学体系提供了面向对象编程的思维方式和理论基础,指导软件开发者如何正确地理解和应用面向对象编程的思想。科学体系则提供了技术和方法的支持,帮助软件开发者更好地应用和实现面向对象的设计和编码。两者的结合,使得面向对象编程成为一种强大的软件开发方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值