《深入浅出面向对象分析与设计》读书笔记Ken专注后端技术

面向对象分析与设计,在软件工程中越来越重要了。可惜很多大学的计算机都没有这门课。大多人读书时候,入门学了

C++等面向对象语言,也只是停留在语言层面,对于面相对象的精髓一知半解。在实际项目中,分析建模也是完全凭感觉,

即使错了,也不明白为什么?这本书是面向对象分析与设计入门的捷径。它延续HeadFirst系列的风格,轻松易懂,在

不知不觉中,你就掌握了原理。在此强烈推荐!

一、良好的应用程序的基石

伟大软件的简易三步骤:

1.确认你的软件做客户要它完成的事。

2.运用基本的OO原则来增加软件的灵活性。

3.努力实现可维护、可重用的设计。

分析:为正在试图解决的问题用文字描述清楚,确保你的设计与应用程序想实现的功能一致

对象类型不匹配的原因:

1.对象应该做其名称所指之事。

2.每个对象应该代表单一概念。

3.未使用的对象是无用的赠品

封装让你将应用程序分成一组一组合乎逻辑的部件

看到重复的代码,就是该进行封装的时候了

委托将处理特定工作的责任转交给另一个对象

一旦完成基本功能,就重新细化你的设计,让它更灵活

隔离出经常变化的部分

二、收集需求

需求:It'saspecificthingyoursystemhastodoaworkcorrectly.

用例:Ausecasedescribeswhatyoursystemdoestoaccomplishaparticularcustomergoal.

用例有三个基本部分:

清楚的价值,

起点和终点

外部启动者

按照用例检查需求,确保用例涵盖了系统必须做的每一件事

需求是系统为了正确运作所必须要做的事

最初的需求通常来自客户

三、需求变更

客户永远是对的

需求总是在变,然而,假如有良好的用例,你通常能快速地改变你的软件以适应这些新需求

替换路径:包含在用例中的一个或多个步骤,这些步骤是可选的或提供替换性的方式

场景:从第一步到最后一步通过用例的完整路径

任何时候你改变了用例,你就必须回头检查你的需求

有时候,需求的变更揭露出关于系统你所不知道的问题

变更是经常的,随着你每次的实现,系统总是随之改善

将变化之物封装起来

四、分析

分析帮助你确保系统运作在真实世界的情境里

以对客户、老板及自己合理的方式编写你的用例

分析及用例让你给客户、经理和其他开发者展示系统在真实世界的情境里如何运作

文本分析(textualanalysis):查看用例里的名词(与动词)以整理出类和方法的动作

好的用例以容易理解的语言,清楚且准确地理解系统在做什么

有了良好、完整的用例,文本分析是整理出系统所需类的简单而快速的方式

系统外的名称不会转变成类

每个用例应该只聚焦于一个客户目标。假如有多个目标,你就需要编写多个用例

五、良好的设计=灵活的软件

抽象类是实际的实现类的占位符(placeholder)

抽象类定义行为,而子类实现该行为

两个或更多的地方找到共同行为时,小心地将该行为抽取到一个类里,然后以此共同类重用这项行为

对接口编程,而不是对实现,让你的软件更容易被扩展

通过对接口编程,你的程序代码将使用该接口的所有子类,甚至是还没被创建的那些

每个类只有一个改变的理由。单一职责

编码一次,查看多次

设计是反复迭代的。你必须愿意改变自己的设计以及你从其他程序设计大师那里继承的设计

Acohesiveclassdoesonethingreallywellanddoesnottrytodoorbesomethingelse.

每个类都应该试图确保这件事的发生只有一个理由,这件事代表许多设计不良的软件片段之死

伟大的软件通常就是“够好”的软件

确认客户高兴,确认你的设计具有灵活性,可以继续往前走了

六、解决大问题

用解决小问题的相同方式解决大问题

看待大问题的最佳方式就是化整为零,将它视为许多单独的功能片段

你可以将那些片段的每一个创建为要解决的单独的问题,并且运用到你已经知道的每一件事

功能:功能只是关于系统需要做的某件事的高级描述

只要可以,就尽量把细节往后拖延,需要有关整体轮廓的观点

领域分析让你检查你的设计,并且是以客户所用的语言

领域分析帮你避免构建不属于你的责任范围内的系统部分

七、架构

Architectureisyourdesignstructure,andhighlightsthemostimportantpartsofyourapp,

andtherelationshipsbetweenthoseparts.

架构是系统的组织结构,包含分解开来的各个部件、它们的连通性、交互机制以及你在系统设计中使用的指导原则与决策

应用程序中真正重要的事情是架构上重要的事,你应该先把焦点置于其上

架构三问:

它是系统本质的一部分吗?

这是什么意思?

我到底该如何做?

一次把焦点放在一个功能上,减少项目的风险

不要为无助于减少风险的功能分心

越多次序,越少混乱

尽可能在现有基础上构建

有时候,编写伟大程序代码的最佳方式,是在允许的情况下将程序代码的编写往后顺延

询问客户,共同性分析,实现计划

八、设计原则

模拟是避免做傻事的最佳方式

