OOP: COMPOSITION AND RELATIONSHIPS
Dependency
Dependency is the weakest object relationship.
Simple idea:
One class or function temporarily uses another object.
The object is usually passed as a parameter or created locally.
Complete Example
#include <iostream>
#include <string>
using namespace std;
class Logger {
public:
void log(const string& message) const {
cout << "[LOG] " << message << endl;
}
};
class OrderService {
public:
void placeOrder(const string& itemName, const Logger& logger) const {
cout << "Order placed for " << itemName << endl;
logger.log("OrderService completed placeOrder");
}
};
int main() {
Logger logger;
OrderService service;
service.placeOrder("Notebook", logger);
return 0;
}
Output:
Order placed for Notebook
[LOG] OrderService completed placeOrder
Why This Is Dependency
OrderService does not own Logger.
OrderService does not store Logger.
It only uses Logger temporarily inside one function call.
Dependency vs Association
| Topic | Dependency | Association |
|---|---|---|
| Strength | weakest | stronger |
| Duration | temporary use | stored or longer connection |
| C++ form | parameter or local variable | member pointer/reference/object |
| Example | service uses logger in one method | doctor stores patients |
Why Dependency Is Useful
Dependency keeps classes flexible:
- You can pass different logger objects.
- The service does not manage logger lifetime.
- Testing becomes easier.
- The class has fewer permanent responsibilities.
Viva Answer
Dependency is a weak relationship where one class or function temporarily uses another object, usually through a parameter or local variable. It does not imply ownership or long-term storage.
Quick Check
- Does dependency mean ownership?
- How is a dependency often passed in C++?
- Why is dependency weaker than association?