目录

分类

正确分类的重要性

分类的困难

分类的增量和迭代本质

确定类和对象

经典方法 && 现代方法 (种)

面向对象分析 (主要识别对象)

关键抽象和机制

确定关键抽象

识别机制

面向对象的分析与设计的难点

分类

  • 组织知识的手段。
  • 【作用】相似性 共性 关键抽象 更小的应用,更简单的架构
  • 【Question】
    • 分类在类的构建中发挥了什么样的作用? (结合具体示例加以体会)

正确分类的重要性

  • 在面向对象分析和设计中,相当一大部分活动,可以认为是分类问题

    • 在AI中,分类也是及其重要的,是很多训练的最终目的。
  • 分类的关键环节发现共性
    • 找出 结构/行为 存在共性的一组事物
  • 【分类在面向对象中的作用体现】 分类作用很大
    • 【帮助我们确定层次结构】如类之间的泛化、特化、聚合等等。
    • 【核心机制的产生】交互中的共同模式 发明机制 核心
    • 【模块化】根据类对象的功能分包,进行模块化。
    • 【耦合&内聚】
    • 【部署】将不同的处理过程分配到不同的处理器上。

分类的困难

前面提到了分类 在面向对象中发挥着十分重要的作用。(可以说,是一种非常基础的能力)。事实上,在数据排查时,也是如此

  • 造成分类困难的原因

    • 边界的模糊】一种常见的现象时,一个对象和其它对象区分开来的边界,往往非常模糊。

      • 【示例】如膝盖从哪里开始,从哪里结束?
    • 【人的角度】
      • 分类的角度多种多样,不存在“完美”的分类。 我们需要权衡不同的分类方案。

        • 如 flink虽然在目前比较流行/优秀,但随着技术的迭代,新的角度的发现,flink有一天也会被相应的淘汰。
      • 明智的分类需要大量的创造性的活动。
  • 【分类需要投入较多的精力】
    • 很多艰苦的工作,才能设计出简单的架构。

分类的增量和迭代本质

  • 【一般规律】明智的分类 是 很艰难的智力工作,最好是一个增量式、迭代式的过程来完成。

    • 如 flink虽然在目前比较流行/优秀,但随着技术的迭代,新的角度的发现,flink有一天也会被相应的淘汰。

确定类和对象

经典方法 && 现代方法 (3种)

经典分类

  • 【核心】根据相关属性作为对象间相似性 分类的依据。

经典分类的属性选择:

  • 【选择分类属性时的建议】 属性之间最好是独立的,不相互影响的。

    • 反例】年龄 和班级 就是关联性相对较大的属性。
  • 【属性可测量可不测量】
  • 【属性的选择和领域高度相关】

自然分类的缺陷:

  • 自然的分类趋向混乱。

概念聚集

  • 借助概念,来将符合概念的纳入相应的分类中。
  • 【分类的大致步骤】
    • 形成某个类的概念描述 根据描述,对于实体进行分类。
  • 【示例】爱情歌曲
    • 【概念描述】表达一个人对于另一个人的

      • 爱,这个词是抽象的,是模糊的,这和个人的理解也有一定的关系。
    • 【对于实体歌曲的分类】
      • 【爱情歌曲】一首歌,描绘两个异性动物之间的快乐生活。 要体会到其深层次的比喻的含义。
      • 【非爱情歌曲】国歌。 主题不能反映两人之间相爱。

原型理论

  • 【分类方式】

    • 原型代表】对象的类 由一个 原型对象 代表;
    • 与原型进行比对】对于给定的对象,和原型进行比较,如果相似 该对象属于原型所代表的类。
  • 实际中的应用
    • 论文中,为验证观点,做个简单的原型。用以表明论文中涉及到的关键点。
    • Js 中的原型链。 对象模板。
    • 对于游戏的归类。

面向对象分析 (主要识别对象)

经典方法 (主要用来识别对象)

建模时,类和对象的一般来源

  • 【经典方法】是在大量经验基础上,对于建模中存在的模式进行了相应的总结。 形成了某些概念/事物 到 对象的映射

    • 一种可以直接拿来,偷懒的分类框架。

数据库建模的角度,来看:

其它:

行为分析

  • 【基本思想】将行为 作为 分类的重要依据,作为 识别 类和对象的主要来源。
  • 【分类内核】概念聚集 (前面3种分类方法中的第2种)
    • 通过概念描述出一个类 然后将符合该概念的实体,划分到该分类中来。
    • 站在此处来看,分类需要一定的语言学功底。

领域分析

  • 区分:问题域 & 解决方案域

用例分析

其它方法略过 。。。

