文章链接:https://codemouse.online/archives/2020-05-15124035

面向对象的基本概念

  • 对象:一组属性以及这组属性上专用操作封装体。
  • 消息:对象间通信手段,通过发送消息请求服务。
  • 继承:基于层次关系不同类共享数据和操作机制。
  • 分类:一组具有相同属性和相同操作的对象集合。
  • 多态:不同对象对同一个操作产生不一样的结果。
  • 动态绑定:不是编译之前就把对象和类绑定在一起,编译的时候对象和类才会产生一定的联系。

面向对象的分析与设计过程

面向对象分析步骤

  1. 获取客户的系统需求
  2. 以需求选择类和对象
  3. 定义类的结构和层次
  4. 建造对象—关系模型
  5. 建造对象—行为模型
  6. 用用况/场景来复审分析模型

面向对象设计步骤

  1. 系统设计
  2. 对象设计
  3. 消息设计
  4. 复审

系统设计

  1. 将分析模型划分成子系统
  2. 标识问题本身的并发性,并为子系统分配处理器
  3. 任务管理设计
  4. 数据管理设计
  5. 资源管理设计
  6. 人机界面设计
  7. 子系统间的通信

UML概述

UML发展

  • 1994年开始研究统一的方法
  • 1996年UML0.9
  • 1995年Jacobson加盟
  • 1997年UML1.0
  • 2004年UML2.0

模型元素

视图与图

  • 内部结构图:内部结构图展示了类的分解,给出了组成一个结构化类元的相互连接的部分、端口和连接器。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YB3EiVKU-1592880955681)(https://store.codemouse.online/pic/a191628e50b2299ef7197f218276d311.png)]
  • 协作图:协作图展示了协作的定义,是一种合成的结构图。协作是为了完成某一目的而一起工作的一组对象间的上下文关系。

用况建模

  • 概念:用况建模是用于描述一个系统应该做什么的建模技术。用用况图来描述。
  • 作用:用况图展示了各类外部执行者与系统所提供的用况之间的连接。
  • 联系:一个用况是系统所提供的一个功能的描述,执行者与用况的连接表示该执行者使用了那个用况。

用况建模步骤

  1. 定义系统:获取用户的需求,明确系统的组织型态。
  2. 确定执行者:确定系统有哪些种类的用户。
  3. 确定用况:系统有哪些功能。
  4. 描述用况:描述系统里功能是怎么样的,怎么去运作的。
  5. 定义用况间的关系:功能与功能之间的联系。
  6. 确认模型:对整个模型的确认。

用况图

确定执行者

  • 执行者:指与系统交互的人或其它系统,代表一种角色,而不是具体的某个人 。
  • 主执行者:使用系统的主要功能 。
  • 副执行者:处理系统的辅助功能 。
  • 主动执行者:开始一个用况 。
  • 被动执行者:从不开始用况,只是参与一个或多个用况 。

确定用况

  1. 用况的特征

    • 用况总是被执行者启动的,执行者必须直接或间接地指示系统去执行用况
    • 用况向执行者提供的值必须可识别
    • 用况是完整的,一个用况必须是一个完整的描述
    • 用况是一个类,而不是实例,用况的实例称为场景
  2. 用况的描述:通常用正文来描述或活动图来描述。

    • 用况的目的
    • 用况是如何启动的
    • 执行者和用况之间的消息流
    • 用况中可供选择的流
    • 如何通过给执行者一个值来结束用况
  3. 用况的详细描述

    • 前置条件和后置条件:表示用况开始和结束的条件
    • 事件流(flow of events):事件流是一系列陈述句,它是从执行者的角度,列出用况各个步骤用况描述中可以包含条件、分支和循环。

描述用况

用况名称:订购货物
参与的执行者:客户、客户代表
前置条件:一个合法的客户已经登录到这个系统
事件流

  1. 当客户选择订购货物时,用况开始
  2. 客户输入他的姓名和地址
  3. 当客户输入产品代码
    a. 系统给出产品描述和价格
    b. 系统往客户订单中添加该物品的价格
    循环结束
  4. 客户输入信用卡支付信息
  5. 客户选择提交
  6. 系统检验输入的信息,保存订单,向记账系统转发支付信息
  7. 支付确认后,订单已确认,返回给客户一个订单ID,用况结束
    后置条件:如果订单没有被取消,它将保存在系统中,并做上标记
    其他需求

如果在订购货物用况中,客户可以在提交订单前随时取消订单,其可选路径如下:

  • 在选择提交前的任何时候,客户都可以选择cancel。这次订购没有被保存,用况结束。
  • 在基本路径第6步,如果有任何不正确的信息,系统提示客户去修改这些信息。
  • 在基本路径第7步,如果支付没有被确认,系统将提示客户改正支付信息或者取消。

事件流

  • 基本路径:是运转正常时的路径,是没有分支和选择的简单陈述句。
  • 可选路径:不同于基本路径而允许不同的事件序列的路径。

用况关系

描述用况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9vMd2u3c-1592880955691)(https://store.codemouse.online/pic/a6d6962ce4edbb15767972781beefec6.png)]

用况实例

  一个简化的银行储蓄账户管理系统,该系统可在银行的柜台上对客户办理活期储蓄业务。
系统的需求陈述如下:客户可以通过银行职员进行开户、存款、取款、转账、注销账户等活动。其中转账分为银行内转账和银行间转账。系统管理员负责系统的账户管理及业务报表的生成。
  1. 识别执行者
    客户
    银行职员(客户代理):银行工作人员,代表客户进行储蓄业务的操作
    银行职员(管理人员):银行工作人员,根据客户的储蓄业务更新账户
    管理员:银行计算机的管理人员,负责账户的管理和业务报表的生成

  2. 确定用况

  3. 描述用况

  • 开户用况
    用况名称:开户
    参与的执行者:银行职员(客户代理),客户
    前置条件:一个合法的银行职员(客户代理)已登录到该系统
    事件流
    1.当选择开户功能时用况开始
    2.输入客户信息(姓名、地址、身份证号等)
    3.从账户管理系统获取新的账号
    4.请客户输入密码
    5.请客户再次输入密码
    6.如果两次密码不一致则回到第4步,否则继续
    7.在账户库中添加新账户
    8.打印存折,用况结束
    后置条件:在账户库中增加了一个新账户,得到一张新存折

  • 取款用况
    用况名称:取款
    参与的执行者:银行职员(客户代理),客户
    前置条件:一个合法的银行职员(客户代理)已登录到该系统
    事件流
    1.当选择取款功能时用况开始。
    2.当输入客户信息(姓名、账号等)后
    a)如果客户信息与账户不一致,显示错误信息,可以重新输入或结束用况。
    b)如果该账户被冻结(如因挂失而冻结),显示冻结信息并结束用况。
    3.输入并校验密码。
    4.输入取款金额,如果该账户的余款小于取款金额,显示错误信息,要求重新输入。
    5.打印取款单,交客户签字。
    6.建立取款事件记录,更新账户信息。
    7.打印存折,用况结束 。
    可选路径:
    1.在第5步客户签字之前的任何时刻,客户可以取消本次取款,用况结束。
    2.第3步校验密码时,如发现密码不一致,则重新输入密码,或用况结束。
    后置条件:如果取款成功,客户账户中的余额被更新(减少),否则余额不变。

