找到问题域中的对象并建立模型

一、面向对象方法概述

从面向对象的角度来看,世界就是由对象组成的。任何给定的商业功能都是由一整套共同工作的对象互相协作来完成的。对象不仅可以执行功能,还拥有属性(数据)。计算机世界更好地映射现实世界。

1.1 面向对象方法的发展

面向对象编程(OOP)——>面向对象设计(OOD)——>面向对象分析(OOA)

1.2 面向对象方法的优势

(1) 对问题空间的理解更直接,更符合人类思维方式
(2) 系统分析和系统设计使用同一模型,各阶段过渡平滑
(3) 开发出的信息系统本质上生命力强
(4) 易于扩充和维护
(5) 与数据模型一致

二、识别领域对象

用例建模解决了业务管理功能到信息系统功能的映射;

领域对象建模解决业务管理对象到信息系统逻辑结构(软件结构模型和数据库结构模型)的映射;

对象建模采用的是面向对象分析技术,有关模型包括:

-类图(class diagram):对象及其关系,用于描述系统静态结构;

-状态图(statechart diagram):对象的状态及转换,用于描述基于事件响应的对象动态行为和状态之间的关系;

Q: 什么是领域对象?

领域对象就是问题域中有意义的概念类,它们是现实系统中的事物(things)或事件(events)。

软件系统中的类一部分来自于领域对象。

1、Wirfs-Brock名词短语策略
1 阅读理解需求文档(或用例说明);
2 反复阅读,筛选出名词或名词短语,建立初始对象清单(候选对象);
3 将候选对象分成三类,即显而易见的对象、明显无意义的对象和不确定类别的对象;
4 舍弃明显无意义的名词或短语;
5 小组讨论不确定类别的对象,直到将它们都合并或调整到其它两类。

可根据概念类别来发现问题域中的候选概念,概念类分为:实体类和描述类。

实体类指的是现实环境中存在的事物或者发生的事情;

描述类指的是包含其他事物的信息,需要额外的对象描述,独立于对象现有实例。

三、识别对象的关联

组成系统的事物之间是相互制约相互依赖的,对象间有一定的关联结构。如同实体关系图(E-R图)就基本表达了这种关联。UML对于对象关联关系有明确的定义和表示法。

关联表示不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。可以使用关联表示对象了解其他对象的程度。PS:关联体现的是对象实例之间的关系,而不表示两个分类之间的关系。比如教师和课程之间是承担关系)

描述关联的要素:



四、整体和部分的关联

如果对象a是对象b的一个组成部分,则称b为a的整体对象,a为b的部分对象,二者对应的关联形式称为整体-部分关联(Whole-Part)。这种结构可以用a “is a part of” b进行验证。

整体-部分关联是关联中使用较频繁的一种模式,用于对模型元素之间的组装关系进行建模。整体-部分关系在现实生活中可以表现为以下几种形式:

-客观上或逻辑上的整体事物和它的组成部分(机器和零件、人体和器官、书和章节、图和元素)

-组织机构和它的下级组织及部分(公司和子公司、医院和科室)

-团体(组织)和成员(科室和医生、班级和学生)

-空间上的容器事物和其包容物(车间和机器/工人、教室和设备)

整体-部分关系建模的这种关联也称为聚集(aggregation),在UML类图中使用连接线和菱形表达,菱形一端的对象是整体对象。

整体-部分关联有两种类型:

-组合聚集(composition aggregation )
-共享聚集 (shared aggregation)

4.1 组合聚集

组合聚集具有很强的归属关系,在特定时刻部分只能是一个组合对象的成员。

整体端的重数不会超过 1(即它无法被多个整体对象共享),关系建立后一般不可变更。

关联路径的末端有一个实心菱形,用来表示组合关系。

4.2 共享聚集

描述整体-部分的关系,部分可能同时属于多个整体对象。

关联路径的末端有一个空心菱形,用来表示聚集关系。

For example:

五、识别泛化关系

泛化(Generalization)是在多个概念之间识别共性,定义超类(一般概念)和子类(特定概念)关系的活动。

-如在图书馆系统中,发现图书馆目前还收藏了其它资源,比如影碟(VCD/DVD)、音乐CD、电子书等品种。它们和图书一样可以被任何读者借出,每个对象都有条码和状态。但它们也有自己的特性,比如属性项、借阅期限、逾期惩罚不同,必须区别对待。

1、一般-特殊结构(Generalization-Specialization)

