UML面向对象分析与设计——OOP基础

本文最后更新于:2022年5月13日 下午

摘要:介绍了面向对象设计思想中对象、类、属性、操作的概念,面向对象技术的相关原则。

前言

根据北航《UML面向对象分析与设计》整理的学习笔记

对象和类

对象

  1. 定义

对象是一个实体,这个实体:

  • 具有明确定义的边界标识
    • 边界意味着对象是一个封装体,通过封装来与其他对象分割
    • 标识则表明每一个对象都是唯一的
  • 对象封装了状态和行为
    • 对象的状态通过对象的属性(attribute)和关系(relationship)来表达
    • 对象的行为通过对象的操作(operation)、方法(method)和状态机(state machine)来表达
  1. 在UML中表示对象

在UML中,对象用矩形框来表示,对象的名字写在矩形框内部,并加上下划线来表示

类的表示

  1. 类的含义
  • 类是一系列对象的抽象描述,这些对象共享相同的属性、操作、关系和语义
    • 一个具体的对象是该类的一个实例
  • 类是一种抽象
    • 将相似的实体抽象成相同的概念
    • 抽象过程强调相关特征而忽略其他的特征
  1. UML中类的表示

在UML中,采用矩形框来表示类,可以将矩形框划分为三个区域,分别表示类名、属性和操作

类的表示

属性

属性(attribute)是勒的特征或特性

  • 属性的值是某一特定对象的属性值
  • 在类中属性名必须是唯一的
  • 每一个类的实例都有为这个类定义的所有属性的值

操作

  • 操作(operation)访问或修改对象的属性值
  • 对象的行为是由为此对象定义的一系列操作决定的
  • 一个类可能同时存在多个实例,也可能在某一时刻没有实例
  • 一个类的所有实例都可以使用这个类中定义的操作
类与对象

面向对象技术相关原则

面向对象技术基本原则

  • 抽象(Abstraction)
  • 封装(Encapsulation)
  • 分解(Decomposition)
  • 泛化(Generalization)
  • 多态(Polymorphism)
  • 分层(Hierarchy)
  • 复用(Reuse)

抽象——Abstraction

  • 抽象是揭示事物区别于其他事物的本质特征的过程
    • 是一个分析和理解问题的过程
    • 抽象的结果取决于使用者的目的,应该包括使用者所感兴趣的那些职责,而忽略掉其他不相关的部分
  • 对象到类的过程就是抽象
    • 即将所见到的具体实体抽象成概念,从而在计算机世界中进行描述和各种操作

封装——Encapsulation

  • 封装是对客户(使用者)隐藏具体实现细节
    • 客户只依赖接口
    • 通过封装实现信息隐藏和数据抽象
  • 为什么要封装
    • 保证数据的一致性

分解——Decomposition

泛化——Generalization

  • 是类之间的一种“是”(is a/is kind of)关系,通过该关系一个类(子类)可以共享另一个或多个类(父类)的结构和行为
    • 采用继承(Inheritance)实现泛化关系
  • 通过泛化关系,可以建立类之间的层次结构,根据继承层次中父类的个数不同,分为:
    • 单一继承
    • 多重继承
单一继承

一个类继承另外一个类

单一继承
多重继承

一个类继承另外多个类

多重继承
继承
  • 子类继承父类所有的内容:属性、操作、关系和语义
    • 其访问权限仍受可见性的约束
  • 子类还可以:
    • 添加新的属性、操作、关系和语义
    • 重新定义继承的操作
  • 设计继承层次
    • 父类定义公共的属性、操作、关系和语义
    • 针对不同的情况定义不同的子类,以扩展父类的属性、操作、行文和语义

多态——Polymorphism

  • 多态是在统一外表(接口)下隐藏不同实现的能力
    • 即一个接口可以有不同的实现行为
    • 是面向对象技术的本质特征

分层——Hierarchy

复用——Reuse

  • 复用是借助于已有软件的各种有关知识建立新的软件的过程
应用复用原则
  • 系统开发各个阶段都可能涉及到复用
    • 从最底层的代码复用,到设计复用架构复用,再到需求复用,甚至于延伸到特定业务领域的复用
    • 复用原则要求设计者不仅针对当前的业务需求开展设计,还需要考虑业务的通用性和可扩展性等问题,从而设计抽象层次高、复用粒度大的组件

UML面向对象分析与设计——OOP基础
https://shgang97.github.io/posts/oop-47bf8b299fa2/
作者
shgang
发布于
2022年5月13日
更新于
2022年5月13日
许可协议