C++ Chapter 10.5 : 의존 관계
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
chapter 10. 객체들 사이의 관계 : 의존 관계
관계 종류 | 관계를 표현하는 동사 | 관계 형태 | 다른 클래스에 속할 수 있는가? | 멤버의 존재를 클래스가 관리 하는가? |
방향성 |
---|---|---|---|---|---|
의존 | Depends-on | 용도 외엔 무관 | Yes | Yes | 단방향 |
🔔 의존 관계 설명
Depends-on
필요할때만 가져다 쓴다 👉 다른 클래스의 특정 멤버함수를 잠내 클래스에서 도구로 잠시 사용하는 관계
- 연결 강도가 가장 약하다. 소속되어 있지 않다.
- 다른 클래스에 속할 수 있는가? : 용도 외엔 무관
- 멤버의 존재를 클래스가 관리 하는가? : No
- 단방향
🔔 코드
📜Timer.h
- 설명은 이 포스트 참고
elapsed()
멤버 함수는 실행 시간을 계산하고 출력해주는 기능을 가진다.
#pragma once
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <chrono>
class Timer
{
using clock_t = std::chrono::high_resolution_clock;
using second_t = std::chrono::duration<double, std::ratio<1>>;
std::chrono::time_point<clock_t> start_time = clock_t::now();
public:
void elapsed()
{
std::chrono::time_point<clock_t> end_time = clock_t::now();
std::cout << std::chrono::duration_cast<second_t>(end_time - start_time).count() << std::endl;
}
};
📜Worker.h
- 📜Timer.h 에 대해 모른다.
#pragma once
class Worker
{
public:
void doSomething(); // 구현은 Worker.cpp 에서
};
📜Worker.cpp
#pragma once
#include "Worker.h"
#include "Timer.h"
void Worker::doSomething()
{
Timer timer; // start timer
// 실행 시간 잴 대상이 되는 코드 넣기
timer.elapsed(); // end timer and report elapsed time
}
📜main.cpp
#include "Worker.h"
using namespace std;
int main()
{
Worker().doSomething();
return 0;
}
- 📜Work 클래스는 자신의 멤버 함수 doSomething에서 📜Time 클래스의 멤버 함수 elapsed를 가져다 사용한다.
- 서로 속해있거나 묶여있거나 그런건 아니고 주로 멤버 함수 필요할 때 가져다가 쓰는 것을
의존 관계
라고 한다. - timer.elapsed();
Time
타입의 객체timer
는 이 함수 가져와 쓸때만 일시적으로 쓰고 사라진다.
- 서로 속해있거나 묶여있거나 그런건 아니고 주로 멤버 함수 필요할 때 가져다가 쓰는 것을
- 📜Work 클래스는 📜Time 클래스에 대해 몰라도 된다.
- 📜Work.cpp 만 📜Time 클래스에 대해 알고있으면 됨.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기