如果类A具有类B的全部属性和行为,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。这种关系也称为一般-特殊关系、泛化-特化关系、继承关系。

特点:

-可以简化模型,有效地反映问题空间的分类层次。
-必须确认子类一定是父类的一个特殊类型,即可以用“is-a-kind-of”进行验证
-注意控制泛化的粒度,额外的泛化增加复杂性

图书馆系统的泛化关系


2、什么时候需要划分一般-特殊结构

1、类的属性或行为不适合该类的全部对象

-如果定义“学生”类有“导师”属性,有“教学实践”行为的话,则该类的对象对于本科生不适合,只适合于研究生对象,采用一般-特殊结构重新分类,建立“学生”和“研究生”之间的一般-特殊结构,研究生可以继承所有学生的特性。

2 属性和行为相似的类

-将这些类的共性抽象出来作为超类,各自特性仍旧保留而作为超类的子类。

3 不要将一个对象的状态变化设计为多个子类,除非对象的多数行为是由状态来决定

3、抽象类

如果一般类A的每个实例还必须是它的一个特殊类的成员,那么类A就被称为一个抽象类。

-比如“学生”、“研究生”中,“学生”不是一个抽象类

-比如“支付”、“现金支付”、“信用卡支付”中,“支付”就是一个抽象类

但面向对象的设计原则强调设计抽象类,比如学生,设计一个抽象学生类,然后派生出本科生和研究生

抽象类意味着不能创建该类的实例

4、多继承

继承有单继承和多继承。

多继承是指一个子类继承了两个父类的属性和行为。

例如MyTool继承铅笔和橡皮两种事物的特性:

5、接口

当多种不同类型的对象具有相似行为时,可以将他们的行为进行抽象,定义为接口。

接口只是某种行为的契约,接口不含有契约的具体实现机制,实现由类来完成。

例如:

-业务系统中有些单据能撤销,有些不能,可以将撤销操作封装到一个接口中,所有支持撤销的单据类去实现该接口

6、类图

六、对象状态建模

系统模型包括静态模型动态模型

静态模型反映系统的结构,动态模型反映系统如何运作(信息的处理过程)。

动态模型:

-状态图:对象状态及变化

**-交互图:**不同对象之间的交互协作,如顺序图、通信图

对象状态建模的意义:

研究对象状态变化与动态行为之间的关系

不仅能描述一个对象的所有可能状态,还能显示该对象在某个状态下基于特定事件作出响应的动态行为。

状态模型还可以与流程模型、用例模型进行相互补充和参照。

-不同模型的特点和描述能力不同,多种模型在一起才能获得更详尽具体的系统全貌。

-不同模型还可以进行对照检查,查漏补缺,发现问题。比如检查对象状态变换过程是否与流程模型的控制逻辑一致,检查用例模型定义的功能需求是否能覆盖对象全周期内的各种状态变化。

状态图

在UML2.0命名为状态机图(state machine diagram),它是表述系统行为的一种技术,在面向对象方法中,对单一的类绘制一个状态机图以表示该对象的生命期行为和状态转换。

对象可能存在的状态:

初态:是状态图的起始点,表示对象的初始状态,初态只有一个,用实心圆表示。

终态:是状态图的终点,表示一个对象完成必要操作后的最终状态,终态不能是复合状态。实心圆外加一个圆圈来表示终态。

复合状态:一种状态中还嵌套有其它多个状态(子状态)。

状态图的元素

-状态

-转换(transition):指出由一种状态到另一种状态的运动。每个转换上有可选标记,标记含有三部分内容事件:

事件[监护条件]/活动(event[guard]/activity)

只有发生指定的事件后才有可能引发状态的改变

需要监护条件为真时转换才会生效

活动是在转换执行中的行为

-内部活动:对象在某个状态内部执行的操作

当事件 turn on发生时,只有水壶内有水(have water)才能由off状态转换到on状态,并发生烧水的动作(Boiling Water),其实动作也可以放在on状态中。

