失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。
这里补充一下。
如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。
没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。
这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。
至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依赖于需求分析的。test case是什么?不就是需求么?
当然,这些方法论并不要求需求百分之百的细化,它们认可变化,拥抱变化,力求变化时的代价最小。不过,不管怎么说,它们仍然是要着眼于当前的需求的,应对需求变化的能力是另外一个话题,它并不能表示这些方法论不是自顶向下。
“自底向上”确实古已有之,PO时代也确实有这个提法。但是,它的缺乏方向性,缺乏重用能力,缺乏整体组织等等弊病让它从来都没有成为设计的主流,没有成为一个主导整体或者部分设计的思想。
最多算是公有制体制内的私有制补充而已。PO时代它的地位就不高,到了OO时代,强调职责分配,它更是几乎沦为一个历史词汇了。
也许你会说,我在调用xcerces, stl的时候,难道也是自顶向下?我可从来没有给stl的作者分配过责任啊。
这其实和责任分配并不矛盾。中间如果发现可以重用的模块,只要这个模块向外承诺的责任符合我的期望,我就可以用。仍然是自顶向下,需求驱动,责任驱动。
而且,xcerces这些库设计的时候,也一样要假想一下需求,然后从需求出发的。(stl不是很一样,它一定程度上有CO的影子,从基本组合子逐渐演绎的方法在其中也有体现,比如那个iterator和所有围绕iterator的算法等)
分享到:
相关推荐
补充面向对象程序设计方法:.ps
本书以面向对象的软件工程思想为主线,细致深入地讲解了C#语言面向对象程序设计的方法和技巧,内容涵盖面向对象的基本概念、基于接口的设计、泛型程序设计方法、Windows和Web应用开发,以及数据库访问技术。...
很好的一套面向对象程序设计C++期末考试,适合于大学程序设计的各种考试复习
金旭亮《C#面向对象程序设计》教案之1:CSharp程序设计语言与dotNET面向对象程序设计概述。 后继教案将陆续发布,请关注作者的博客更新信息:http://blog.csdn.net/bitfan
面向对象程序设计课后第二章答案,很标准的!
OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象...
《Java与UML面向对象程序设计》强调理论和设计相结合,重视对软件开发方法学有指导作用的重要概念。《Java与UML面向对象程序设计》可作为高等学校计算机科学系及软件学院高年级学生和研究生的教科书,也可作为从事...
C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计...
《Visual C++面向对象与可视化程序设计》是黄维通教授编著的一本经典教材,主要介绍了使用Microsoft的Visual C++编程环境进行面向对象程序设计和可视化应用开发的基础知识。这本书深入浅出地讲解了C++语言的核心概念...
面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它以对象作为程序设计的基本单元,强调数据和操作数据的方法紧密结合。本教程第三版在前两版的基础上进行了更新和完善,更适合当前的编程环境和...
金旭亮《C#面向对象程序设计》教案_2:CSharp程序设计语言基础。此教案针对零面向对象基础的学生,包括PDF文档及相关的示例源码,VS2010格式。后续教案将陆续发布,请关注作者博客上的更新信息:...
C++是近年来国内外广泛使用的现代计算机语言,它既支持面向过程的程序设计,也支持基于对象和面问对象的程序设计。国内许多高校已陆续开设了C++程序设计课程。但是由于C++涉及概念很多,语法比较复杂,内容十分广泛...
本资源包容金旭亮《C#面向对象程序设计》教案的最后3讲:7 对象集合与对象组合;8 泛型编程;9 对象间的协作与信息交换。包容相关PDF文档及VS2010示例源码。请关注金旭亮博客以获取更多技术资源:...
第五、六章叙述循述循环、分支、子程序等基本程序结构以及程序设计的基本方法和技术;第七章为宏汇编技术;第八章说明以中断为主的输入/输出程序设计方法;第九章介绍BIOS和DOS系统功能调用的使用方法;第十~十二章...
《程序设计语言 实践之路 第3版》是一本深度探讨编程语言原理与实践的书籍,由Michael L. Scott撰写。本书旨在帮助读者理解各种编程语言的设计选择,以及这些选择如何影响程序的构造、效率和可维护性。通过阅读这...
- **对象**:在面向对象编程中,对象是数据和操作这些数据的方法的组合。每个对象都有自己的状态(数据)和行为(方法)。 - **类**:类是创建对象的模板,定义了对象的属性(数据成员)和方法(函数成员)。 - *...
习题集内容覆盖面广,包括:Java言的基本常识、基本语法、面向对象的基本概念、数组、字符串、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程规范、网络程序设计、多媒体民图形学程序设计以及...
本文档是一篇关于基于微信小程序的点餐系统设计与实现的毕业论文,旨在利用微信小程序这一日益普及的技术,优化餐厅点餐流程,提供便捷的在线点餐服务。论文详细介绍了系统的开发背景、技术选型、需求分析、系统设计...
《MFC Windows程序设计》(第2版)(修订版)的作者,Jeff Prosise,用其无与伦比的技巧向读者讲述了MFC程序设计中的基本概念和主要技术再次阐释了在32位Windows平台上进行了快速的面向对象开发的完美方法。《MFC ...