OOAD学习目标:
1.A critical,fundamental ability in OOAD is to skillfully assign responsibilities to software components.(面向对象分析设计种至关重要的的能力是熟练地为软件部件分配职能)
2)GRASP patterns ,nine fundamental priciples in object design and responsibilities assignment.
什么是分析和设计:
1)分析强调对问题的调查研究而非解决方案
2)设计强调满足需求的概念上解决方案而不是其实现
3)有益的分析和设计可以概括为做正确的事和正确地做事
什么是面向对象
面向对象将功能通过对象来实现,将功能封进对象中,让对象实现具体细节。
什么是OOAD
1)OOAD 的方法要求设计中要映射现实世界中指定问题域中的对象和实体
2)OOAD的精髓是透过对象(事情、概念、实体)考虑问题域和概念上的解决方案
3)OOA强调在问题域内发现和描述对象
4)OOD强调定义软件对象以及他们如何协作以实现需求
OOA做的事是
1)对问题域进行理解并抽象成概念(对象)
2)找到概念之间的联系
3)找到概念中的属性
问题域:被开发系统的应用领域,即现实世界中由这个系统进行处理的业务范围
用例:人们如何使用应用的场景或情节的记录
面向对象分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念或对象,领域模型表述了重要的概念及其关联和属性。领域模型斌不是对软件对象的描述,它使真实世界领域中的概念和想象可视化,又叫概念对象模型。
交互图:面对对象设计关注定义软件对象以及对象间的协作,交互图为描述协作的常见方法,交互图有通信图和顺序图。
设计类图:有效表示类定义的静态图视图。
UML 统一建模语言,是描述、构造和文档化系统制品的可视化语言,其目标为使用面向对象的思想建立模型系统
UML三种应用方式:
1)UML作为草图
非完整,不正式的图
2)UML作为蓝图
相对详细的设计图,用于:
1.逆向工程,以UML图方式对现有代码进行可视化,使其易于理解。
2.代码生成,前向工程
3)UML作为编程语言
1.用UML完成软件系统可执行规格说明
2.可执行代码能够被自动生成
3.UML作为编程语言仍处于开发阶段
UML图定义
用例图:描述角色以及角色与用例之间的连接关系
类图:描述系统中的类,以及对象、接口、协作等事物之间的关系
交互图:描述对象间如何协作,包括序列图(顺序图)和协作图
状态图:描述类的对象所有可能的状态,以及事件发生时状态的转移条件
活动图:描述用例要求所要进行的活动,以及活动间的约束关系
包图:描述系统的逻辑架构
部署图:描述系统的硬件配置、部署以及软件构件和模块在不同节点上的分布。
UML五类图(9种图形)定义
1)第一类:用例图
从用户角度描述系统功能,并指出各功能的操作者
2)第二类:静态图
包括类图、对象图和包图
3)第三类:行为图
描述系统的动态模型和组成对象间的交互关系
行为图包括状态图、活动图
4)第四类:交互图
描述对象间的交互关系
5)第五类:实现图
包括构件图和部署图
构件图描述代码部件的物理结构和部件之间的依赖关系
UML图分类
UML中的几种关系
1.泛化(Generalization):带三角箭头的实线,箭头指向父类
2.实现(Realization):带三角箭头的虚线,箭头指向接口
3.关联(Association):带普通箭头的实心线,指向被拥有者
4.聚合(Aggregation):带空心菱形的实心线,灵性指向整体
5.组合(Composition):带实心菱形的实线,菱形指向整体
6.依赖(Dependency):带箭头的虚线,指向被使用者
UML图关系
迭代、进化和敏捷
敏捷模型(Agile modeling)是有效应用 UML的关键
敏捷开发核心原则:简单、顺应变化、可递增
敏捷开发:通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性的方法和实践。
具备进化式精化计划
短时间定量迭代需求和设计
倡导简易、轻量等敏捷性的实践和原则
敏捷建模:
敏捷方法不意味着不进行任何建模
建模的目的主要用于理解和沟通,并不是构建文档
不要对所有或大多数软件设计建模使用UML,可以将简单设计推延到编程阶段
尽可能使用最简单的工具
不要单独建模,建模目的式发现、理解和共享大家的理解
敏捷建模的特点:
轻量型的开发过程
重视敏捷建模的实践
迭代式的开发过程
以人为主导的开发环境