静态建模

建模构图组件

关联

  • 二元关联:二元关联表示为在两个类之间用一条直线连接,直线上可写上关联名。

  • 多元关联:三个或三个以上的类之间可以互相关联 。

  • 受限关联:用于一对多或多对多的关联。限定符用来区分关联“多”端的对象集合,它指明了在关联“多”端的某个特殊对象。

  • 聚集和组合
    聚集表示整体一部分关系的一种关联,它的“部分”对象可以是任意“整体”对象的一部分。

    组合关联具有强的物主身份,即“整体”对象拥有“部分”对象,“部分”对象生存在“整体”对象中。

  • 关联类:UML中可以把关联定义成类,该关联的每个链都是这个类的实例

  • 导航性(navigability)

  • 符号说明

泛化

实现

实现关系将一个模型元素(如类)连接到另一个模型元素(如接口),后者(如接口)是行为的规约,而不是结构,前者(如类)必须至少支持(通过继承或直接声明)后者的所有操作。可以认为前者是后者的实现。

依赖

依赖指出两个或多个模型元素之间语义上的关系。它表示被依赖元素的变化会要求或指示依赖元素的改变。

约束

派生

动态建模

状态机图组件

状态迁移

引起状态迁移的原因通常有两种:

  1. 当标在迁移箭头上的事件出现时会引起状态迁移
  2. 当状态机图中相应的迁移上未指明事件时,表示当位于迁移箭头源头的状态中的内部动作全部执行完后,该状态迁移被自动触发。

