【设计】OOA、OOD、OOP

news/2024/4/20 18:09:08/文章来源:https://blog.csdn.net/qq_43103529/article/details/128086746

这三者都是 OO(Object-Oriented)领域的思想。
一般我们我们接到产品经理的需求后,开发阶段分这样几个步骤:

  1. 可行性预研阶段,此阶段评估需求是否合理,能否实现;
  2. OOA阶段,此阶段分析用例,定义领域模型;
  3. OOD阶段,此阶段定义类图,类之间的交互图(时序图等);
  4. OOP阶段,根据OOD设计的类图,类之间的交互图输出代码。

那么除了可行性预研阶段,其他三个阶段都是需求开发的重要步骤。
1669638514559-af822c23-b9db-4d80-8696-f32b865f1494.png

OOA

OOA,Object-Oriented Analysis,面向对象分析。此过程是把现实的需求转义为领域模型(Domain Model)问题,以及输出领域模型(Domain Model)。
OOA 的主要流程也有既定的一些步骤:

  1. 根据需求输出用例,用例为所有的使用场景,主要为用户与应用的交互
  2. 根据用例输出领域模型(Domian Model),领域模型(Domain Model)也就是常说的业务逻辑。这时候会输出概念类,概念类的交互关系,这些概念类一般是系统的直接映射。

在 OOA 中,考验的是程序员的分析能力。拥有 OOA 能力的人,能抽象出更全面,更能准确复用的系统设计。

OOD

OOD 全拼为 Object-Oriented Design,面向对象设计。
此过程是把我们的领域模型转为逻辑架构,类图,类之间的关系。 如何分层,如何分包,如何保证高内聚低耦合都是这部分要考虑的问题。这个阶段输出类图,时序图,模块图等。

OOP

OOP 全程为 Object-Oriented Programming,面向对象编程。是将 OOD 的设计结果转为面向对象编码的过程。
在这一个步骤中,我们要非常注重 OOP 的思想。
OOP 思想指的是面向对象编程,面向对象强调对象的抽象,还有“封装”、“继承”、“多态”,相比面向过程该思想专注于通过对象的一些方法去解决问题,不同的功能可能由不同的对象来负责解决。
面向对象思想中,主要需要注意下面这些原则:

  • **开闭原则(Open Close Principle)**开闭原则的意思是:对扩展开放,对修改关闭。
  • **里氏代换原则(Liskov Substitution Principle)**任何基类可以出现的地方,子类一定可以出现。
  • **依赖倒转原则(Dependence Inversion Principle)**针对接口编程,依赖于抽象而不依赖于具体。
  • **接口隔离原则(Interface Segregation Principle)**使用多个隔离的接口,比使用单个接口要好。
  • **迪米特法则,又称最少知道原则(Demeter Principle)**一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
  • **合成复用原则(Composite Reuse Principle)**尽量使用合成/聚合的方式,而不是使用继承。

总结

OOA,OOD,OOP 是针对现实的需求最终输出产品过程。在现实中 OOA,OOD 并没有显著的区分。OOA,OOD,OOP 有时是不断的交替进行。
对于现在的软件开发中,大部分迅速敏捷至极的项目,基本上是不会输出相关的开发设计图资源的,而是直接进入到 OOP 的阶段。直接进入 OOP 阶段,缺乏足够的 OOA 以及 OOD 过程,那么就会对 OOP 阶段的代码质量造成影响。
这里也并不是说有了 OOA 和 OOD,系统的质量就一定好;而是有了 OOA 和 OOD,可以输出更符合标注和规范的 OOP 代码,完成更出色的系统设计。

参考文档:

https://juejin.cn/post/6890063876163911693

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语文课内外杂志语文课内外杂志社语文课内外杂志社2022年第14期目录

幼儿教育《语文课内外》投稿:cn7kantougao163.com 家园协同视域下幼儿心理危机的预防与干预对策 曹锭1-3 幼小衔接阶段幼儿时间观念的培养对策 陈晶晶4-6 有效支持 助力幼儿在书海中徜徉 胡玲珊7-9 东西部幼儿园结对帮扶,助力乡村教育扶贫——以广州市人民政府机关幼…

多线程(2)

文章目录前言 :1.Thread类 :1.1 Thread类常见的构造方法1.2 Thread的几个常见属性1.3 中断一个线程1.4 等待一个线程-join()1.5 获取当前线程引用1.6 休眠当前线程2.线程状态前言 : 简单回顾上文知识点 上文我们了解了 线程是为解决并发编程引…

Java数据审计工具:Envers and JaVers比较

在Java世界中,有两种数据审计工具:Envers和JaVers。 Envers已经存在了很长时间,它被认为是主流。 JaVers提供全新的方法和技术独立性。 如果您考虑哪种工具更适合您的项目,本文是一个很好的起点。 本文分为三个部分。首先&#x…