开闭原则Open-ClosedPrinciple:类应该允许为扩展而开放,禁止为修改而关闭

不重复Don'tRepeatYourself

单一职责SingleResponsibility系统里的每一个对象应该具有单一职责,所有对象的服务都应该聚焦在实现该职责上

(可以用一个简单的方法检验类的方法是否合理Theclassdoitself)

里氏替换原则LiskovSubstitution子类型必须能够被替换成它的父类型

将功能性委托给其他类

假如你需要使用另一个类的功能性,但不想改变该功能性,可以考虑以委托代替继承

使用组合将来自其他多个类的行为集合起来,在运行时切换该行为

在组合中,由其他行为所组成的对象拥有那些行为。当对象被摧毁时,其所有行为也被摧毁。组合中的行为不存在于组合本身以外

聚合:当一个类被作用另一个类的一部分时,但仍然可以存在于该类之外

使用组合或聚合:想使用其行为的对象存在于使用其行为的对象之外吗?

九、迭代与测试

伟大软件的编写是迭代进行的

先针对整体轮廓操作,接着迭代应用程序的每个片段,直到完成

功能驱动开发:挑出应用程序的特定功能,并且规划、分析及开发该功能,直到完成

用例驱动开发:挑出通过用例的场景,并且编写程序代码以支持通过该用例的完整场景

设计决策总是一种取舍

每当你迭代时,重新评估你的设计决策,假如它对你的设计合理,就别害怕改变

契约式编程:假设协议双方了解什么动作会产生什么行为,并且遵守该契约

防御式编程:寻找可能出错的地方,提前避免

深入浅出MFC读书笔记2是对MFC框架的进一步学习和理解,主要涵盖了MFC的基础概念、类库结构以及程序构建的关键要素。MFC(MicrosoftFoundationClasses)是微软为Windows平台开发的应用程序提供的一种类库,它基于...

文件`深入浅出MFC笔记(配合原书的好笔记).doc`可能是作者阅读侯捷的《深入浅出MFC》后所做的详细笔记,可能包含了对书中关键概念的理解、例子的解析以及个人的实践心得。这种学习方式对于巩固理论知识和提高实际编程...

总之,《面向对象的分析和设计》课程深入浅出地介绍了面向对象方法论,包括UML的使用、类与对象的关系、设计原则以及软件开发流程。通过学习,开发者能更好地理解和应用面向对象的思维方式,提升软件开发的质量和...

"超适合自学的C++基础视频_深入浅出版源码笔记01"提供了学习C++的绝佳起点,尤其适合初学者,通过视频教学与源码笔记的结合,能够更直观、深入地理解C++的基础概念。【传智播客】传智播客是一家知名的教育机构,...

###MFC深入浅出:页面经剪裁,大小适中####MFC深入浅出——经典MFC书籍《MFC深入浅出》是一本针对MicrosoftFoundationClasses(MFC)框架的经典著作,由作者深入剖析MFC的核心概念和技术细节,为读者提供了...

这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解Java的本质,并提升编程思维。首先,我们要了解Java编程的基础知识。Java是一种面向对象的编程语言,它以类为基本...

"深入浅出JavaScript"这本书显然旨在帮助读者全面理解这种强大的编程语言,包括其核心概念、语法以及实际应用。JavaScript的基础部分涵盖变量、数据类型、控制流(如条件语句和循环)、函数等。变量是存储数据的...

在IT领域,韩顺平老师是一位知名的讲师,以其深入浅出的教学风格深受广大程序员喜爱。他的教学内容广泛,涵盖了从基础编程到企业级应用开发的多个方面。"韩顺平老师最全读书笔记"这个压缩包文件正是他课程精华的集合...

《HeadFirst设计模式》是软件开发领域的一本经典著作,其深入浅出地介绍了23种设计模式。第一章主要讲解的是策略模式,这是一种行为设计模式,它使你能在运行时改变对象的行为。策略模式的核心思想是定义一系列算法...

《李兴华核心技术笔记》通过深入浅出的方式,将复杂的Java技术体系进行了细致的剖析,为初学者和进阶者提供了一条清晰的学习路径。通过阅读这些笔记,读者不仅可以掌握Java编程的基础,还能了解到一些高级特性和实战...

韩顺平老师是业界知名的IT教育专家,他的教程以其深入浅出的讲解方式深受广大程序员喜爱。这份笔记集合了他的教学经验,旨在帮助学习者更好地理解和掌握这些关键的技术。1.**Java**:Java是一种广泛应用的面向...

【Python核心笔记】深入浅出地探讨了Python这一强大且多用途的编程语言。Python以其简单易用且功能强大的特性,赢得了广大开发者的喜爱。它是一种解释型的高级编程语言,支持面向对象编程,同时也具备过程化编程的...

这本书深入浅出地介绍了C++语言的各种特性,包括基础语法、面向对象编程、模板和STL(StandardTemplateLibrary)等核心概念。这篇读书笔记旨在整理和提炼书中精华,帮助读者更好地理解和掌握C++。一、C++基础...

