`
joyocaowei
  • 浏览: 32596 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

试读《面向对象的分析与设计》——“Jolt大奖精选丛书”有奖征文

 
阅读更多

《面向对象的分析与设计》貌似是这次试读活动中页数最多的一本,总共提供了四章试读章节,一百来页……分别介绍了复杂性、对象模型、类与对象、分类。感觉这本书很像一本大学时代的教科书,因为语言的描述真的很有教科书的感觉,但是我并不是说这样不好,毕竟理论基础也是很重要的,就像”根基“的感觉。


整四章读下来感觉这全部都是理论叙述啊,有一种看着看着就想睡觉的感觉啊,还好中间会穿插有一些示例,不过这些示例所涉及的范围很广,还是有一种理不清、道不明的感觉,不过里面的插图感觉很有意思,那个描述与配图非常形象。比如1.2.2节中所描述的图:



                         软件开发团队的任务就是制造简单的假象

还有第三章中3.1.3-行为中的这张图:



 

看了一下这本书的目录,前面的都是一些基础知识的梳理,主要是介绍软件的复杂性以及类和对象,然后是分类;中间部分是面向对象的使用方法以及使用UML来分析面向对象的设计与实践;最后还有一组实际的应用程序。当然对于我这种职场新人而言,从前往后读是比较靠谱的方法,不能好高骛远……当然这次的试读部分就是上面所说的第一部分内容,这部分内容主要介绍了对象模型中的基本概念和面向对象开发的动机。


从最先学习java开始,听的最多的就是java是一门面向对象的语言,一切皆对象等类似这样的语言,直到现在,面向对象这样一个概念我也是比较模糊的,看看本书中是这样解释这样的概念的:

“面向对象编程是一种实现的方法,在这种方法中,程序被组织成许多组相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系形成的层次结构。”

那么什么又是面向对象设计呢:

“面向对象设计是一种设计方法,包括面向对象分解的过程和一种表示法,这种表示法用于展现被设计系统的逻辑模型和物理模型、静态模型和动态模型。“

 本书把概念介绍的非常详细,关于软件复杂性以及类与对象的介绍,我觉得写的非常仔细,并有详细的资料以及示例说明,但是太细的后果是忘记了原本所要描述的信息了,但是多看几遍就能把书看薄,把话看明。

 


以下是看书的过程中的部分摘录(可以无视):


1、复杂性

“系统越复杂,就越容易全面崩溃”。建筑师一般不会想要为一幢100 层的大楼添加一个新的地下室,因为这样做成本会很高,无疑将失败。但让人吃惊的是,软件系统的用户在提出类似的改动时,都不会多想一下。相反,他们会说,这只是一个简单的编程问题。由于我们不能控制软件的复杂性,所以导致了项目延迟、超出预算,并在声称的需求中存在缺陷。

工业级软件的特征是,单个开发者要理解其设计的所有方面非常困难,几乎是不可能的。
这些应用表现出非常丰富的行为,它们存在于反馈式系统中,由真实世界的事件驱动或发出驱动事件。对这些应用来说,时间和空间都是稀有资源。从根本上来说,我们可以掌握这种复杂性,但不能消除这种复杂性。

软件在本质上是复杂的:问题域的复杂性、管理开发过程的困难性、软件中随处可能出现的灵活性(软件行业还是一种劳动密集型的产业),以及描述离散系统行为的问题。

复杂系统的5个属性:层次结构、相对本原(如多层次抽象)、分离关注、共同模式、稳定的中间形式

2、对象模型

面向对象的概念框架是对象模型,主要有四个要素:抽象、封装、模块化、层次结构(“是一种”和“组成部分”)

抽象和封装是互补的概念:抽象关注的是对象可以观察到的行为,而封装关注这种行为的实现。
多态(polymorphism)是动态类型和继承互相作用时出现的一种情况。


3、类与对象

“对象是一个具有状态、行为和标识符的实体。结构和行为类似的对象定义在他们共同的类中。
‘实例’和‘对象’这两个术语可以互换使用。”

对象是存在于时间和空间中的具体实体,而类仅代表一种抽象,即一个对象的“本质”。
“类是一组对象,它们拥有共同的结构、共同的行为和共同的语义。”
一个对象就是类的一个实例。

某些抽象非常复杂,所以不能够利用单个类定义的方式很方便地表达。将这些抽象表示为一组类,这些类的实例互相协作,提供我们所期望的结构和功能。这样的一组类定义为组件。

一个类的接口提供了它的外部视图,因此强调了抽象,隐藏了它的结构和行为的秘密。与接口不同,类的实现是它的内部视图,它包含类行为的秘密。当且仅当两个对象之间存在整体/部分关系时,它们对应的类之间必然存在一种聚合关系。


4、分类
分类是组织知识的手段
最好的软件设计看起来很简单,但是经验表明,需要很多艰苦的工作才能设计出简单的架构。
那么,为什么分类这么难?首先,不存在所谓的“完美”分类,尽管某些分类肯定比另外一些更好。任何分类都与进行分类的观察者的视角有关。其次,明智的分类要求大量的创造性思维。只有创造性的思维才能在这种似乎无关的事物之间发现共性。


命名关键抽象
对象应该用合适的名词词组来命名,如theSensor 或简单的shape。
类应该用常见的名词词组来命名,如Sensor 或Shape。
如果可能,选择的名称应该是领域专家使用和认识的名称。
修改操作应该用一个主动语态的动词词组来命名,如draw 或moveLeft。
选择操作应该表示出查询的意思,或者用be动词的形式来命名,如extentOf 或isOpen。
使用下画线和大写字母主要是个人的喜好。但不论采用哪种风格,至少在程序内要保持一致。

框架代表了大规模的复用。

  • 大小: 21.3 KB
  • 大小: 46.2 KB
分享到:
评论

相关推荐

    面向对象分析与设计(第3版) Object Oriented Analysis And Design With Applications 3Rd Edition

    理论部分深刻剖析了面向对象分析与设计 (OOAD)的概念和方法。应用部分连续列出了5个不同类型、不同领域的应用,描述如何从初始阶段到移交阶段将OOAD理论和方法应用到项目中。应用部分所涉及的领域包括系统架构、数据...

    面向对象分析与设计第一部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第一部分

    面向对象分析与设计第三部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第三部分

    面向对象分析与设计第五部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第五部分

    面向对象分析与设计第六部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第六部分

    面向对象分析与设计第七部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第七部分

    面向对象分析与设计第二部分

    面向对象分析与设计的经典,2006美国技术图书类Jolt震撼大奖第二部分

    Jolt获奖图书(拥有两项大奖共计58本)

    在这些Jolt获奖图书中,我们可以发现一系列关于软件开发的经典之作,涉及C++、面向对象设计、Windows系统揭秘、项目管理、软件构建等多个关键主题。例如,《Annotated C++ Reference Manual》由Margaret Ellis和...

    深入浅出面向对象的分析与设计.part1

    通过一连串的脑力开发,《深入浅出面向对象分析与设计》压缩了学习与获取复杂信息所需的时间。可以预料,这将是一段充满乐趣的学习之旅。相信在读完本书之时,你肯定能够写出伟大的软件。. 本书荣获2007年第十七...

    深入浅出面向对象的分析与设计.part2

    通过一连串的脑力开发,《深入浅出面向对象分析与设计》压缩了学习与获取复杂信息所需的时间。可以预料,这将是一段充满乐趣的学习之旅。相信在读完本书之时,你肯定能够写出伟大的软件。. 本书荣获2007年第十七...

    深入浅出面向对象的分析与设计.part3

    通过一连串的脑力开发,《深入浅出面向对象分析与设计》压缩了学习与获取复杂信息所需的时间。可以预料,这将是一段充满乐趣的学习之旅。相信在读完本书之时,你肯定能够写出伟大的软件。. 本书荣获2007年第十七...

    深入浅出面向对象的分析与设计.part4

    通过一连串的脑力开发,《深入浅出面向对象分析与设计》压缩了学习与获取复杂信息所需的时间。可以预料,这将是一段充满乐趣的学习之旅。相信在读完本书之时,你肯定能够写出伟大的软件。.

    深入浅出面向对象的分析与设计.part5

    通过一连串的脑力开发,《深入浅出面向对象分析与设计》压缩了学习与获取复杂信息所需的时间。可以预料,这将是一段充满乐趣的学习之旅。相信在读完本书之时,你肯定能够写出伟大的软件。.

    敏捷软件开发(原则模式和实践C#版)002

    本书不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作,而且还是一部通俗的敏捷方法导引书和快速实用的UML教程。通过本书你会发现,许多以前看起来非常枯燥费解的概念,忽然间都豁然开朗,变得鲜活生动...

    敏捷软件开发(原则模式和实践C#版)001

    本书不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作,而且还是一部通俗的敏捷方法导引书和快速实用的UML教程。通过本书你会发现,许多以前看起来非常枯燥费解的概念,忽然间都豁然开朗,变得鲜活生动...

    敏捷软件开发:原则、模式与实践(C#版)

     本书不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作,而且还是一部通俗的敏捷方法导引书和快速实用的uml教程。通过本书你会发现,许多以前开起来非常枯燥费解的概念,突然间都豁然开朗,变得鲜活生动...

    数据库重构(2007年第17届Jolt生产效率大奖图书)

    重构的价值是毋庸置疑的,这已在许多项目中证明了。重构能帮助软件专业人士改进系统设计及其可维护性、可扩展性和性能。本书首次介绍了专门针对数据库系统设计的强大的重构技术。 共分2卷。

    敏捷软件开发:原则、模式与实践(C#版)中文.pdf

    《敏捷软件开发:原则、模式与实践(C#版)》Java版曾荣获2003年第13届Jolt大奖,是公认的典著作。《敏捷软件开发:原则、模式与实践(C#版)》是C#程序员提升功力的绝佳教程,也可用作高校计算机、软件工程专业本科生...

    敏捷软件开发:原则、模式与实践 PDF电子书

    本书凝聚了世界级软件开发大师RobertCMartin数十年软件开发和培训经验,Java版曾荣获计算机图书最高荣誉——Jolt大奖,是广受推的经典著作,自出版以来一直畅销不衰。 本书不仅是一部深入浅出、生动易懂的面向对象...

    敏捷软件开发.pdf

    Martin数十年软件开发和培训经验,Java版曾荣获计算机图书最高荣誉——Jolt大奖,是广受推崇的经典著作,自出版以来一直畅销不衰。要想成为一名优秀的软件开发人员,需要熟练应用编程语言和开发工具,更重要的是...

Global site tag (gtag.js) - Google Analytics