栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

类之间的六种静态关系和类图实现(c++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类之间的六种静态关系和类图实现(c++)

类之间的六种静态关系和类图实现(c++)

类图的表示方法:每个类分为三层,最顶层的为类名,中间层的为属性,最底层的为方法。

属性 的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}方法 的表示方式为:【可见性】【方法名称】(【参数列表】):【类型】可见性 都是一样的:"-“表示private、”+“表示public、”#"表示protected。 ① 继承(generalization)

继承:继承是最能体现面向对象代码复用的类关系。

“is a”例如 duck “is a” bird ,duck和bird就是继承关系。

代码:在C++中的表现为duck是bird子类。

class duck:public bird{
  //duck的扩展属性和方法  
};

用带空心三角形的实线来表示。
② 组合(composition)

组合:将一个对象wing(翅膀类)放到另一个对象bird里。(翅膀wing不能脱离鸟bird而存在

组合是一种强所属关系。wing是bird的一部分,具有相同的生命周期,wing在bird之前创建,在bird销毁之前销毁。wing是不能脱离bird独立存在的。

代码:在C++中表现为wing是bird成员属性。

class wing{
    
};

class bird{
private:
    wing w;             //wing是部分类,bird是组合类
};

带实心菱形的实线,菱形指向整体,箭头指向部分
③ 聚合(aggregation)

聚合:成员对象(Engine、Wheel)都是整体(Car)的一部分。(Engine、Wheel虽然是Car的一部分,但能脱离Car而存在

代码:在C++中表现为Engine、Wheel是Car成员属性。

class Engine{};
class Wheel{};

class Car{
private:
    Engine m_en;
    Wheel m_wh;
public:
    Car(Engine en, Wheel wh):m_en(en),m_wh(wh){}
};

空心菱形的实线,菱形指向整体,箭头指向部分
④ 关联(association)

关联:表示对象A和对象B之间有联系,相关联的对象可以看作是平等的。 (前面组合、聚合都是部分,关联是平等。

常见关联有3种:单向关联、双向关联、自关联。下面以顾客和商品的双向关联举例。

代码:在c++中表现为一个类的对象作为另一个类的成员变量。

//商品类
class product{
private:
    customer cu;     //商品属于哪位顾客,作为成员变量
};

//顾客类
class customer{
private:
  	product pro[10]; //顾客买了哪些商品,作为成员变量  
};

用实线连接有关联关系的对象所对应的类 ⑤ 依赖(dependency)

依赖:是一种 使用 关系。(例如司机driver使用汽车car

代码:在C++中的表现为 某个类的方法 使用 另一个类的对象 作为参数。

class Car{
public:
    void move();
};

class Driver{
public:
    void drive(Car car)
    {
        car.move();
    }
};

用带箭头的虚线表示,谁是被用的,箭头就指向谁
⑥ 实现(realization)

实现:子类实现父类中的“接口”(通过纯虚函数来实现)。(每种动物都有自己独有的移动方法,例如鸟会飞

代码:在C++中表现为子类实现父类中的纯虚函数。

class animal{
public:
    virtual void move();
};

class bird{
public:
    void move(){
        //鸟的移动方式,飞
    }
};

同继承,用带空心三角形的实线来表示。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号