状态机图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p4mwnA8L-1592880955716)(https://store.codemouse.online/pic/77247aefabcfca2228c50b23620ae965.jpg)]

正交状态

正交状态:多个状态并发进行的状态。

复杂迁移

复杂迁移:多个状态都满足的情况下才触发。

活动图

  • 活动图用来描述完成一个操作所需要的活动,或者是一个用况实例的活动。
  • 与状态机图不同的是,活动图中动作状态之间的迁移不是靠事件触发的,当动作状态中的活动完成时迁移就被触发。
  • 活动图可以描述用况

用活动图画出 取款的操作:

物理体系结构建模

  • 系统的体系结构用来描述系统各部分的结构、接口以及它们用于通信的机制。
  • 物理体系结构涉及系统的详细描述,它显示了硬件的结构,并展示了对进程、程序、构件等软件在运行时的物理分配。

构件图

部署图

软件工程之面向对象分析与设计相关推荐

  1. 软考——软件工程——面向对象分析与设计方法

    目录 1,面向对象的基本概念 2,面向对象分析与设计 2.1,面向对象分析OOA 2.2,面向对象设计OOD 2.3,面向对象编程OOP 面向对象(Object-Oriented)OO. 面向对象的基 ...

  2. 《面向对象分析与设计》一1.4面向对象方法的主要优点

    1.4面向对象方法的主要优点 本节从认识论的角度和软件工程方法的角度看一下面向对象方法带来的益处,并把面向对象方法与传统方法进行比较,看面向对象方法有什么优点. 从认识论的角度面向对象方法改变了开发软 ...

  3. UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)

    文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...

  4. 面向对象分析与设计--OOAD

    面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流.面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围.如数据库系统.交互式界面.应 ...

  5. 面向对象分析与设计知识点总结

    文章目录 第一部分 概述 第1章 面向对象方法概论 1.1 面向对象方法定义 1.2 面向对象方法基本特点 1.3 面向对象的基本概念与原则 1.4 面向对象方法与传统方法比较 1.5 思考题 第二部 ...

  6. 面向对象分析和设计的几个关键步骤_(豁然开朗)《面向对象分析与设计》读书笔记 (4)- 分类...

    目录 分类 正确分类的重要性 分类的困难 分类的增量和迭代本质 确定类和对象 经典方法 && 现代方法 (种) 面向对象分析 (主要识别对象) 关键抽象和机制 确定关键抽象 识别机制 ...

  7. UML和模式应用学习笔记-1(面向对象分析和设计)

    大学时曾经开过<UML和模式应用>的课程,当时没有引起足够的重视,只为了应付考试并没有真正掌握书中的内容:现在工作中经常要用到UML及设计模式,决定每周花点时间重新对书中的内容进行学习:本 ...

  8. 面向对象分析与设计小结

    最近接触了下面向对象分析与设计的概念,虽说书上也许是讲的比较浅显,这里暂且做做学习笔记 当面对一个项目的时候,首先依然是需求分析,得到需求分析报告,接下来在面向对象分析过程中建立用例图,这一步是项目负 ...

  9. OOAD 面向对象分析与设计

    OOAD 面向对象分析与设计2007年06月16日 星期六 下午 04:38OOAD(Object Orient Analysis & Design,面向对象的分析和设计,面向对象分析与设计) ...

最新文章

  1. matlab中统计工具箱函数名大全
  2. 不要在意七十亿分之一对另七十亿分之一的看法
  3. Andoid TextView显示富文本html内容及问题处理
  4. linux下darknet指定opencv4编译安装
  5. nginx使用用户真实IP做hash(解决经过CND后ip_hash失效问题)
  6. python模块 - 序列化模块pickle
  7. 128.深入 cookie ,session
  8. sqlite数据库文件的下载编译和VS中数据库创建demo
  9. 3. Vue入门实战教程之vue-element-admin初体验
  10. 解决小程序图片上传问题
  11. 谷歌翻译退出中国市场?我们还有这个!
  12. 中国最美滴100首古诗
  13. 同一个局域网我可以访问同事的电脑同事的访问不了我的本地项目
  14. 小草酒店客房管理系统 免费
  15. HTML+CSS+JS零食官网网站设计——美食零食官网(6页) html网页制作期末美食作业成品_小吃类网页设计期末作业
  16. proteus常用元件图示和名称介绍
  17. 网站前台静态页面html模板
  18. android canvas 工作流_Activiti工作流引擎使用
  19. Red Hat Enterprise Linux 官方正式版镜像下载
  20. 全新2022测算系统完整版+支持对接结

热门文章

  1. 微软气坏了!Windows 惨遭抄袭,这款系统简直超越正品
  2. MDT2008部署杂谈2——简介
  3. 《异地恋神器》《奇巧淫计》Python实现邮箱每天自动定时罗莉音播报天气预报
  4. 跑faster-rcnn pytorch版本踩的坑
  5. 用计算机恶搞对话,如何恶搞朋友的电脑?超简单的vbs代码
  6. 跑出数字化升级“加速度”,腾讯云启产业基地“长沙模式”的探索
  7. View 中 setVisibility(View.GONE); 失效
  8. 模糊算法增强图片对比度
  9. Python学习第一次笔记
  10. 针对 store_name 字段