`
ajoo
  • 浏览: 452076 次
社区版块
存档分类
最新评论

论面向组合子程序设计方法 之 失乐园 之补充

阅读更多
失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。

这里补充一下。

如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。


没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。

这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。


至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依赖于需求分析的。test case是什么?不就是需求么?
当然,这些方法论并不要求需求百分之百的细化,它们认可变化,拥抱变化,力求变化时的代价最小。不过,不管怎么说,它们仍然是要着眼于当前的需求的,应对需求变化的能力是另外一个话题,它并不能表示这些方法论不是自顶向下。

“自底向上”确实古已有之,PO时代也确实有这个提法。但是,它的缺乏方向性,缺乏重用能力,缺乏整体组织等等弊病让它从来都没有成为设计的主流,没有成为一个主导整体或者部分设计的思想。
最多算是公有制体制内的私有制补充而已。PO时代它的地位就不高,到了OO时代,强调职责分配,它更是几乎沦为一个历史词汇了。


也许你会说,我在调用xcerces, stl的时候,难道也是自顶向下?我可从来没有给stl的作者分配过责任啊。

这其实和责任分配并不矛盾。中间如果发现可以重用的模块,只要这个模块向外承诺的责任符合我的期望,我就可以用。仍然是自顶向下,需求驱动,责任驱动。
而且,xcerces这些库设计的时候,也一样要假想一下需求,然后从需求出发的。(stl不是很一样,它一定程度上有CO的影子,从基本组合子逐渐演绎的方法在其中也有体现,比如那个iterator和所有围绕iterator的算法等)
分享到:
评论

相关推荐

    Java面向对象程序设计(第二版)

    不过,我可以基于《Java面向对象程序设计(第二版)》这个标题和标签,来详细说明Java面向对象程序设计中可能涵盖的知识点。 在深入介绍之前,首先需要明确面向对象程序设计(OOP)是一种编程范式,它使用“对象”...

    面向对象程序设计课后答案第5章第5题

    面向对象程序设计课后第二章答案,很标准的!

    Visual C++ 面向对象与可视化程序设计(第三版)4.9 清华大学

    《Visual C++ 面向对象与可视化程序设计(第三版)》是清华大学出版社出版的一本深入探讨C++编程技术的书籍,特别是针对Microsoft的Visual C++开发环境。该书第4.9章节可能涉及了C++编程语言的核心概念、面向对象...

    面向数据设计的概念Jackson系统开发方法教学目的公开课获奖课件.pptx

    面向数据设计概念是软件设计领域中的一种重要方法论,它强调按照问题数据构造定义一组映射,把问题数据构造转换为问题解程序构造。这种方法论侧重于问题数据构造,把程序构造设计成与问题数据构造一致,不强调模块...

    基于微信小程序的点餐系统设计与实现 毕业论文.docx

    本文档是一篇关于基于微信小程序的点餐系统设计与实现的毕业论文,旨在利用微信小程序这一日益普及的技术,优化餐厅点餐流程,提供便捷的在线点餐服务。论文详细介绍了系统的开发背景、技术选型、需求分析、系统设计...

    潭浩强C++面向对象程序设计

    潭浩强C++面向对象程序设计 很好的一版PPT教程

    Visual C# 2010程序设计教程(教程PPT+源代码)

    Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web...

    labview面向对象设计实例剖析

    总之,LabVIEW的面向对象设计方法通过创建具有继承关系的类、封装数据和方法、以及通过多态实现不同的功能实现,为测试测量应用程序的设计与实现提供了更加灵活和强大的工具。通过BoardTesting案例的剖析,我们可以...

    趣味C程序设计集锦.pdf

    《趣味C程序设计集锦》作为计算机C程序设计的科普读物与学习C语言程序设计的教学参考书,着眼于应用C程序设计求解问题的基本方法与技巧,提高通过C程序设计解决实际问题的能力。《趣味C程序设计集锦》以各类趣题的C...

    张玉生《C语言程序设计》双色版 C语言程序设计理论教材习题参考答案.pdf

    张玉生编写的《C语言程序设计》双色版是一本针对初学者的C语言理论教材,它包括了C语言的基础知识、语法结构、数据类型、控制结构、函数、指针、数组、字符串等核心技术内容。该教材不仅适合自学,同时也适合作为...

    《GPS应用程序设计》源代码

    《GPS应用程序设计》源代码。本软件是专为《GPS应用程序设计》一书配套发行的。包括: 1、 data_log.c 数据采集程序 2、 rinexout.c RINEX数据格式写入子程序 3、 to_rinex.c 数据格式转换 4、 sav_pos.c 卫星位置...

    《最优化计算方法及其MATLAB程序实现》(最新版)电子资料

    《最优化计算方法及其MATLAB程序实现》是马昌凤教授的一部专著,主要针对在实际问题中应用最优化理论与技术进行深入探讨。该书结合MATLAB编程,为读者提供了一套实用的数学工具,帮助理解并解决各种优化问题。最新版...

    MFC Windows程序设计(第2版修订版)--源代码

    本书的作者,jeff prosise,用其无与伦比的技巧向读者讲述了mfc程序设计中的基本概念和主要技术——再次阐释了在32位windows平台上进行了快速的面向对象开发的完美方法。  本书涵盖了以下专题:  事件驱动程序设计...

    JAVA程序设计教程-电子教案

    《JAVA程序设计教程》电子教案是一份全面介绍Java编程语言的教学资源,旨在帮助学习者掌握Java编程的基础知识和高级概念。这份教程涵盖了从简单的语法结构到面向对象编程、异常处理、集合框架、多线程、输入输出流...

    ARM原理与C程序设计

    《ARM原理与C程序设计》是一本面向学习嵌入式系统和ARM处理器技术的书籍,旨在帮助读者深入理解ARM架构并掌握在该架构上进行C程序设计的方法。ARM处理器是目前广泛应用于移动设备、嵌入式系统以及服务器等领域的核心...

Global site tag (gtag.js) - Google Analytics