代码改变世界

面向对象的分析--最简单的知识点总结,给像我一样初学面向对象分析的极客

2010-05-29 22:02  穆容  阅读(1768)  评论(3编辑  收藏  举报

面向对象分析

 

1概述

         1.1传统的结构化设计:

自上而下基于结构分解

         1.2面向对象设计:

考虑完成服务通常会涉及到那些人或事(对象),每个对象有那些指责

         1.3面向对象方法的发展:

                   面向对象编程(OOP

                   面向对象设计(OOD

                   面向对象分析(OOA

         1.4主要概念:

                   对象

                  

                   封装

            !消息:在面向对象设计和实现中,消息的一般形式就是函数调用,采用消息而不是函数调用这个术语的好处在于它更接近于日常术语,它更具有一般性。

                   继承和多态性

                   关于

 

2.迭代开发过程

         2.1定义:

根据系统功能子集而不是软件开发活动将项目分解为多个迭代周期,每个迭代周期内又完成需求定义,分析,设计,实现等活动,能够生产经过测试和集成的,可执行的系统子集。

         2.2Rational统一过程:

                  用例驱动:即需求驱动之后的全部软件开发过程

                  以结构为中心:设计架构必须从全面了解系统的主要用例入手,这些用例构成了系统核心功能,数量可能只占全部用例的10%~20%,然后随着用例的逐步完善,架构将会并行地进行。

         2.3敏捷开发过程:《敏捷软件开发宣言》

 

3..用例模型

         3.1系统需求

                   功能性需求

                   非功能性需求:系统性能和系统特性

         3.2用例

                   确定谁是参与者

                   主要参与者和次要参与者

                   参与者的泛化

                   确定用例

         3.3用例的描述

                   前置条件和后置条件

                   主事件流

                   备选事件流

                  事件流的书写标准

                   非功能性需求

         3.4建立用例的关系

                   包含:经过封装后可以在各种不同的基本用例中复用的行为(必不可少)

                   扩展:扩展用例的缺失不能影响基本用例的完整性

                   泛化:用一个新的,通常也是抽象的父用例来描述这些共有部分,该用例随后被子用例特殊化。

 

4.分析模型

         4.1从需求到用例

                   建立分析模型的过程:

(1)       发现领域对象,定义概念类

(2)       识别对象的属性

(3)       识别对象的关系,包括建立类的泛化关系

(4)       建立交互图

        4.2定义概念类

                   4.2.1名词短语策略:先识别有关问题域文本描述中的名词或者名词短语,然后将他们作为候选的概念或者属性。

                   步骤:

(1)       理解需求文档

(2)       筛选出名词或者短语作为候选对象

(3)       将候选对象分为三类:显而易见的对象,明显毫无意义的对象

(图书状态表示某本书是否在馆内,它总是和具体的图书联系在一起,不是一个独立的对象,而是图书对象的一个属性,因此舍弃)

                   4.2.2使用概念类别列表

                            人员;组织;物品;设备;事件;规格说明;业务规则或政策

         4.3添加属性

                   4.3.1发现策略

                            1)对象的一般性描述

                            2)特定描述性

                            3)对象在系统中的责任

                            4)对象需要长期保存那些信息

                            5)对象处于什么状态

                   4.3.2保持属性的简单性

                            1)仅定义与系统责任和系统目标有关的属性

                            2)使用简单数据类型来定义属性

                            3)不用可导出熟悉

                            4)不为对象关联定义属性:仿照关于数据中的外键模式设计,这样做违反了面向对象的原则。

         4.4识别对象的关联

                   4.4.1定义:关联体现的是对象实例之间的关系,而不表示两个分类之间的关系。

                   4.4.2特性:关联名称;角色;多重性;导向性;

                   4.4.3整体-部分关联

                   4.4.4识别关联

         4.5泛化

         4.6分析模型

                   顺序图:画顺序图的关键是要理清对象间的交互,也就是决定消息该发给哪个对象,换句话说要决定某项服务应该由哪个对象来完成。

                   消息是顺序图的灵魂。

                   由一个担任总控角色的对象负责将所有消息分发给不同对象,同时该对象也负责处理消息回送的数据。

                   关联双方占据控制地位的对象分发消息给受控的一方。(此者更符合对象思维,设计出来的系统耦合度相对较低)