[附源码]计算机毕业设计springboot餐馆点餐管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【新知实验室-TRTC开发】实时音视频之欢度世界杯

目录 一、什么是TRTC 二、用5分钟跑通一个demo 1、开通腾讯云-TRTC 2、获取demo必须的两把钥匙 2.1输入应用名称 2.2下载对应的源码包(手机、web、小程序等) 2.3拿到钥匙 2.4完成 三、搭建一起看世界杯应用 1、解压源码(耗时30S&#x…

[附源码]计算机毕业设计springboot房屋租赁系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MySQL为自动编号的字段赋值

insert users values(NULL,ming,fasdfasdfasd,22,1); 或者 insert users values(DEFAULT,ming,fasdfasdfasd,22,1);

网络的根基

hi 大家好,上个周末带小伙伴,一起复习了一遍网络协议,对网络协议的核心知识进行梳理,希望大家早日掌握这些核心知识,打造自己坚实的基础,为自己目标慢慢积累,等到自己春天的到来。详细点击查看…

zabbix拓扑图和聚合图形

目录 一、环境准备 1、搭建zabbix基础环境 2、创建被监控主机 二、拓扑图 1、拓扑图作用 2、拓扑图绘制步骤 三、聚合图形 1、聚合图形的作用 2、创建聚合图形 一、环境准备 1、搭建zabbix基础环境 zabbix基础环境部署参照:zabbix基础环境部署_桂安俊kyli…

Day14--商品详情-渲染商品详情的数据并优化详情页的显示

提纲挈领: 那么如何在小程序中将这些html的字符串渲染成这莫好看的结构呢? 官方文档:【使用uni-ui组件库中的rich-text组件】 1.渲染商品详情信息 我的操作: 1》在页面结构中,使用 rich-text 组件,将带有…

计算机网络第五章知识点回顾(自顶向下)

1. 网络层控制面 1.1 网络层功能 1.2选路问题 选路问题的描述: 给定一组路由器和连接路由器的链路,寻找一条从源路由器到目的路由器的最佳路径。 1.3 什么是最佳路径? 1.4 图抽象 1.5 选路算法分类 1.6 链路状态(LS&#xff0…

[附源码]计算机毕业设计springboot飞越青少儿兴趣培训机构管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

手把手教你构建一个前端路由

涉及知识点:location对象、history对象 文章目录基础概念什么是路由如何实现前端路由涉及问题前端路由实现方式1. hash方式2. history方式3. debug:本地起服务报错扩展:封装路由类Routerhashhistory基础概念 什么是路由 路由是一组映射关系…

51单片机学习笔记4 新建工程及点亮LED实战

51单片机学习笔记4 新建工程及点亮LED实战一、使用keil新建工程二、项目设置1. 点击魔术棒,钩选Output-Create Hex File2. 设置仿真器三、编写代码1. 尝试编译代码2. 点亮LED的代码3. GPIO引脚介绍4. GPIO内部结构P0端口:P1 端口四、软件仿真一、使用kei…

[附源码]SSM计算机毕业设计校园爱心支愿管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

台积电跪舔美国,日本却醒悟了而选择独立发展芯片产业

近期台积电大举包机10架将精英人才和设备转往美国引发争议,然而这个时候日本却选择了独立发展芯片产业的道路,摆脱美国的限制,显然日本清醒地认识到依赖美国不会有好结果。台积电之前还在左右摇摆,希望既能继续获得美国芯片的订单…

字符串压缩(一)之ZSTD

一、zstd压缩与解压 ZSTD_compress属于ZSTD的Simple API范畴,只有压缩级别可以设置。 ZSTD_compress函数原型如下: size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcSize, int compressionLevel) ZSTD_decompress函数原…

全网首发克莱斯勒东南大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装

文章目录前言碟盒功能1、设计指标3、外观设计4、PCB设计5、程序设计6、调试7、大捷龙车机尾插接口定义公头东南大捷龙车机白色插头模块与白色插头连接方法8、安装方法9、 使用方法9.1 CD车机按钮功能定义11、 联系我前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝…

水电站下泄生态流量监控解决方案-智能监测生态流量遥测终端-水电站流量监测站

平升电子水电站下泄生态流量监控解决方案-智能监测生态流量遥测终端-水电站流量监测站是一款集人机交互、视频叠加、4G路由、数据采集、逻辑运算与远程传输功能于一体的多媒体智能终端设备。 此款产品为水电站生态流量监测项目的专用产品,便于监管单位及时掌握水电…

农村城镇面板数据集:地级市人均消费与支出2012-2019各省农村数据2013-2019

1、2002-2019年地级市人均消费与支出数据 1、数据来源:wind 2、时间跨度:2012-2019 3、区域范围:287个地级市 4、指标说明: 包含以下四个指标:人均可支配收入(农村)、人均可支配收入&#…