Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- numpy 기초
- 코드트리
- 데이터 분석
- ack
- 코테
- 데이터 마이닝
- 디자인 패턴
- java
- NumPy
- cpp class
- 자바
- lambda
- 넘파이
- 넘파이 배열
- 클러스터링
- 코딩테스트실력진단
- 코딩테스트
- Design Pattern
- 기계학습
- 머신러닝
- 차원축소
- Machine Learning
- 파이썬
- cpp
- c++
- 네트워크 기초
- python
- 넘파이 기초
- OOP
- 합성곱 신경망
Archives
- Today
- Total
준비하는 대학생
[Cpp] 클래스 관계 - 의존(dependency) 본문
의존관계는 상속관계보다 약한 관계이다.
의존성은 일반적으로 사용관계(use-a)로 표현된다. 클래스 A가 내부적으로 클래스 B를 사용하고 있다면 이는 클래스 A가 클래스 B를 의존하고 있다고 볼 수 있다.
정리하면 아래의 경우로 나타낼 수 있다.
- 클래스 A의 멤버 함수에서 매개변수로 클래스 B 자료형을 사용하는 경우
- 클래스 A의 멤버 함수에서 리턴 값으로 클래스 B 자료형을 사용하는 경우
- 클래스 A의 멤버 함수에서 지역 변수로 클래스 B 자료형을 사용하는 경우
의존 관계는 클래스 다이어그램과 시퀀스 다이어그램을 사용하여 표현된다.
예를들어, 운전자가 차를 빌려 운전한다고 생각해보자. 운전자는 차를 소유하고 있지 않지만 운전을 하기 위해서는 차가 필요하다. 따라서 운전하는 함수에는 차 클래스가 필요하다고 할 수 있다. 즉 운전자클래스와 차 클래스로 구분했을 때 운전자 클래스는 차 클래스에 의존하고 있다고 설명할 수 있다.
아래는 예시를 클래스 다이어그램으로 표현한 것이다.
의존관계는 점선으로 표현한다.
다음은 위 관계를 코드로 나타낸 것이다.
#include <iostream>
#include <string>
class Car {
public:
void startEngine() {
std::cout << "Engine started." << std::endl;
}
};
class Driver {
public:
void startCar(Car& car) {
std::cout << "Driver starts the car." << std::endl;
car.startEngine();
}
};
int main() {
Car car;
Driver driver;
driver.startCar(car);
return 0;
}
Driver 클래스는 Car 클래스에 의존한다.
Driver 클래스의 startCar 함수에서는 Car 객체를 매개변수로 받아 Car 클래스의 startEngine 함수를 호출한다.
따라서 Driver 클래스는 Car 클래스에 의존하고 있다고 볼 수 있다.
의존관계를 설정하고 유지함으로써, 모듈의 독립성과 재사용성을 높일 수 있고, 코드의 유지보수성과 확장성을 높일 수 있다.
따라서, 코드 설계 시에 의존관계를 고려하여 설계하는 것이 중요하다고 볼 수 있다.
Comments