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

C++ 对象与对象的关系

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

C++ 对象与对象的关系

对象与对象的关系
  • 依赖
  • 关联
  • 聚合
  • 组合

在一个系统中,一个对象可能与不同的对象相关,以下是不同的关系

  • 依赖(Dependency)使用一个
  • 关联(Association)使用一个
  • 聚合(Aggregation)有一个
  • 组合(Composition)有一个,“用…来实现”
  • 继承(Inheritance)是一个
  • 类模板(Class template)
依赖


依赖(Dependency):使用一个

class Book{};
class Food{};
class Human
{
public:
	void Read(Book book);
	void Eat(Food food);
};

通过方法与外部实体产生关系,依赖关系两个独立的对象之间非常轻微的关系

不存在包含于被包含到关系,通过方法与外部类型产生关联

class Notebook_computer
{};
class deattop_computer
{
private:
	string cup;
	int Memory;
	int ssdist;
};

程序类之间的“依赖”关系主要体现出的是一种使用关系,对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者当一个对象依赖于另一个对象所提供的服务时,这两个对象之间主要体现为依赖关系

在类型的实际中,依赖关系主要体现在目标类型的对象(实例),作为当前类型方法的局部对象或者方法的参数类型

关联


关联(Association):使用一个

对于两个相互独立的对象,当对象A与另一个对象B存在固定的对应关系时,这两个对象之间为关联关系,关联关系是依赖关系的特例

在类型的设计中,关联关系主要体现在目标类型的指针或引用,作为当前类型的属性成员,没有整体和部分的关系,只是有关系而已

  • 弱关联
class Book{};
class Person
{
private:
	Book* ptr; //弱关联
public:
	Person() :ptr(nullptr) {}
	Person(Book* p) :ptr(p) {}
	~Person() {}
	void SetBook(Book* p) { ptr = p; }
	void Study()
	{
		if (ptr != nullptr)
		{
			cout << "read" << endl;
		}
		else
		{
			cout << "play" << endl;
		}
	}
};

int main()
{
	Book book;
	Person son;
	son.SetBook(&book);
}

我们所关联的对象并不在我们的生存期中

  • 强关联
class Student
{
private:
	Book& _book;  //必须初始化
public:
	Student(Book &book):_book(book){}
};

int main()
{
	Book book;
	Student stu(book);
}

构建stu的时候,必须由book进行初始化,形成强关联

聚合

class Point
{
private:
	float _x;
	float _y;
public:
	Point() :_x(0.0), _y(0.0) {}
};
class circle
{
private:
	Point _center; //圆心
	float _radius; //半径
};
class circle
{
private:
	Point* pCenter;
	float _radius;
}

圆对象进行析构,不代表一定要将点对象也进行析构,其为聚合关系

组合

class Soul {};
class Body {};
class People
{
	Soul _soul;
	Body _body;
public:
	People(Soul soul,Body body):_soul(soul),_body(body)
	{}
};

当People对象析构,则Soul与Body对象也必须进行析构

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

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

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