《ThinkinginJava》是BruceEckel编著的一本经典Java编程教材,它以其深入浅出的讲解方式和丰富的实例闻名于世。这本书涵盖了Java语言的基础到高级特性,包括面向对象编程、集合框架、多线程、网络编程、异常...

"设计模式之禅"是一本介绍设计模式的书籍,书中深入浅出地讲解了设计模式的精髓,帮助读者理解和掌握如何在实际开发中应用设计模式。不完整版可能意味着只包含部分章节或部分内容。这些文档涵盖了设计模式的基础...

THE END
1.面向对象分析与设计讲汇总.pdf面向对象分析与设计讲汇总.pdf 160页VIP内容提供方:微传科技 大小:16.73 MB 字数:约8.18万字 发布时间:2024-07-08发布于河北 浏览人气:11 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)面向对象分析与设计讲汇总.pdf...https://max.book118.com/html/2024/0628/8011023111006104.shtm
1.《面向对象分析与设计》读书笔记21、概念模型记录了系统中存在(或者将存在)的领域实体以及他们与系统中其他领域实体的关系,概念层的建模是利用业务领域的术语来完成的,应该是技术无关的。系统的逻辑视图利用了概念模型中创造的概念,建立起关键抽象和机制的意义,并确定系统的架构和整体设计。系统的物理模型描述了系统实现的具体软件和硬件构成,显然,物理...https://blog.csdn.net/qq_15054345/article/details/140212035
2.面向对象分析和设计12篇(全文)本文通过先调研面向对象的软件开发流程和软件工程师岗位要求,进行针对性的面向对象分析、设计和编程能力的培养,并据此提炼通用的提高软件技术专业学生面向对象分析、设计和编程的能力,使其养成良好的面向对象思维,为学习后续软件开发技术奠定基础。为叙述方便,在以下描述中分别用OOA、OOD和OOP表示面向对象分析、面向对象设计...https://www.99xueshu.com/w/ikeyisuvwph4.html
3.系统架构设计笔记(36)——面向对象的分析与设计面向对象方法是一种非常实用的软件开发方法,它一出现就受到软件技术人员的青睐,现已成为计算机科学研究的一个重要领域,并逐渐成为软件开发的一种主要方法。面向对象方法以客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,分析和设计的结构与客观世界的实际比较接近,容易被人们接受。在面向对象方法中,分析和设...https://www.jianshu.com/p/e91ff035a43c
4.面向对象分析与设计(豆瓣)写笔记 写书评 加入购书单 分享到 推荐 内容简介· ··· 本书是UML创始人GradyBooch的代表作之一。 全书分为理论和应用两部分。理论部分深刻剖析了面向对象分析与设计(OOAD)的概念和方法。应用部分连续列出了5个不同类型、不同领域的应用,描述如何从初始阶段到交付阶段,将OOAD理论和方法应用到项目中。应用部分所...https://book.douban.com/subject/11509672/
5....学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析...这篇文章主要介绍了Javascript面向对象程序设计单例模式原理与实现方法,结合实例形式分析了《javascript设计模式》中Javascript面向对象单例模式相关概念、原理、用法及操作注意事项,需要的朋友可以参考下https://www.jb51.net/article/184230.htm
6.UML面向对象技术学习笔记UML建模语言相信大家都比较熟悉了,那么你对UML面向对象技术是否了解呢,这里就像大家介绍一下UML面向对象技术学习笔记,希望本文的介绍对你有所帮助。 本节向大家介绍一下UML面向对象技术学习笔记,主要包括UML面向对象技术中的关系和符号两大部分内容,相信通过本节的介绍你对UML面向对象技术会有初步的认识。 https://www.51cto.com/article/206621.html
7....之面向抽象原则:抽象(abstract)类的设计与应用分析面向抽象原则是面向对象四大基本原则的第一条,其重要性不言而喻,面向抽象原则分为抽象(abstract)类和接口(interface)以及面向抽象编程,由于篇幅有限本文我们主要细说抽象(abstract)类的设计与应用,并通过引入具体案例的形式使概念更便于理解。 一、抽象(abstract)类的设计要点 ...https://cloud.tencent.com/developer/article/1980363
8.心理学论文(15篇)此外,问卷调查法也是常用的交通心理学研究方法,其形式与心理测量法较为相似,但在信度和效度上可能会较差,但只要能设计合理、科学的调查项目或问题也能获得较高的信度和效度。 3.6数量统计分析法 数量统计分析法是在搜集和处理研究资料时进行定量分析的方法,在道路交通心理学的研究中十分重要,可以使研究结论更具有可操...https://www.ruiwen.com/lunwen/6498752.html
9.C语言程序课程设计心得体会(精选12篇)在今后的学习中希望能加强代码模块化的意识,可能现在提及模块化还显得偏早,但是意识总是早点树立会比较好。对于下学期要学习的面向对象的课程,总之加油吧。 C语言程序课程设计心得体会 篇6 在朗沃学习已经差不多一个月了,今天是学C语言的最后一天。在学习C语言的过程中感觉比较轻松,可能是因为以前接触过C语言,再加...https://yjbys.com/xindetihui/fanwen/637880.html