OOAD —> OOA OOD
OOA 面向对象分析
OO :软件工程技术,应用在软件开发的调研,分析,设计,编码,升级,扩展,测试等各个环节,并使用到大量的方 法,理论,原则,模式,工具,语言志在提高软件质量的综合技术。
OO:继承,封装,多态
继承
优点:
1: 复用
2: 依赖于父类而又不局限于父类的表现— 子类可以对父类进行扩展
3:可以从某种意义上增加代码的灵活度《相对性》
缺点:
1: 高耦合(当父类的敞亮,变量,方法被修改时,必需要考虑子类的修改)
2:继承是入侵性的(只要继承,就必须拥有父类的所有属性和方法)
3: 降低了代码的灵活性(子类拥有了父类的属性方法,会增多约束)《相对性》
多态:同一类域的不同对象在处理同一行为的操作时,有不同的表现方式
类与类的关系:
继承
实现
依赖:(组合,聚合)
具有偶然性,临时性,非常弱的。(短暂性的使用)称为弱依赖;
与类共生共灭,称为强依赖
class A{
B b;
public A(){
b = new B(); // 组合关系
}
public void setB(B b){ //聚合关系
this.b = b;
}
}
class B{}
Abstract class && interface
设计角度:
1:避免多继承
2:interface <——功能 abstract:属性更像是一个模板
怎么选择?
1 :思想
2:根据问题域选择
————————————————————————————————————
OOA:面向对象分析 (需求与初始分析,建模)
背景调研:特性分析
需求确认:列出需求
风险规避:1:规避重复 2:概念模糊 3:技术实现
静态分析: UML 原型(axure工具) ———> (前面属于分析,后面是设计)效果图 ——>切图———>编码
OOD 面向对象设计:(OO设计原则与模式,建模,系统设计)设计原则 , 设计模式
设计原则:
单一职责:类的职责要单一,不能将太多的职责放在一个类中。
里氏替换:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。
开闭原则:软件实体对扩展是开放的,但对修改是关闭,即在不修改一个软件实体的基础上去扩展其功能。
依赖反转原则:要针对抽象层编程,而不要针对具体类编程。
接口隔离原则:使用多个专门的接口来取代一个统一的接口。
合成复用原则:在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系。
迪米特法则: 一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个 类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互
维护性低的软件设计通常由于下面4个原因造成:
1:过于僵硬
2:过于脆弱
3:复用率低
4:黏度过高
好的系统设计应该具备以下三个性质
1: 可扩展性
2 :灵活性
3 :可插入性
定义OOA阶段
分析阶段主要解决以下问题
1: 建立针对业务问题域的清晰视图。
2:列出系统必须要完成的核心人物。
3:针对问题域建立公共词汇表。
4:列出针对此问题域的最佳解决方案。
此阶段要解决的核心问题是“将要做什么”?
定义OOD阶段
1:如何解决具体业务问题。
2:引入系统工作所需要的支持元素。
3:定义系统的实现策略。
此阶段要解决的核心问题是"怎么做"?
OOP的主要特征
1:抽象
2:封装
3:继承
4:多态
5:关联
6:聚合
7:组合
8:内聚和耦合
开发过程概念
1:传统开发过程----->瀑布模型
需求 分析 设计 实现 测试~
2:统一软件开发过程(usdp)
3:Universal Process(通用流程)
OOAD的开发过程
1:大项目分解为一些子项目。
2:使用UML工具。
3:统一软件开发过程是一个迭代,递增的开发过程。