美文网首页
UML中类与类间的关系及实现

UML中类与类间的关系及实现

作者: 拂去尘世尘 | 来源:发表于2021-11-25 11:06 被阅读0次

UML中类与类间的关系及实现

在面向对象的程序设计中,类之间主要有六种关系:继承, 组合, 聚合,关联, 依赖,实现。C属于面向过程语言,本身的语法不支持这些关系的实现,但可通过结构体和指针来实现这些关系。C++/Java/Python等语言原生支持面向对象的程序设计,可通过其语法来完成这些关系。此次结合UML与C++来掌握这些关系的实现与运用。

继承(Generalization)

继承是面向对象三大特征之一,其主要作用是实现代码的重用。继承可用"is a"表示,例鸟(类B)是动物(类A)。从继承父类的数量又可细分为单继承和多继承。(个人认为代码设计中,多继承的使用会使代码变得难以定位,因此尽可能减少多继承的使用)

类图

继承

例程

// 单继承
class bird : public Animal
{ 
    // 子类实现
};

// 多继承
class WangAnshi : public Poeat, public Politician
{
    
};

组合(Composition)

组合是将一个对象放到另一个对象里。是一种"has a"的关系,例如飞机(类b)有机翼(类a)。被组合的对象是一种强所属的关系,即两个对象具有相同的生命周期,一般情况下被组合的对象都不能脱离组合独自存在。例如飞机类和机翼类属于组合关系(假设一款机翼只能被一款飞机使用),在创建飞机对象时要同时或之后创建机翼对象;销毁飞机时,要同时或之前销毁机翼对象,两者都不能脱离组合独自存在。

类图

组合

例程

class Wing
{
};
    
class Airplane
{
private:
    Wing mWing[2];
};

聚合(Aggregation)

聚合是一种弱所属关系。不同与组合的是,聚合只是描述两者存在所属关系,且拥有者对象可控制被拥有者对象的生命周期;而组合不仅描述这种关系,而且被组合的对象生命周期相同。因此,组合是一种特殊的聚合(类似于正方形是特殊的长方形)。

例如: 装饰一个房间,可以在房间摆放花,且任何时候都可以拿走花。此时房间与花就是一种聚合的关系。

类图

聚合

例程

class Flower
{
    
};

class Room
{
public: 
    void AddFlower();
        
    void RemoveFlower();
    
private:    
    Flower mFlower;
};

关联(Association)

关联是一种弱关系。但并不为所属关系,两者是平等的类。关联仅表示一种类持有另一种类的关系。

例如:老师和学生是两种独立平等的类。老师可以持有学生类,访问其分数。学生可以持有老师类,了解老师教授的课程。这种关系又称为双关联。

类图

关联

例程

class Teache
{
public:
    class Student *mStudent;
};

class Student
{
public:
    class Teacher *mTeacher;
};

依赖(Dependency)

一个对象的行为依赖另一种类。例如: 鸟的成长受水的影响,那么鸟与水就构成依赖关系。

C++语法中,通过将一个类作为另一个类成员函数参数的形式来实现两者的依赖关系。

类图

依赖

例程

class Water
{
    
};

class Bird
{
public:
    void GrowUp(Water &theWater);
};

实现(Realization)

实现对应的是面向对象的"接口"。例如手机都有自己的logo,不同的手机logo不同,每种手机都要实现自己的logo。

C++中,接口通过纯虚函数来实现,多态就是通过虚函数来实现的。

类图

实现

例程

class Phone
{
public:
    virtual string logoShow() = 0;
};

class Mate40 : public Phone
{
public:
    string LogoShow();
};

总结

在初使用c++时,可能不会关注c++类之间的这些关系。但是当设计一个场景,一种模块的时候,可以通过类之间的这些关系帮助自己更加清晰的了解每个模块的关系。以及自己设计的模块牵涉到哪些关联模块?是通过什么行为关联的?可能会发生什么动作?这些动作的发生会产生哪些场景?

当把这些问题都搞清楚了,设计起来会大大降低漏掉的场景和隐藏的Bug。

参考

https://www.cnblogs.com/xiaojiang1025/p/6677978.html

相关文章

  • UML中类与类间的关系及实现

    UML中类与类间的关系及实现 在面向对象的程序设计中,类之间主要有六种关系:继承, 组合, 聚合,关联, 依赖,实...

  • UML中类间关系(泛化、实现、依赖、关联、聚合、组合)

    UML中几种类间关系:泛化、实现、依赖、关联、聚合、组合 关联关系关联(association)关系表示类与类之间...

  • (转)UML类图

    UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合) UML中类与类,已经类与接口,接口与接口的关系有:泛化...

  • UML类图

    参考链接 :UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 参考链接 :UML类图箭头关系 ...

  • 学习设计模式(1)

    一个UML类图 类之间的关系 类的继承结构表现在UML中为:泛化(generalize)与实现(realize) ...

  • UML类图

    转:UML各种关系符号UML类图感知 UML中描述 对象 / 类 之间相互关系的方式包括:依赖(继承,实现),关联...

  • [UML专题-6] 类及类间关系-实现

         ✌劝学诗 -唐•颜真卿三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。 ⭐ 定义 实现关...

  • UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合UML类图几种关系的总结 泛化 类继承和类实现接口关系,...

  • 软件构造之【设计模式篇】基础知识

    一. UML UML中的类图及类图之间的关系 访问上面的链接,掌握以下知识: 1.类、接口、类图 2.类之间的关系...

  • 类图组件的含义

    1.类与类之间关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Real...

网友评论

      本文标题:UML中类与类间的关系及实现

      本文链接:https://www.haomeiwen.com/subject/lduatrtx.html