В C++ классы могут взаимодействовать через различные отношения, такие как наследование, композиция, агрегация и ассоциация. Эти отношения помогают моделировать реальную объектно-ориентированную систему.
Наследование (Inheritance)
Один класс (производный) наследует свойства и поведение другого класса (базового). Подробнее см. Наследование.
Композиция (Composition)
Класс включает в себя объекты других классов, показывая жесткую зависимость “часть-целое”.
class Engine {
public:
void start() {}
};
class Car {
private:
Engine engine;
public:
void drive() {
engine.start();
}
};
Агрегация (Aggregation)
Класс содержит ссылки или указатели на объекты других классов, показывая слабую зависимость “часть-целое”.
class Engine {
public:
void start() {}
};
class Car {
private:
Engine* engine;
public:
Car(Engine* eng) : engine(eng) {}
void drive() {
engine->start();
}
};
Ассоциация (Association)
Классы связаны через обычные ссылки или указатели, что означает, что они могут взаимодействовать друг с другом, но не имеют жесткой зависимости.
class Driver;
class Car {
public:
void drive(Driver* driver) {}
};
class Driver {
public:
void useCar(Car* car) {
car->drive(this);
}
};