一、面向对象的概念与方法

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的更多相关文章

  1. 《OOAD与UML那点儿事》目录索引

    关键字:OOAD.UML.设计模式 各位园友,大家好,我是Bobby,在学习OOAD和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料 [内容简介]掌握某种开发语言,让你实现了由零到一的脱 ...

  2. OOAD与UML笔记

         UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OO ...

  3. OOAD与UML

    UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OOAD是根据OO ...

  4. OOAD和UML

    ooad: object oriented analysis designer 又有两个分支: ooa(object oriented analysis):what to do ood(object  ...

  5. Thinking in UML 学习笔记(四)——UML活动图来看核心

    在UML活动图的性质是一个流程图,它需要描述为完成活动的特定目标的描述来完成,这些交互运行顺序. UML有两个级别的活动图,的用例场景的叙述性描述,还有的对象用来描述交互的描述. 工具.它不是我们的分 ...

  6. Thinking in UML 学习笔记(三)——UML核心视图之类图

    类图的作用:用于展示系统中的类及其相互之间的关系. UML在解决面向对象的方法中对类理解为三个层次,各自是:概念层.说明层.实现层.在UML中,从開始的需求到终于设计类,类图也是环绕这三个层次的观点进 ...

  7. Thinking in UML 学习笔记(四)——UML核心视图之活动图

    在UML中活动图的本质就是流程图,它描述了为了完成某一个目标需要做的活动以及这些互动的执行顺序.UML中有两个层面的活动图,一种用于描述用例场景,另一种用于描述对象交互. 活动图只是我们用来描述业务目 ...

  8. Thinking in UML 学习笔记(二)——UML核心视图之用例图

    在UML中,需求模型又称为用例模型,它主要用于描述系统的功能性需求,即软件可以实现的功能,如登录.注册.入库.出库.查看库存报表.增加员工信息等.常规的用例建模一般包括两个组成部分:绘制用例图和编写用 ...

  9. 设计模式学习笔记之看懂UML类图

    什么是UML: UML(统一建模语言)是当今软件设计的标准图标式语言.对于一个软件系统而言,UML语言具有以下的功能:可视化功能.说明功能.建造功能和建文档功能. UML都包括什么类型的图: 使用案例 ...

随机推荐

  1. box-sizing的不同属性值间的区别

    box-sizing:值为 border-box时,其含义为:表示元素的宽度与高度包括内部补白区域(指border和padding)与边框的宽度与高度:值为content-box时,其含义正其前者相反 ...

  2. MySql 安装过程(摘自网络)

    下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下! 打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩, 运行“setup.exe”,出现如下界面 ...

  3. Chapter 19_0 位操作库

    位操作库是Lua5.2版本里添加的库,所有函数放在bit32 table里.(bit32只能针对32位整数运算) 在Lua5.3版本里,bit32库被废弃掉.不过可以使用一个外部兼容库,但是最好直接用 ...

  4. ios GCD的使用及封装

    实现代码: CGDHelper /* * Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. * 系统要求:iOS4.0以上. */ #import & ...

  5. ansible role 执行顺序

    the dependencies of the 'openshift-master' role.- docker- openshif_common  - os_firewall   - openshi ...

  6. put a favicon for github pages

    put the picture "favicon.ico" in the root of your web page repo.then add the following lin ...

  7. codefirst mvc Self referencing loop detected for property

    登录时,json序列化用户类时提示错误"Self referencing loop detected for property--",经过5个小时的查找,发现原因可能是,用户类包含 ...

  8. 删除和创建ms sql的分区文件

    今天测试ms sql 的表分区的时候,不小心搞错了分区的条件.然后我想重新做一次,操作流程如下(按顺序) 1:删除SCHEME DROP  PARTITION SCHEME TestSPScheme ...

  9. drupal中使用jquery&ajax

    不说了,直接上代码,看注释吧: <!--drupal中使用jquery的方法,有三个不同之处 --> <script> (function($){//1.$符号不放在最外边了 ...

  10. Android编程获取手机的IMEI

    手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IMEI是由15位数字组成 ...