目录
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内核等方向。
专业方向爱好:数学、科学技术应用
关注犇叔,期望为您带来更多科研领域的知识和产业应用。
内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路