信息系统分析与设计——第八章 领域对象建模相关推荐

  1. 信息系统分析与设计 第六章 流程建模

    文章目录 业务流程分析与建模 数据流分析与建模 业务规则的表示 业务流程分析与建模 业务流程图示应有以下基本表达能力: 业务流程包含多个业务功能(活动) 业务功能可能由不同部门负责 活动有次序 活动执 ...

  2. 预付卡管理信息系统_校园寝室桶装水配送管理信息系统分析和设计

    学校管理信息系统的课程设计 后来调整字体和间距的时候把word搞乱了,就只剩下pdf版本了,gg 我做的是校园寝室桶装水配送管理信息系统分析和设计 pdf:文件分享 管理信息系统课程设计 (2020 ...

  3. 信息系统分析与设计杨选辉_信息系统分析与设计

    spContent=本课程按照传统的结构化开发方法由浅入深.完整地介绍了信息系统的设计与开发的全过程:还着重介绍了当前最为流行的面向对象的信息系统分析与设计方法. 课程精选了开发过程中最基本.最实用的 ...

  4. 信息系统分析与设计杨选辉_信息系统分析与设计(第2版)

    Contents第1章信息系统导论1 1.1信息1 1.1.1信息的概念1 1.1.2信息的特性2 1.1.3信息的分类3 1.1.4信息与决策3 1.2系统5 1.2.1系统的概念5 1.2.2系统 ...

  5. 信息系统分析与设计 机票预定管理系统

    系统规划 1.1系统开发背景 随着人均收入水平的提高,人们出行的方式也变得多种多样,更多的人会选择节约时间的飞机出行,因此航班数和飞机数量也就随之增加.为了增强用户的购票体验,需要一种如本实验所做的机 ...

  6. 信息系统分析与设计-信息、管理与信息系统

    信息系统分析与设计-信息.管理与信息系统 1.信息与信息系统 1.1 信息的概念 1.2 信息系统的定义 1.3 信息系统的基本功能 1.4 小结 2.信息系统结构 2.1 信息系统的概念结构 2.2 ...

  7. 信息系统分析与设计 第九章 系统设计概述

    文章目录 系统设计的任务要求 系统设计的内容 系统设计说明书 系统设计的任务要求 通俗地说,设计就是要回答"怎么做" 完成技术实现方案的制定,即信息系统的物理模型 -一个逻辑模型, ...

  8. 02134信息系统分析与设计-历年考点整理

    集中式系统的优点和缺点[2013.1.2013.4.2014.1] 优点: 信息资源集中,管理方便,规范统一 专业人员集中使用,有利于发挥其作用,便于组织人员培训和提高工作 信息资源的利用率高 系统安 ...

  9. 信息系统分析与设计 第十一章 系统详细设计

    文章目录 11.1 输出设计 11.2 输入设计 11.3 人机交互设计 11.4 计算机处理过程的设计 11.5 数据库设计 11.6 代码设计 11.7 网络和计算机系统设计 11.1 输出设计 ...

最新文章

  1. MySQL登录时ERROR 1045:Access denied for user ‘root’@’localhost’ (using password: YES)
  2. IETester-IE兼容性测试工具
  3. 一个不错的权限管理模块设计案例
  4. table居中显示_「CSS三种居中方案全解」CSS垂直居中常用方法集结
  5. 解决 Visual Studio 2019 无法打开wpf设计器问题
  6. php常用的数组函数及功能,PHP 常用数组函数 (1)
  7. STM32涨价?那就用国产32替代吧!
  8. abap代码获取采购订单po中的抬头文本
  9. stata中心化处理_带有stata第2部分自定义配色方案的covid 19可视化
  10. 超完整的 Chrome 浏览器客户端调试大全
  11. 《天天数学》连载01:一月一日
  12. 一张图看懂hadoop
  13. ThinkPHP的RBAC权限控制
  14. php数字转千分制,JS实现金额千分制的转换以及还原
  15. WLAN加密技术详解
  16. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_12_常用的函数式接口_Predicate接口...
  17. 企业微信登陆服务器设置,企业微信怎么登入
  18. C#中IntPtr打印输出
  19. catia二次开发:结构树文档,录制宏编程思路,遍历结构树,catia根对象窗体属性,打开导出文件,cameras工具条,viewer对象和截图,catia发送命令
  20. KEIL4文件无法正常使用

热门文章

  1. java离线日期授权解决方案 解决改系统日期 Java代码混淆 日期混淆
  2. “希希敬敬对”团队作业-敏捷冲刺-3
  3. 读华为副总裁徐家骏总结的个人心得
  4. js设计模式与开发实践(读书笔记)
  5. leetcode 大礼包
  6. 用java画爱心图_用java实现 图片组成心形图案
  7. Webrtc Native C++在root模式下启用PulseAudio,音频采集替换为ALSA模式
  8. beyond VVC SCC技术学习:
  9. Visual Studio Ultimate 2013 下载地址+序列号
  10. 如何在网页中插入Skype链接标签,如www.haoyunlifu.com中Skype链接