一:UML类图

一、类的设计

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
学习设计模式的第一步是看懂UML类图,类图能直观的表达类、对象之间的关系,这将有助于后续对代码的编写。
类图在软件设计及应用框架前期设计中是不可缺少的一部分,它的主要成分包括:类名类方法(成员函数)、成员变量
部分符号含义如下:
+ :公有成员(Public)
- :私有成员(Private)
# :保护成员(Protected)
下划线 :静态成员(如+staticVar: int)
类符号示意图
常见的类之间的关系包括:继承(泛化)、实现、关联、聚合、组合、依赖。根据耦合度由强到弱又分为接口实现关系、继承泛化关系、不可分离组合的关系、可分离组合的关系、关联关系和依赖关系。

二、关系定义及示例

1.继承(泛化)

语义:子类继承父类的属性和方法(is-a关系)
画法:空心三角形箭头(子类指向父类)
派生类继承基类,基类被看作是“一般设计”,派生类被看作“特殊设计”,继承泛化关系关系也被称为一般与特殊的关系。

1.1、示例

class Animal {
   };
class Dog : public Animal {
   };  // C++

继承画法示例
多重继承如下:

class Bird : public Animal {
   
public:
    void fly() const {
   
        std::cout << "Flying..." << std::endl;
    }
};

class Parrot : public Bird {
   
public:
    void speak() const override {
   
        std::cout << "Hello!" << std::endl;
    }
};

多重继承

2.实现

语义:类实现接口的方法
画法:空心三角形+虚线箭头,箭头指向基类
接口实现关系是派生类必须重写接口中所有的方法。

2.1、示例

class Flyable {
    virtual void fly() = 0; };
class Bird : public Flyable {
   };  // C++

实现关系示例

#include <iostream>
#include <vector>

// 接口
class Drawable {
   
public:
    virtual void draw() const = 0;
    virtual ~Drawable() = default;
};

// 实现类
class Circle : public Drawable {
   
public:
    void draw() const override {
   
        std::cout << "⚪ Drawing Circle" << std::endl;
    }
};

class Rectangle : public Drawable {
   
public:
    void draw() const override {
   
        std::cout << "⬛ Drawing Rectangle" << std::endl;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值