笔记一:OOAD与UML
一、面向对象的概念与方法
1、 面向对象
1.1. 面向对象是一种系统建模技术
1.2. 面向对象编程是按照OO的方法学来开发程序的过程
1.3. 通过分析系统内对象的交互来描述或建模一个系统
1.4. 交互的对象最终以类的形式组织
1.5. OO的方法由三部分组成:过程、标识、规则
2、 对象
2.1. 是一个客观存在的、唯一的实体
2.2. 是面向对象编程过程中分析与解决问题的出发点与基础
2.3. 拥有自己的标识、数据与行为
2.4. 可以简单或复杂
2.5. 可以抽象或具体
2.6. 在OOP中是一个类的动态实例
3、 类
3.1. 类是对象的模板
3.2. 对象通过类实例化产生
3.3. 一个类可以创建多个对象
4、 OOAD(面向对象的)
4.1. OOAD是根据OO的方法学,对软件系统进行分析和设计的过程
4.2. OOA 分析阶段(What to do )
4.2.1. 建立针对业务问题域的清晰视图
4.2.2. 列出系统必须要完成的核心任务
4.2.3. 针对问题域建立公共词汇表
4.2.4. 列出针对此问题域的最佳解决方案
4.3. OOD 设计阶段(How to do)
4.3.1. 如何解决具体的业务问题
4.3.2. 引入系统工作所需的支持元素
4.3.3. 定义系统的实现策略
4.4. OOP的主要特征
4.4.1. 抽象(abstract)
忽略掉一个对象或实体的细节而只关注其本质特征的过程
简化功能与格式
帮助用户与对象交互
4.4.2. 封装(encapsulation)
隐藏数据和实现
提供公共方法供用户调用功能
对象的两种视图:
--外部视图 对象能做的工作
--内部视图 对象如何完成工作
4.4.3. 继承(inheritance)
通过存在的类型定义新类型的机制
通常在两个类型之间存在的“is a”或“kind of”这样的关系
通过继承可实现代码重用,另外继承也是多态的基础
4.4.4. 多态(polymorphism)
一个名称,多种形式
基于继承的多态
调用方法时根据所给对象的不同选择不同的处理方式
4.4.5. 关联(association)
对象之间交互时的一种引用方式
当一个对象通过对另一个对象的引用,达到去使用另一个对象的服务或操作时,两个对象之间便产生了联系
4.4.6. 聚合(aggregation)
关联关系的一种,一个对象成为另外一个对象的组成部分
是一种关系较强的关联
在两个对象之间存在“has a”这样的关系,一个对象作为另一个对象的属性存在,在外部对象被生产时,可由客户端指定与其关联的内部对象。
4.4.7. 组合(composition)
当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期的情况
关联关系中最为强烈的一种
内部对象的创建由外部对象自己控制
外部对象不存在时,内部对象也不能存在
4.4.8. 内聚与耦合(cohesion&coupling)
内聚度量一个类独立完成某项工作的能力
耦合度量系统内或系统之间依赖关系的复杂度
设计原则:增加内聚,减少耦合
4.5. 域 模型(设计模型)
域模型是面向对象的。在面向对象术语中域模型也可称为设计模型。
域模型由以下内容组成:
- 具有状态和行为的域对象
- 域对象之间的关系(关联-Association、依赖-Dependency、聚集-Aggregation、一般化(泛化)-Generalization)
4.6. 开发过程概述
- 传统开发过程
----- 瀑布模型<需求-分析-设计-实现-测试>
- OOAD开发过程
----- 统一软件开发过程(USDP)<迭代、递增>
4.7. 迭代、递增的项目生命周期
项目是迭代、递增的,迭代指生命周期中的一个步骤,迭代导致“递增”或者是整个项目的增长,大项目分解为子项目
在每一个迭代的阶段,应该做以下工作:
- 选择并分析相关用例
- 根据所选架构进行设计
- 在组件层次实现设计
- 验证组件满足用例的需要
当一次迭代满足目标后,开发进入下一个迭代周期。
每一个周期包含了一次或多次迭代
一个阶段的结束称之为“里程碑”
4.8. 迭代、递增生命周期的阶段
4.8.1. 初始化阶段
- 项目启动
- 建立业务模型
- 定义业务问题域
- 找出主要的风险因素
- 定义项目需求的外延
- 创建业务问题域的相关说明文档
4.8.2. 细化阶段
- 高层的分析与设计
- 建立项目的基础框架
- 监督主要的风险因素
- 制定达成项目目标的创建计划
4.8.3. 构建阶段
- 代码及功能的实现
4.8.4. 移交阶段
- 向用户发布产品
- Beta测试
- 执行性能调优,用户培训和接收测试
4.9. 每个阶段所含的工作流
- 需求与初始分析
- 分析
- 设计
- 实现
- 测试
- 每一次迭代执行工作流的深度不同
- 早期的迭代在深度上覆盖初始工作流,后期迭代在深度上覆盖后期工作流
- 80/20原则
4.10. 迭代、递增生命周期的优化
- 降低成本
- 便于更好地维护项目进度
- 便于团队的协作开发
- 便于适应用户需求的动态变化
二、使用UML
1、 UML简介
统一建模语言是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素、构建模块、分析过程并可以通过文档说明系统中的重要细节。
2、 UML分类
- 静态模型
创建并记录一个系统的静态特征,反映一个软件系统基础、固定的框架结构,创建相关问题域主要元素的视图
包含:用例图、类图、对象图、组件图、部署图
- 动态模型
用于展示系统的行为
包含:时序图、协作图、状态图、活动图
3、 其他UML元素
包(Package)
UML的扩展机制:
- 注释
- 构造型
- 标记值
- 限制
笔记一:OOAD与UML的更多相关文章
- 《OOAD与UML那点儿事》目录索引
关键字:OOAD.UML.设计模式 各位园友,大家好,我是Bobby,在学习OOAD和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料 [内容简介]掌握某种开发语言,让你实现了由零到一的脱 ...
- OOAD与UML笔记
UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OO ...
- OOAD与UML
UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OOAD是根据OO ...
- OOAD和UML
ooad: object oriented analysis designer 又有两个分支: ooa(object oriented analysis):what to do ood(object ...
- Thinking in UML 学习笔记(四)——UML活动图来看核心
在UML活动图的性质是一个流程图,它需要描述为完成活动的特定目标的描述来完成,这些交互运行顺序. UML有两个级别的活动图,的用例场景的叙述性描述,还有的对象用来描述交互的描述. 工具.它不是我们的分 ...
- Thinking in UML 学习笔记(三)——UML核心视图之类图
类图的作用:用于展示系统中的类及其相互之间的关系. UML在解决面向对象的方法中对类理解为三个层次,各自是:概念层.说明层.实现层.在UML中,从開始的需求到终于设计类,类图也是环绕这三个层次的观点进 ...
- Thinking in UML 学习笔记(四)——UML核心视图之活动图
在UML中活动图的本质就是流程图,它描述了为了完成某一个目标需要做的活动以及这些互动的执行顺序.UML中有两个层面的活动图,一种用于描述用例场景,另一种用于描述对象交互. 活动图只是我们用来描述业务目 ...
- Thinking in UML 学习笔记(二)——UML核心视图之用例图
在UML中,需求模型又称为用例模型,它主要用于描述系统的功能性需求,即软件可以实现的功能,如登录.注册.入库.出库.查看库存报表.增加员工信息等.常规的用例建模一般包括两个组成部分:绘制用例图和编写用 ...
- 设计模式学习笔记之看懂UML类图
什么是UML: UML(统一建模语言)是当今软件设计的标准图标式语言.对于一个软件系统而言,UML语言具有以下的功能:可视化功能.说明功能.建造功能和建文档功能. UML都包括什么类型的图: 使用案例 ...
随机推荐
- [HMLY]3.如何使用Xcode Targets管理开发和生产版本?
本文原地址:http://www.appcoda.com/using-xcode-targets/ 在开始此教程之前,我们假设你已经完成了应用程序的开发和测试,现在准备提交生产发布.问题是,某些web ...
- c++设计模式-----抽象工厂模式
抽象工厂模式 要创建一组相关或者相互依赖的对象 作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. UML类图 抽象基类: 1)AbstractProductA.Abstrac ...
- 主题模型 利用gibbslda做数据集主题抽样
电子科技大学电子商务实验室Kai Yip,欢迎同行指正,也欢迎互相指导,学习. 广告打完,进入正题. 关于程序运行结果的分析请参照我的另一篇博客:http://www.cnblogs.com/nlp- ...
- Web中的无状态含义
REST架构设计是目前非常火热的概念,已经成为构建web服务时应该遵循的事实标准.REST约束中有一条很重要的规则是“无状态”,但“无状态”是个很抽象的概念,对刚刚接触的人来讲,很难深刻形象的理解.今 ...
- javaweb之session过期验证
session过期判断的基本思想:用户登录成功后,将用户账号信息保存在session中,然后几乎每次执行命令都要经过过滤器,过滤器检查session中是否存在账号,若不存在, 则返回登录页面,反之正常 ...
- C#操作xml文件进行增、删、改
进行操作的xml文件: products.xml <?xml version="1.0" encoding="utf-8"?><product ...
- MYSQL 主从复制(NIOT)
一.主数据库操作设置(A) 1.修改配置文件,vim /etc/my.cnf,然后重启mysqld,/etc/init.d/mysqld restart [mysqld]<要在mysqld中括号 ...
- react使用map生成的元素,key的设定不对导致每次删除都删除最后一个
假设 你的key设置为map中的索引,假设为0,1,2(原dom树),现在你用splice删除掉1,重新渲染时,还是会按map索引按顺序渲染为0,1(新dom树),由于react渲染机制是比较的key ...
- javascript单例模式(懒汉 饿汉)
第一种:懒汉模式 var Singleton=(function(){ var instantiated; //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢 functi ...
- XML的xPath格式
XML的xPath格式(C#) xPath是XML提供的一种格式,用来查询XML的节点. <?xml version="1.0" encoding="ISO-885 ...