OOAD与UML

1.OOAD(Object Oriented Analysis and Design)面向对象分析和设计

--OOA 分析阶段,主要解决以下问题:

  --建立对业务问题域的清晰视图

  --列出必须要完成的核心业务

  --针对问题域建立公共词汇表

  --列出针对此问题域的最佳解决方案

  --要解决的核心问题:What to do

--OOD 设计阶段,主要解决以下问题:

  --如何解决具体的业务问题

  --引入系统工作所需的支持元素

  --定义系统的实现策略

  --要解决的核心问题:How to do

域模型:

  域模型是面向对象的,在OO中,域模型也称设计模型,主要有以下内容组成:

    --具有状态和行为的域对象

    --域对象之间的关系(关联Association、依赖Dependency、聚集Aggregation、一般化(泛化)Generalization)

关联关系:

  一对一:从Person到IDCard的一对一的单向关联,Person中持有IDCard的标志,如id

  多对一:从Order到Customer的多对一的单向关联,Order中持有Customer的标志,如id

  一对多:从Customer到Order的一对多的单向关联,Customer持有Order的标志集合,如id的List

  多对多:Customer和Order间的双一对多向关联,互相持有彼此的标志集合,如id的List

  

依赖关系:

  一个类A中访问另一个类B中的方法,并构造B类的实例,称A依赖B

  

聚集关系:

  聚集指整体和部分间的关系,在实体域对象间很常见

  

一般化关系:

  一般化关系指类之间的继承关系

   

内聚域耦合:

  内聚:度量一个类独立完成某项工作的能力

  耦合:度量系统内或系统之间依赖关系的复杂度

  设计原则:增加内聚,减少耦合

软件开发过程:

  传统开发过程

    --瀑布模型,不适应多变的需求

  统一软件开发过程(USDP)

 

 OOAD的开发过程

  --大的项目分解为一些子项目

  --使用UML工具

  --统一开发过程是一个迭代的、递增的开发过程,每一次迭代是生命周期中的一个步骤

  --每一个迭代的阶段,应做的工作:

    ---选择并分析相关用例

    ---根据所选的架构进行设计

    ---在组件层次实现设计

    ---验证组件满足用例的需要---每次设计前要预先设计好用例

  --每一次迭代完成目标后,开发将进入下一个迭代周

  迭代的好处:一定程度适应用户变化、每一次迭代周期只是完成既定的特定功能,迭代周期开始后不再加入新的内容,新的功能需求可以在下一个周期加入,每一个周期完成后可以给用户展示获取用户反馈,以方便把握用户需求。

软件迭代过程

  -初始化阶段

    --项目启动

    --建立业务模型

    --定义业务问题域

    --找出主要的风险因素

    --定义项目需求的外延

    --创建业务问题域的相关说明文档

  -细化阶段

    --高层分析与设计

    --建立项目的继承框架

    --监督主要的风险因素

    --质地昂达成项目目标的创建计划

  -构建阶段

    --完成代码及功能的实现

  -交付阶段

    --向用户发布产品

    --beta测试

    --性能调优、用户培训和接收测试,注意,一个项目开始时不应过于考虑性能,任务重点应该防止功能实现上,否则会耽误项目的进度。性能调优往往需要经过大量的测试进行的。

每一个迭代阶段所含工作流:

  -需求-分析-设计-实现-测试-,如此周而复始

  

 

  2 UML中9种基本图形

  UML(Unified Modeling Language),是一种图形化的语言,可以OOAD过程中标识元素、构建模块、分析过程、并可以通过文档说明系统中的重要细节

UML图分类

  -静态模型(static model)

    --创建并记录一个系统的静态特征

    --反映一个软件系统基础、固定的框架结构

    --创建相关问题域的主要元素的视图

    --静态建模包括:

      ---用例图(use case diagrams)

      ---类图(class diagrams)

      ---对象图(object diagrams)

      ---组件图(component diagrams)

      ---部署图(deployment diagrams)

  -动态模型(dynamic model)

    --动态建模用以展示系统的行为

    --动态建模包括:

      ---时序图(sequence diagrams)

      ---协作图(collaboration diagrams)

      ---状态图(state chart diagrams)

      ---活动图(activity diagrams)

 用例图

  -展示系统核心功能及与其交互的用户,用户被成为活动者(Actor),用例使用椭圆表示,为了简化建模过程,用例可以标注优先级

  

  上图表示的意思:不同用户可以进行不同的操作

类图

  -表示类的特征,描述了多个类、接口的特征、以及对象直接的协作与交互,由一个或多个矩形区域构成,内容包括类型(类名)、属性(可选)、操作(可选)

  

对象图:

  对象图用于展现对象的特征和对象间的交互关系

  

组件图:

  表示组件直接的关系

  

部署图:

  表现用于部署软件应用的物理设备信息

  

 

转载于:https://www.cnblogs.com/ShouWangYiXin/p/10575898.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381424.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

OOAD之设计原则

一、设计原则意义 为了设计出一个好的软件系统。我们必须遵照一定的规则。 衡量软件设计质量的首要标准是该设计是否能满足软件的功能需求。除了功能需求以外,还有很多衡量软件设计质量的标准,包括可读性、可复用性、可扩展性、可维护性等。 1、一般一个…

ooad设计模式_OOAD-面向对象的分析与设计

ooad设计模式 让我们分为以下几节来讨论OOAD: (Lets discuss OOAD by dividing into the below sections:) OOS 操作系统 OOA OOA OOD 面向对象 Thumbnails principles of the object oriented design 面向对象设计的缩略图原则 OO Design Quality Metrics OO设计质…

OOAD复习笔记

