C++ Chapter 10.5 : 의존 관계

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 10. 객체들 사이의 관계 : 의존 관계

관계 종류 관계를 표현하는 동사 관계 형태 다른 클래스에 속할 수 있는가? 멤버의 존재를
클래스가 관리 하는가?
방향성
의존 Depends-on 용도 외엔 무관 Yes Yes 단방향


🔔 의존 관계 설명

Depends-on

필요할때만 가져다 쓴다 👉 다른 클래스의 특정 멤버함수를 잠내 클래스에서 도구로 잠시 사용하는 관계

  • 연결 강도가 가장 약하다. 소속되어 있지 않다.
  • 다른 클래스에 속할 수 있는가? : 용도 외엔 무관
  • 멤버의 존재를 클래스가 관리 하는가? : No
  • 단방향


🔔 코드

📜Timer.h

#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 클래스에 대해 알고있으면 됨.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


댓글남기기