面向对象的分析--最简单的知识点总结,给像我一样初学面向对象分析的极客
2010-05-29 22:02 穆容 阅读(1774) 评论(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分析模型
顺序图:画顺序图的关键是要理清对象间的交互,也就是决定消息该发给哪个对象,换句话说要决定某项服务应该由哪个对象来完成。
消息是顺序图的灵魂。
由一个担任总控角色的对象负责将所有消息分发给不同对象,同时该对象也负责处理消息回送的数据。
关联双方占据控制地位的对象分发消息给受控的一方。(此者更符合对象思维,设计出来的系统耦合度相对较低)