面向对象的设计的一点心得

算法化的程序设计(略)

结构化程序设计(即结构化分析SA Structured Analysis 和结构化设计SD Structured Design)

1、采用自顶向下、逐步求精的程序设计方法

2、使用三种基本控制结构构造程序(顺序、选择、循环)

3、详细描述处理过程常用的有数据流程图、数据字典、层次方框图、流程图、结构化语言

一般步骤

分析业务流程=>画出数据流图=>提出系统总体逻辑方案=>细化数据流图,确定模块接口=>根据E-R图设计数据库=>根据模块算法编程

面向对象的程序设计(OOAD Object-Oriented Analysis & Design)

根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,对象间通过传递消息进行通信,从问题出发,模拟现实问题,建立系统模型,易于理解和实现。

1.对象(object)

2.类(class)

3.实例(instance)

4.消息(message)

消息的传递通常是通过方法调用来实现的。消息是发给对象的方法调用的通知

不同与相同

都是由目的出发,自上而下进行分析,但SA分析的结果是实现功能的各个步骤 ;OOA分析的结果是为实现目的的这一系统的组成部分,这些组成部分便是对象,他们的行为,二者并非完全割裂,对于在现实中有映射的系统,自然可以直接归纳出他的对象(自动取款机为例,包括人、银行主机、ATM三个对象),这些对象通过消息的传递实现了组成系统目的,对于全新的系统,首先使用SA&SD进行简要分析和设计,在进行抽取和归纳对象也许更简单。

举例:使用java切换内外网的网络连接(仅设计)

1、显示映射:内网(禁用无线连接->启用本地连接)无线外网(禁用本地连接->启用无线连接)

                                                                                     0   无线外网(禁用本地连接->启用无线连接)

2、结构化设计:接受信息->基本控制结构(if)

                                                                                     1  内网(禁用无线连接->启用本地连接)

3、对结构化的分析,初步看,整个流程涉及到的方法(数据)有(1)输入、(2)判断输入内容、(3)归纳输入内容为事先确定的信息(0/1)、(4)必要时反馈、(5)判断信息、(6)启用无线外网、(7)启用内网,将同一类的功能进行分类,分别有输入输出(1.2.3.4.)、判断(5)、启用-禁用(6.7)三个,,实际上,判断是启用-禁用对象应该调用哪个方法的先导步骤,因此可以将其归纳在启用-禁用中。在这个例子中,抽象对象的方法是通过归纳法进行的,将本质相同的方法(数据)归纳为一个对象,同时通过演绎的方法,将这些对象的先导(后继)步骤归纳于此对象。

可以明显看出,将同一类的方法(数据)集中在一起,便于修改维护,如果我们不使用无线外网,而是使用“本地连接2”当且仅当修改启用-禁用对象中的相关代码,而不需要考虑是否要修改其他地方的代码,而对于结构化设计,两个方法(0/1)之间相隔的距离在实践中也许相隔甚远,不限修改

另一方面,便于新代码的开发,如果试图规定,每天九点启用无线外网上传数据,并且在上传数据后重新切入内网,那么我们实际上可以直接使用启用-禁用对象,新增的对象为监视器(j监视时间/接受完成信息/调用启用-禁用对象)、上传器(上传数据/返回完成信息)

4、对象设计

总结:

对象的实质是属性(数据)+行为(方法),此处的数据是对象固有的,并非从其他对象传递而来的(封装)

OOAD的优势在于方面阅读,修改和维护,代码数量往往更多,设计时更复杂

初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,应该善用归纳和演绎法,从复杂的流程中,抽象出对象。


备注:

Unified Modeling Language (UML)(用例图)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,是以面向对象的视角来设计的,它提供了面向对象编程中需要的功能,例如类图就是最典型的。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值