关键抽象和机制

【关键抽象】

  • 有不同的身份】类/对象 , 问题域词汇表的一部分。
  • 重要作用】给出了 问题的边界
    • 关键抽象描绘了,哪些在关键抽象范围内,哪些在其外。
    • 突出系统中的一些事物
    • 排除系统之外的事物

【机制】

  • 机制代表行为模式

确定关键抽象

  • 具体问题具体对待】 关键抽象 与 具体领域高度相关。
  • 【关键抽象的两个过程】
    • 发现

      • 抽象领域专家所使用的抽象;
      • 往往是 问题域 的词汇的一部分。
      • 【示例】ATM客户提到的账户、取款 & 存款
    • 发明
      • 通过发明,创造新的类 和对象。 它们不一定是问题域的组成部分,可能是设计/实现 领域的 词汇
      • 【示例】ATM中的关键词汇:数据库,屏幕管理器,队列等。 这部分更多是站在实现角度来确定关键抽象的

精化关键抽象

  • 选定关键抽象之后,我们应该在此抽象上做哪些事情?

    • 一个抽象的概念,是无法 直接落地到的实现的。我们需要通过细化抽象使得抽象层次越来越接近落地/实现
    • 【一些具体的问题】 概念/抽象开始并不是‘清晰’的,通过回答下面一些参考的问题,能够让一些边界清晰起来
      • 对象如何创建?销毁?
      • 在此对象上,可以执行什么操作?
  • 关于对象抽象活动的观点
    • 面向对象设计 是 增量的,迭代的。
    • 常见的活动模式
      • 从两个类中,提取公共部分到一个新类中。
      • 将一个类,分成两个新类。
    • 【注意】既不是自顶向下,也不是自底向上 的活动。 而是两者的有机结合

将类和对象放在正确的抽象层次很难。

  • 需要进行大量练习,积累足够的经验。

【命名抽象】

一般建议:

识别机制

一个简单的示例:

  • 【外部视图】驾驶员看到的是外部视图,也就是汽车系统表现出的外部行为;
  • 【内部视图】但是,外部视图/行为,是需要内部的机制来进行支撑的
    • 【哪种活动的结果?】设计时的结果
    • 【支撑外部视图的内部机制有多种】达到支撑一个外部行为的方式有多种,我们需要从中进行选择/决策。 上面提到的汽车系统,内部机制就存在很多种
    • 机制的选择】虽然不同机制表现出来的外部行为是等价的,但是在其它方面是存在差异的,比如说代价等。

在进行机制选择时,需要考虑的问题:

避免内外违反约定

  • 机制代表战略决策,接口的设计 体现了战术决策
  • 【外部违反】客户违反规定的接口;
  • 【内部违反】接口背后的机制 违反了 该规定的行为;
  • 如何进行机制的分析?
    • 使用场景 驱动机制分析过程;

      • 【NICE】研究 典型/关键的场景,很重要
  • 协作模式
    • 开发者决定采用某种协作模式 工作分解到多个对象(相应类的方法)
    • 示例】MVC可以看作是一种 模式/机制,属于战略层面。

机制即模式

  • 【我的理解(可能有误)】模式,感觉 是一些在探索过程中,普遍被认可的机制。
  • 机制在底层的表现:食物链的底端】惯用法
    • 每个编程语言 有自己的惯用法;
    • 许多常见的编程任务都用惯用的实现方式;
  • 框架:食物链的高端
    • 【框架介绍】一组类,为某个领域提供了一组服务。 代表了大规模的复用
    • 【作用】输出了一些类和机制 客户可以使用/扩展 它们;

机制的示例(画图机制):【MVC】

  • 画图机制】 几个对象通过协作(内部视图) 为用户展现图片(外部视图)。

    • 【对象】窗口、视图、模型、客户
  • 流程】 见下面的文字。
  • 该机制的好处
    • 模型 与 窗口/视图 解耦. 这样解耦之后有何好处? (方便修改、维护)

面向对象的分析与设计的难点

这类问题可以归结为,在方案空间中,选择较好的解的问题

  • 【抽象】抽象的方式多种多样?
  • 【连接方式】组合对象的方式多种多样?
  • 【语义】表达是否有助于理解?是否能够涌现出需要的功能?
    • 单纯看代码,不了解其面向的业务,是不太容易读懂代码的。

