• 【设计】OOA、OOD、OOP


    这三者都是 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

  • 相关阅读:
    数据可视化学习:Matplotlib概述
    java经典笔试题大全(50道含答案)
    Leetcode 984. 不含 AAA 或 BBB 的字符串(网友思路)
    PHP调用API接口的方法及实现(内附电商平台商品详情接口案例)
    centos8 安装nginx
    Git命令日常总结
    Sequential Recommendation with Graph Neural Networks
    面对密集型的I/O任务处理,python该如何提高执行效率
    C-V2X(CANoe)CAPL接收CAN消息
    08 nginx 的一次请求处理调试
  • 原文地址:https://blog.csdn.net/qq_43103529/article/details/128086746