面向对象开发方法

目录

1. 面向对象

2. 面向对象分析

2.1 UML统一建模语言

2.2 用例模型

3. 面向对象设计

3. 面向对象测试

参考


1. 面向对象

面向对象方法是一种主流的软件开发方法,包括面向对象分析、面向对象设计、面向对象程序设计

基本概念:

  • 对象:一组属性和属性上的专用操作的封装体。属性可以是一些数据,也可以是另一个对象。

  • 类:一组具有相同属性和相同操作的对象的集合。

  • 继承

  • 封装

  • 多态

  • 消息:对象间通信手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息包括**接收对象名、调用的操作名、适当的参数

2. 面向对象分析

运用面向对象方法,对问题域和系统责任进行分析和理解,正确认识其中事物和它们之间的关系,找出描述问题域和系统责任所需的类和对象,定义它们的属性和服务,以及它们之间所形成的结构、静态联系和动态联系。

2.1 UML统一建模语言

  • UML结构

三种构造块:

(1)事物(Things)

(2)关系(relationship)

(3)图(diagram)

  • UML事物

也成为建模元素,包括结构事物、行为事物、分组事物、注释事物

  • 结构事物:最静态的部分,共7种:类、接口、协作、用例、活动图、构件、节点。

  • 行为事物:UML模型中动态部分,共2种:交互、状态机

  • 分组事物:UML模型中组织的部分,只有1中:包

  • 注释事物:UML模型中解释部分。

  • UML关系

    • 事物(类)之间关系:泛化、实现、依赖、关联、聚合、组合(详见:《UML统一建模语言》)

    • 用例间关系:泛化、包含、扩展

  • UML图:14中图:包图、类图、对象图、构件图、组合结构图、用例图、顺序图、通信图、定时图、状态图、活动图、部署图、制品图、交互图。

2.2 用例模型

用例分析技术,构建用例模型的三个阶段:

  • 识别参与者:actor

  • 合并需求获得用例:为每一个参与者确定用例,绘制用例图。注意区分业务用例和系统用例。

  • 细化用例描述:书写用例规约(use case specification),内容至少包括:用例名、参与者、目标、前置条件、事件流(基本事件流、扩展事件流)、后置条件等。

3. 面向对象设计

把面向对象分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。

分为概要设计和详细设计两个阶段,也可以分为系统设计和对象设计。

系统设计确定实现系统的策略和目标系统的高层结构。

对象设计确定解空间中的类、关联、接口形式和实现操作的算法。

(1)面向对象设计的基本准则有:模块化、抽象、信息隐藏、高内聚和低耦合。

(2)面向对象设计(设计模型)的7个具体原则 有:

  • 单一职责原则:模块内聚在类和类的职责中的体现,类尽量承担单一的职责,减少职责耦合。

  • 开放-封闭原则:对扩展开放、对修改关闭。

  • 李氏替换原则:子类型必须能够替换掉他们的基类型。子类具有扩展父类的责任,而不是重写的责任。

  • 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖抽象。要针对接口编程,而非实现编程。

  • 接口隔离原则:为客户端提供尽量小的单独接口,而不是提供大的接口,使用多个专门的接口比使用单一总接口要好。

  • 组合重用原则:尽量使用组合,而不是继承关系达到重用 目的。组合相对继承,具有更大灵活性。

  • 迪米特(Demeter)原则:又称最小知识法则,一个对象应当对其他对象尽可能少的了解。

3. 面向对象测试

4个测试层次:

  • 算法层:测试类中定义的每个方法,相当于传统软件测试中的单元测试。

  • 类层:用于测试封装在同一个类中的所有方法和属性之间的相互作用。

  • 模板层:也称主题层,用于测试一组协同工作的类和对象之间的相互作用。大体相当于传统软件测试中的子系统测试。

  • 系统层:把各个子系统组装成完整的面向对象软性系统,在组装过程中同时进行测试。

参考

  • 《系统架构设计师》

关于作者:

犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

专业方向爱好:数学、科学技术应用

关注犇叔,期望为您带来更多科研领域的知识和产业应用。

内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

你可能感兴趣的:(系统架构,uml,软件工程)