面向对象分析和设计的几个关键步骤_(豁然开朗)《面向对象分析与设计》读书笔记 (4)- 分类...
目录
分类
正确分类的重要性
分类的困难
分类的增量和迭代本质
确定类和对象
经典方法 && 现代方法 (种)
面向对象分析 (主要识别对象)
关键抽象和机制
确定关键抽象
识别机制
面向对象的分析与设计的难点
分类
- 组织知识的手段。
- 【作用】相似性 共性 关键抽象 更小的应用,更简单的架构。
- 【Question】
- 分类在类的构建中发挥了什么样的作用? (结合具体示例加以体会)
正确分类的重要性
- 在面向对象分析和设计中,相当一大部分活动,可以认为是分类问题。
- 在AI中,分类也是及其重要的,是很多训练的最终目的。
- 分类的关键环节: 发现共性。
- 找出 结构/行为 存在共性的一组事物
- 【分类在面向对象中的作用体现】 分类作用很大
- 【帮助我们确定层次结构】如类之间的泛化、特化、聚合等等。
- 【核心机制的产生】交互中的共同模式 发明机制 核心
- 【模块化】根据类对象的功能分包,进行模块化。
- 【耦合&内聚】
- 【部署】将不同的处理过程分配到不同的处理器上。
分类的困难
前面提到了分类 在面向对象中发挥着十分重要的作用。(可以说,是一种非常基础的能力)。事实上,在数据排查时,也是如此。
- 【造成分类困难的原因】
- 【边界的模糊】一种常见的现象时,一个对象和其它对象区分开来的边界,往往非常模糊。
- 【示例】如膝盖从哪里开始,从哪里结束?
- 【人的角度】
- 分类的角度多种多样,不存在“完美”的分类。 我们需要权衡不同的分类方案。
- 如 flink虽然在目前比较流行/优秀,但随着技术的迭代,新的角度的发现,flink有一天也会被相应的淘汰。
- 明智的分类需要大量的创造性的活动。
- 分类的角度多种多样,不存在“完美”的分类。 我们需要权衡不同的分类方案。
- 【边界的模糊】一种常见的现象时,一个对象和其它对象区分开来的边界,往往非常模糊。
- 【分类需要投入较多的精力】
- 很多艰苦的工作,才能设计出简单的架构。
分类的增量和迭代本质
- 【一般规律】明智的分类 是 很艰难的智力工作,最好是一个增量式、迭代式的过程来完成。
- 如 flink虽然在目前比较流行/优秀,但随着技术的迭代,新的角度的发现,flink有一天也会被相应的淘汰。
确定类和对象
经典方法 && 现代方法 (3种)
经典分类
- 【核心】根据相关属性作为对象间相似性 分类的依据。
经典分类的属性选择:
- 【选择分类属性时的建议】 属性之间最好是独立的,不相互影响的。
- 【反例】年龄 和班级 就是关联性相对较大的属性。
- 【属性可测量可不测量】
- 【属性的选择和领域高度相关】
自然分类的缺陷:
- 自然的分类趋向混乱。
概念聚集
- 借助概念,来将符合概念的纳入相应的分类中。
- 【分类的大致步骤】
- 形成某个类的概念描述 根据描述,对于实体进行分类。
- 【示例】爱情歌曲
- 【概念描述】表达一个人对于另一个人的爱。
- 爱,这个词是抽象的,是模糊的,这和个人的理解也有一定的关系。
- 【对于实体歌曲的分类】
- 【爱情歌曲】一首歌,描绘两个异性动物之间的快乐生活。 要体会到其深层次的比喻的含义。
- 【非爱情歌曲】国歌。 主题不能反映两人之间相爱。
- 【概念描述】表达一个人对于另一个人的爱。
原型理论
- 【分类方式】
- 【原型代表】对象的类 由一个 原型对象 代表;
- 【与原型进行比对】对于给定的对象,和原型进行比较,如果相似 该对象属于原型所代表的类。
- 【实际中的应用】
- 论文中,为验证观点,做个简单的原型。用以表明论文中涉及到的关键点。
- Js 中的原型链。 对象模板。
- 对于游戏的归类。
面向对象分析 (主要识别对象)
经典方法 (主要用来识别对象)
建模时,类和对象的一般来源:
- 【经典方法】是在大量经验基础上,对于建模中存在的模式进行了相应的总结。 形成了某些概念/事物 到 对象的映射。
- 一种可以直接拿来,偷懒的分类框架。
数据库建模的角度,来看:
其它:
行为分析
- 【基本思想】将行为 作为 分类的重要依据,作为 识别 类和对象的主要来源。
- 【分类内核】概念聚集 (前面3种分类方法中的第2种)
- 通过概念描述出一个类 然后将符合该概念的实体,划分到该分类中来。
- 站在此处来看,分类需要一定的语言学功底。
领域分析
- 区分:问题域 & 解决方案域
用例分析
其它方法略过 。。。
关键抽象和机制
【关键抽象】
- 【有不同的身份】类/对象 , 问题域词汇表的一部分。
- 【重要作用】给出了 问题的边界。
- 关键抽象描绘了,哪些在关键抽象范围内,哪些在其外。
- 突出系统中的一些事物
- 排除系统之外的事物
【机制】
- 机制代表行为模式。
确定关键抽象
- 【具体问题具体对待】 关键抽象 与 具体领域高度相关。
- 【关键抽象的两个过程】
- 【发现】
- 抽象领域专家所使用的抽象;
- 往往是 问题域 的词汇的一部分。
- 【示例】ATM客户提到的账户、取款 & 存款
- 【发明】
- 通过发明,创造新的类 和对象。 它们不一定是问题域的组成部分,可能是设计/实现 领域的 词汇。
- 【示例】ATM中的关键词汇:数据库,屏幕管理器,队列等。 这部分更多是站在实现角度来确定关键抽象的。
- 【发现】
精化关键抽象:
- 选定关键抽象之后,我们应该在此抽象上做哪些事情?
- 一个抽象的概念,是无法 直接落地到的实现的。我们需要通过细化抽象,使得抽象层次越来越接近落地/实现。
- 【一些具体的问题】 概念/抽象 一 开始并不是‘清晰’的,通过回答下面一些参考的问题,能够让一些边界清晰起来。
- 对象如何创建?销毁?
- 在此对象上,可以执行什么操作?
- …
- 【关于对象抽象活动的观点】
- 面向对象设计 是 增量的,迭代的。
- 【常见的活动模式】
- 从两个类中,提取公共部分到一个新类中。
- 将一个类,分成两个新类。
- 【注意】既不是自顶向下,也不是自底向上 的活动。 而是两者的有机结合。
将类和对象放在正确的抽象层次很难。
- 需要进行大量练习,积累足够的经验。
【命名抽象】
一般建议:
识别机制
一个简单的示例:
- 【外部视图】驾驶员看到的是外部视图,也就是汽车系统表现出的外部行为;
- 【内部视图】但是,外部视图/行为,是需要内部的机制来进行支撑的。
- 【哪种活动的结果?】设计时的结果
- 【支撑外部视图的内部机制有多种】达到支撑一个外部行为的方式有多种,我们需要从中进行选择/决策。 上面提到的汽车系统,内部机制就存在很多种。
- 【机制的选择】虽然不同机制表现出来的外部行为是等价的,但是在其它方面是存在差异的,比如说代价等。
在进行机制选择时,需要考虑的问题:
避免内外违反约定:
- 机制代表战略决策,接口的设计 体现了战术决策。
- 【外部违反】客户违反规定的接口;
- 【内部违反】接口背后的机制 违反了 该规定的行为;
- 【如何进行机制的分析?】
- 使用场景 驱动机制分析过程;
- 【NICE】研究 典型/关键的场景,很重要。
- 使用场景 驱动机制分析过程;
- 【协作模式】
- 开发者决定采用某种协作模式 工作分解到多个对象(相应类的方法)
- 【示例】MVC可以看作是一种 模式/机制,属于战略层面。
机制即模式
- 【我的理解(可能有误)】模式,感觉 是一些在探索过程中,普遍被认可的机制。
- 【机制在底层的表现:食物链的底端】惯用法
- 每个编程语言 有自己的惯用法;
- 许多常见的编程任务都用惯用的实现方式;
- 【框架:食物链的高端】
- 【框架介绍】一组类,为某个领域提供了一组服务。 代表了大规模的复用;
- 【作用】输出了一些类和机制 客户可以使用/扩展 它们;
机制的示例(画图机制):【MVC】
- 【画图机制】 几个对象通过协作(内部视图) 为用户展现图片(外部视图)。
- 【对象】窗口、视图、模型、客户
- 【流程】 见下面的文字。
- 【该机制的好处】
- 模型 与 窗口/视图 解耦. 这样解耦之后有何好处? (方便修改、维护)
面向对象的分析与设计的难点
这类问题可以归结为,在方案空间中,选择较好的解的问题。
- 【抽象】抽象的方式多种多样?
- 【连接方式】组合对象的方式多种多样?
- 【语义】表达是否有助于理解?是否能够涌现出需要的功能?
- 单纯看代码,不了解其面向的业务,是不太容易读懂代码的。
面向对象分析和设计的几个关键步骤_(豁然开朗)《面向对象分析与设计》读书笔记 (4)- 分类...相关推荐
- canoco5冗余分析步骤_基因富集分析|理解
Gene Set Enrichment Analysis 基因富集分析 哈罗大家好!ヾ(≧▽≦*)o 年初在和老板研究 Identifying Cell Subpopulations 有关的课题,发现 ...
- ui设计和python哪个容易学_软件开发和ui设计那个容易学?
感谢邀请,以下是我的一些亲身经历,想和大家分享. 真心的!建议哪怕是念完一个普通高中,也比现在直接去学那些职业技能要好,学历高一点,你面对的选择.能做的选择也会更多一些,能够拓宽你未来的职业路. 初中 ...
- mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_完整免费答案...
单位工程施工组织设计的技术经济指标体系包括有().A.工期指标B.劳动指标C.台班利用率D.成本降低 大跨径桥梁采用()将会取得良好的技术经济效益.A.横移法施工B.顶推法施工C.转体法施工D.悬臂法 ...
- mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_答案全部
学前儿童加减运算概念发展可分为哪些水平层次()A.动作水平的加减B.表象水平的加减C.比较水平的 因为酸会降低果冻的凝胶力,所以我们不选用含酸性物质的水果.() 卫生法中的民事责任主要是A.行政处罚B ...
- python分析红楼梦出现的虚词词频统计_用Python分析红楼梦,见证贾府的兴衰
分词词频统计 什么是分词?众所周知中文是以字为单位,句子中所有的字连起来才能描述一个意思.例如我是一个学生.计算机不能很容易明白"学"."生"两个字合起来才表示 ...
- gis可达性分析步骤_使用WGIS分析空间区位优势度
如图,我们加载一份位置点的数据.以图中所有的位置点为研究对象,如何判断哪个点的区位优势最佳呢?比如我们要建一个供给站,给其他点供货,那这个站选在哪里好呢? 评价某地点的区位优势,是一项比较复杂的过程, ...
- 设计一个三阶巴特沃斯滤波器_巴特沃斯滤波器频率设计及增益多项式方程
在之前的滤波器教程中,我们研究了简单的一阶型低通和高通滤波器,它们的RC滤波器电路设计中只包含一个电阻器和一个无功元件(电容器). 在使用滤波器对信号的频谱进行整形的应用中,例如在通信或控制系统中,滚 ...
- mysql数据库设计与应用答案智慧树_智慧树MySQL数据库设计与应用完整免费答案...
智慧树MySQL数据库设计与应用完整免费答案 更多相关问题 [问答题,简答题] 保育员在教师组织教育活动时应做哪些配合工作? [填空题] 幼儿园的安全教育包括防火.防触电.放走失.防烫伤.防食物.防摔 ...
- pythonjieba情感分析步骤_基于jieba和doc2vec的中文情感语料分类
Chinese-sentiment-analysis-with-Doc2Vec 简介 中文语料的情感分析基本步骤如下: 爬取相关的语料或者下载相关语料(本文使用了对于宾馆评价的相关语料作为例子) 将语 ...
最新文章
- 赶考在线执业药师,7-8月提分策略,化繁为简
- Android之如何获取网络类型并判断是否可用
- python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它
- Async Await
- Kali Linux Web 渗透测试秘籍 第二章 侦查
- C语言int的字节数跟什么有关,C语言中int型字长和什么有关
- 新型智慧城市 相关网址
- [转载]Codejock Xtreme ToolkitPro MFC 使用
- Office 2010安装时缺少MSXML 6.10.1129.0
- C# 串口驱动封装成类库
- photoshop Mac版本安装
- 4.(地图数据篇)nginx代理地图服务--离线部署地图服务
- codevs 4246
- 得到app文稿导出_得到app的文稿怎么下载复制导出
- PRACH, preamble, RO 的关系与区别
- 使用Layui制作界面及功能
- 【echarts记录 -- 3d 饼状图实现】
- 读《鬼谷子的局》笔记
- 进球数 概率 组合数学
- ShaderJoy —— “爽到飞起的 2233娘” 效果 【GLSL】