导图社区 分析与设计思维导图
一张思维导图带你了解面向对象分析和设计的知识点,包括对象模型和复杂度两方面,有需要的朋友赶快收藏下图了解吧!
全栈主要技能点梳理,还有学习路线整理,本图知识全面详细,干货满满,现在不收藏,还在等什么呢。
对VUE源码进行一个全面梳理与分析,是前端学习进阶最好的参考材料,本图知识梳理清楚,非常实用,值得收藏。
vue核心知识梳理与总结,包括VUE基础语法、Vue3.X组件相关语法、Vue3.X动画和高级语法等内容。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
面向对象分析和设计
复杂度
4个复杂度原因
问题域的复杂度
功能性需求
非功能性需求
系统用户和开发人员的沟通困难
难以用一致的语言描述问题
管理开发过程的复杂度
通过软件可能实现的灵活性
刻画离散系统行为的问题
5个属性
层次结构
所有系统都有子系统
所有系统都是更大的系统的组成部分
系统提供的价值来自于各个子系统的相互关系
相对本原
选择哪些作为系统的基础组件相对随意,取决于系统观察者的判断
分离关注
层次系统是可分解的
组件内部的联系通常比组件间的联系更加频繁
组件内部作用和组件间作用的差异可以让我们在系统不同部分间分离关注点
共同模式
复杂系统都用共同的模式,可以涉及小组件的复用,比如细胞
稳定的中间形式
复杂系统都是由能工作的简单系统演化而来的
2种层次结构
组成部分 has a
对象结构
是一种 is a
类结构
3类设计方法
自顶向下的结构化设计方法
不考虑数据抽象和信息隐蔽
没有足够手段来处理并发,可伸缩性差
数据驱动的设计方法
系统的输入和输出之间的映射关系驱动软件系统的结构
关注系统的输入和输出
函数式编程
面向对象的设计方法
面向对象方法的底层思想是将系统建模为一组协作的对象,而对象又是类的实例,类又有层次关系。类结构表示is-a关系,对象结构表示has-a关系。
将系统分解成一组协作的对象
单个对象是类的实例
类有层次关系
从混沌到有序(分而治之)
算法分解
强调了执行的顺序
面向对象分解
强调了一些代理,要么发出动作,要么执行动作
面向对象设计方法的优势
有助于组织软件系统的内部复杂性
通过复用共同的机制,得到一些较小的基础系统,提供了重要的表达经济性
应对变化时更具有弹性,能够随着时间演变。因为面向对象的设计基于稳定的中间状态(简单系统)
面向对象分解极大的降低了构建复杂系统的风险,因为是从较小的系统开始增量地演进
通过分离关注点,直接关注了系统的内部复制性
对象模型
程序语言从低级到高级是逐渐靠近问题领域,远离底层硬件的过程
第一代语言面向数学
第二代语言面向算法
全局数据和子程序
第三代语言面向过程
过程和函数是动作,面向过程的本质围绕动词组织的
最适合计算密集型的应用
第四代语言面向对象
对象是名词,面向对象的本质是围绕名词组织的
面向对象设计的目的是为了解决大型系统的复杂度
面向对象编程的定义 OOP
没有继承关系就不是真正的面向对象,只是利用抽象数据结构在编程。 一组协作的对象表示了系统的“组成部分”的层次结构 类表示了系统的“是一个”的层次结构
1. 程序被组织成相互协作的对象
2. 对象是类的一个实例
3. 类是由继承关系形成的层次结构
类可以从超类中继承属性。 所以基于扩展(extends)的继承和基于原型(prototype)的继承,都可以认为是继承关系。 基于extends的继承构建的对象,对象本身包含了继承自父类的部分,是不可分割的,是一种强继承关系。 基于原型的继承,对象本身并不包含继承自祖先的部分,只是通过原型链指针指向父类的原型,是各自独立的,是一种弱继承关系。
面向对象设计的定义 OOD
面向对象设计是一种方法,包括面向对象分解的过程和一种表示法,这种表示法用于展示被设计系统的逻辑模型和物理模型,静态模型和动态模型
逻辑模型
类和对象
物理模型
模块和处理架构
系统的静态和动态特征
面向对象分析的定义 OOA
从问题域中找到对象和类的名词来分析需求
找到对象之间的关系
过滤对象和类
对象模型的4个主要要素
抽象
抽象描述了一个对象的基本特征,是其区别与其他一切对象的概念边界。与观察者的角度有关。抽象的关键是只关注通用的行为和属性,不考虑具体的实现
实体抽象
代表了问题域实体
通过外部视图提供了对外的契约,通过内部视图来实现对外的契约。契约由一组操作构成
提供静态和动态的属性
动作抽象
代表了一组通用的操作,所有这些操作都执同类的功能
抽象关注于可以被观察到的行为,封装关注于这种行为的实现
封装
每个类必须有两部分,一个是接口,表示对外视图。一个是实现,表示内部视图
模块化
模块将逻辑相关的类和对象打包成独立的物理单元
对象模型的3个次要要素
类型
并发
持久