探讨软件设计的过程- 诺贝尔- 博客园

面向对象的思想,先把现实中的对象转化为程序上的对象。

程序,是解决某个问题的相关步骤和次序。而实际很多时候,程序描述的是一个场景活动,首先是有主体,然后是相关活动。程序固有的含义,可能就比较关注活动,而不关注主体。

面向对象,首先要确立活动场景中的主体,也就是对象,在分析主体所担当的职责,也就是功能。过程性的开发方法,强调的是活动,那么活动的主体是什么?是数据,也就是,在过程性的观点下,程序只是数据的变换过程。而面向对象的观点,则是对象之间职责的传递:“我把我的任务完成了,然后交给你接着做”。

过程性的观点是比较低层次的,比较接近计算机的层次,而面向对象,就比较人性化。但是面向对象也离不开过程性的观点,因为程序注定还是要有人去做数据变换。

一个活动场景:办理工商执照。首先办理工商执照需要有场地,资金,合伙人,生产经营必要的工人和工具,同时要经过工商部门的审批。这些就是对象。

归纳了对象之后,往往很自然就会产生类。但是类和对象是不同层次的,对象是类的一个具体例子,类是对象的抽象。就好比3 和 x 在数学里的关系,x这个变量抽象了具体的数字,大大提高了代数式的适用性。

原则上提倡提高抽象的层次来编程,这样会提高程序的适用性。

可惜,类还不是{zg}的抽象层次,因为类和对象是紧密捆绑的,一个类的所有对象的实现都是一致的,只是数值上有细微的不同。就比如每个工商所都是这个xx流程,不同的只是名字。正因为这种局限性,所以才有了接口的出现。接口是不关注实现的,他只关注如何使用这个具体实现。

当我们需要更大的灵活性时,不满足只是数值上的差异时,想要结构上的,根本上的不同实现时,就要基于接口来编程。

另一个方法是产生子类,子类把父类当作接口,但却继承了他的所有实现。有时候方便,因为毕竟你并不需要全盘推倒,只需要修改某些局部实现,但是有时候反而容易搞混。

我认为,当要用子类化的方法编程,首先就要规划好整个类族结构,而不只是简单的为了把父类当作接口。

然后关于类的设计,只有一个简单的原则,“名副其实”。

活动场景中的主体,是为了活动而存在的,因此他也是职责的化身,在这个框架限制内设计对象便可。

然后是活动,面向对象的活动是职责的传递,应该如何构建这个传递过程?是接下来的重点。

郑重声明:资讯 【探讨软件设计的过程- 诺贝尔- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——