【6】c++设计模式——>UML表示类之间的依赖关系

依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系,大多数情况下依赖关系体现在某个类的方法使用另一个类的对象作为参数。
在UML中,依赖关系用带箭头的虚线表示由依赖的一方指向被依赖的一方,下面举两个依赖关系的例子:
驾驶员(Driver)开车,需要将车(Car)对象作为参数传递给 Driver 类的drive()方法。

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

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

树木(Tree)的生长,需要将空气(Air)、水(Water)、土壤(Soil)对象作为参数传递给 Tree 类的 grow()方法。树木依赖空气,水土壤,树木是依赖,空气是被依赖,被树木依赖。

class Water
{
};

class Air
{
};

class Soil
{
};

class Tree
{
public:
    void grow(Water w, Air a, Soil s) 
    {
        cout << "借助 w 中的水分, s 中的养分和 a 中的二氧化碳, 我就可以茁壮成长了";
    }
};

在这里插入图片描述
依赖关系通常通过三种方式来实现:
1.将一个类的对象作为另一个类中方法的参数
2.在一个类的方法中将另一个类的对象作为其对象的局部变量
3.在一个类的方法中调用另一个类的静态方法
类之间的关系强弱顺序是这样的:继承(泛化) > 组合 > 聚合 > 关联 > 依赖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会尽力回答你的问题。首先,我们来设计一个 Student 学生,包括以下属性: - 学号(id) - 姓名(name) - 年龄(age) - 性别(gender) - 成绩(score) 首先,我们可以定义一个 Student ,如下所示: ```cpp class Student { public: int id; string name; int age; string gender; double score; }; ``` 接下来,我们可以通过继承来创建一个更具体的,比如说 Undergraduate 本科生。我们可以从 Student 中继承属性,并添加一些新的属性和方法,如下所示: ```cpp class Undergraduate : public Student { public: string major; int year; void display() { cout << "ID: " << id << endl; cout << "Name: " << name << endl; cout << "Age: " << age << endl; cout << "Gender: " << gender << endl; cout << "Score: " << score << endl; cout << "Major: " << major << endl; cout << "Year: " << year << endl; } }; ``` 在这个例子中,我们使用了 public 继承,使得 Undergraduate 可以访问 Student 中的公有成员。我们还定义了一个新的方法 display,用于打印出 Undergraduate 中的所有属性。 最后,我们可以通过重写父的方法来定制化 Undergraduate 的行为。比如说,我们可以重写 Student 中的 display 方法,如下所示: ```cpp class Undergraduate : public Student { public: string major; int year; void display() { cout << "ID: " << id << endl; cout << "Name: " << name << endl; cout << "Age: " << age << endl; cout << "Gender: " << gender << endl; cout << "Score: " << score << endl; cout << "Major: " << major << endl; cout << "Year: " << year << endl; cout << "This is an undergraduate student." << endl; } }; ``` 在这个例子中,我们重写了 display 方法,添加了一行文本,用于提示这是一个本科生对象。 希望这个例子能够帮助你理解 C++ 中的设计、继承和重写。如果你有任何其他问题,可以随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<( ̄︶ ̄)Okay.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值