面向对象分析和设计的几个关键步骤_(豁然开朗)《面向对象分析与设计》读书笔记 (4)- 分类...相关推荐

  1. canoco5冗余分析步骤_基因富集分析|理解

    Gene Set Enrichment Analysis 基因富集分析 哈罗大家好!ヾ(≧▽≦*)o 年初在和老板研究 Identifying Cell Subpopulations 有关的课题,发现 ...

  2. ui设计和python哪个容易学_软件开发和ui设计那个容易学?

    感谢邀请,以下是我的一些亲身经历,想和大家分享. 真心的!建议哪怕是念完一个普通高中,也比现在直接去学那些职业技能要好,学历高一点,你面对的选择.能做的选择也会更多一些,能够拓宽你未来的职业路. 初中 ...

  3. mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_完整免费答案...

    单位工程施工组织设计的技术经济指标体系包括有().A.工期指标B.劳动指标C.台班利用率D.成本降低 大跨径桥梁采用()将会取得良好的技术经济效益.A.横移法施工B.顶推法施工C.转体法施工D.悬臂法 ...

  4. mysql数据库设计与应用答案智慧树_智慧树_MySQL数据库设计与应用_答案全部

    学前儿童加减运算概念发展可分为哪些水平层次()A.动作水平的加减B.表象水平的加减C.比较水平的 因为酸会降低果冻的凝胶力,所以我们不选用含酸性物质的水果.() 卫生法中的民事责任主要是A.行政处罚B ...

  5. python分析红楼梦出现的虚词词频统计_用Python分析红楼梦,见证贾府的兴衰

    分词词频统计 什么是分词?众所周知中文是以字为单位,句子中所有的字连起来才能描述一个意思.例如我是一个学生.计算机不能很容易明白"学"."生"两个字合起来才表示 ...

  6. gis可达性分析步骤_使用WGIS分析空间区位优势度

    如图,我们加载一份位置点的数据.以图中所有的位置点为研究对象,如何判断哪个点的区位优势最佳呢?比如我们要建一个供给站,给其他点供货,那这个站选在哪里好呢? 评价某地点的区位优势,是一项比较复杂的过程, ...

  7. 设计一个三阶巴特沃斯滤波器_巴特沃斯滤波器频率设计及增益多项式方程

    在之前的滤波器教程中,我们研究了简单的一阶型低通和高通滤波器,它们的RC滤波器电路设计中只包含一个电阻器和一个无功元件(电容器). 在使用滤波器对信号的频谱进行整形的应用中,例如在通信或控制系统中,滚 ...

  8. mysql数据库设计与应用答案智慧树_智慧树MySQL数据库设计与应用完整免费答案...

    智慧树MySQL数据库设计与应用完整免费答案 更多相关问题 [问答题,简答题] 保育员在教师组织教育活动时应做哪些配合工作? [填空题] 幼儿园的安全教育包括防火.防触电.放走失.防烫伤.防食物.防摔 ...

  9. pythonjieba情感分析步骤_基于jieba和doc2vec的中文情感语料分类

    Chinese-sentiment-analysis-with-Doc2Vec 简介 中文语料的情感分析基本步骤如下: 爬取相关的语料或者下载相关语料(本文使用了对于宾馆评价的相关语料作为例子) 将语 ...

最新文章

  1. 赶考在线执业药师,7-8月提分策略,化繁为简
  2. Android之如何获取网络类型并判断是否可用
  3. python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它
  4. Async Await
  5. Kali Linux Web 渗透测试秘籍 第二章 侦查
  6. C语言int的字节数跟什么有关,C语言中int型字长和什么有关
  7. 新型智慧城市 相关网址
  8. [转载]Codejock Xtreme ToolkitPro MFC 使用
  9. Office 2010安装时缺少MSXML 6.10.1129.0
  10. C# 串口驱动封装成类库
  11. photoshop Mac版本安装
  12. 4.(地图数据篇)nginx代理地图服务--离线部署地图服务
  13. codevs 4246
  14. 得到app文稿导出_得到app的文稿怎么下载复制导出
  15. PRACH, preamble, RO 的关系与区别
  16. 使用Layui制作界面及功能
  17. 【echarts记录 -- 3d 饼状图实现】
  18. 读《鬼谷子的局》笔记
  19. 进球数 概率 组合数学
  20. ShaderJoy —— “爽到飞起的 2233娘” 效果 【GLSL】

热门文章

  1. CSS 7:网页布局(传统布局,flex布局,布局套路)
  2. 22.executor service Flask
  3. 记录去大搜车的一道笔试题
  4. mysql5.7 cmake源码编译安装
  5. C++ int与string的相互转换(含源码实现)
  6. 十分钟看会laravel导入导出功能,就这么简单
  7. H5中滚动卡顿的问题
  8. 公开仓库中Docker镜像的漏洞分析结果发布
  9. Orchard之模版开发
  10. 重庆市档案局(馆)数据备份一体机项目