OOAD学习目标: 1.A critical,fundamental ability in OOAD is to skillfully assign responsibilities to software components.(面向对象分析设计种至关重要的的能力是熟练地为软件部件分配职能) 2)GRASP patterns &#xff0c…

几款免费的数据恢复软件测试

目录 一、前言 二、测试正文 1、Windows File Recovery (不推荐) 2、Recuva 3、Undelete360 (最轻量级) 4、Glary Undelete 三、总结 一、前言 刚进回收站,清空后的,都能找到,还原后能正常…

一款非常好用且专业的免费万兴数据恢复软件

Wondershare Recoverit Mac版是一款非常好用且专业的免费万兴数据恢复软件,可以恢复所有文件类型,包括照片、视频、文档和其他文件。从所有数据丢失场景中检索数据,并从所有存储设备中恢复数据,并崩溃Windows系统或可启动问题!可靠…

【C++基础(十)】C++泛型编程--模板初阶

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 模板 1. 前言2. 函数模板3. 函数模板原理4. 函数…

PETool free分享

百度盘下载pe解析工具、PETool.1.0.0.5.exe(免费) 链接: https://pan.baidu.com/s/1A44RaB3GotWfmWmQCv3qqw 提取码: 33fh MD5: 5691CCA8BD8C5BDEE5F839098CE82A2A SHA1: 1DAD3D205405EB8E99BD39DAE891463C15F995CD 下载后请校验文件防篡改。 文件安全性…

CPABE

属性加密的基础是秘密共享。 什么是秘密共享? 秘密共享指的是dealer有一个秘密,他想要在w个人中分享这个秘密,但是他希望任何单个人都无法计算出(获得)这个秘密,也就是说他想任意t个人在一起才能够把这个…

Peers

Peers 区块链网络主要由一组peers节点组成。 peers是网络的基本要素,因为他们主持分类账和智能合约。 回想一下,分类账不可变地记录智能合约产生的所有交易。 智能合约和分类帐分别用于封装网络中的共享进程和共享信息。 peers的这些方面使他们成为理解H…

Protobuf-importimport public

【转载】https://www.cnblogs.com/letsgollc/p/7423248.html 场景:假如有文件hundredbulls.proto,需要导入另一个文件common.proto,两者在同一个目录中. 导入方式 在hundredbulls.proto文件的开头,使用关键字import导入另一个文件…

pump-probe技术简介

pump-probe技术简介 pump-probe定义介绍应用 pump-probe定义介绍 泵浦-探测(pump-probe)是一种利用短激光脉冲测量超快现象的技术。**当泵浦光照射在样品上时,可以激发出各种各样的物理现象,例如电子激发。随后,经过一…

记录更换若依框架的用户和部门两种表的过程

背景: 公司使用若依框架快速构建项目,客户那边原有的数据要同步过来,且要求字段与原先的字段一致,可以让数据丝滑无畅导入。用户表和部门表是基础在代码出现的地方比较多,该如何考虑去过度去更换) 如何快速…

【单片机/嵌入式】最完整学习路线

一.什么是单片机?什么是嵌入式?它们之间的区别与联系。 关于这个问题我在网上寻找到了相关文章解释得很详细,不了解的同学可以参考一下这篇文章:到底什么是嵌入式?什么是单片机? - 知乎 二.学习路线 一个人…

大学学习历程简单总结

一、主要学习经历: 2017年9月进入大学: 最开始自己对大学的认识是一种特别仰慕的感觉,并且当时自己认为在大学里面是做各种各样的研究和学习的,并且认为只有对科研特别喜欢而且拥有天赋的大学生才能去升学为研究生; 进…

“机器学习”名字的由来

阿瑟萨缪尔(Arthur Samuel, 1901-1990) 阿瑟萨缪尔是人工智能研究的先驱。 从1949年到1960年代后期,他在让计算机从经验中学习方面做了最出色的工作,而他的研究工具是跳棋游戏。(玩游戏的程序通常在人工智能研究中扮演果蝇在遗传学中所扮演的…

【Unity每日一记】让一个物体按余弦曲线移动—(三角函数的简单运用)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

Bootstrap 样式之 文本颜色

Bootstrap 自定义的文本颜色 源码查看&#xff08;测试版本3.x&#xff09; ------------------------------------------------------------ 先来看看bootstrap自定义的文本颜色是什么样的&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh-C…

A. Red Versus Blue

https://codeforces.com/contest/1659/problem/A input 3 7 4 3 6 5 1 19 13 6output RBRBRBR RRRBRR RRBRRBRRBRRBRRBRRBRinput 6 3 2 1 10 6 4 11 6 5 10 9 1 10 8 2 11 9 2output RBR RRBRBRBRBR RBRBRBRBRBR RRRRRBRRRR RRRBRRRBRR RRRBRRRBRRR题意 T组询问&#xff…

new、new[]和new()

文章目录 new是怎么调用的&#xff1f;那么delete呢&#xff1f;new[]和delete[]为什么要成对使用&#xff1f;注意到了operator new和operator delete~new()怎么用&#xff1f;delete()有点复杂 new是怎么调用的&#xff1f; 这里是一条new的使用语句&#xff1a; A *pc ne…

Bootstrap颜色对应对照表

Bootstrap自带颜色&#xff1a;class "bg-xxx" bg-red红色bg-yellow黄色bg-aqua湖绿色bg-blue蓝色bg-light-blue浅蓝色bg-green绿色bg-navy藏青色bg-teal青色bg-olive橄榄色bg-lime荧光绿 bg-orange橙色bg-fuchsia紫红色bg-purple紫色bg-maroon红褐色bg-black黑色b…