티스토리 뷰

🟩 오늘의 목표

  • 코드의 작성(선언→정의)과 실행(Main→호출) 흐름의 차이를 이해한다.
  • 클래스 캡슐화와 템플릿을 활용해 메모리를 직접 관리하는 인벤토리를 설계한다.
  • STL의 구성 요소를 이해하고, 컨테이너와 알고리즘을 활용하여 생산성을 높인다.
  • 객체지향 프로그래밍 기반의 설계를 수행하고 응집도, 결합도, SOLID 원칙을 익힌다.

 

🟧 1. 코드의 작성 vs 실행 흐름 (Process)


🟦 작성 순서 (Top-Down)

  • 선언 > 정의 > 실행: 코드는 위에서 아래로 읽히기 때문에 컴파일러가 알 수 있도록 선언을 먼저 하고 정의를 채운 뒤 Main에서 사용함.

🟦 실행 순서 (Jumping)

  • Main 함수 중심: 프로그램은 Main에서 시작하며, 함수를 호출하면 실행 흐름이 정의부로 **점프(Jump)**했다가 실행이 끝나면 다시 Main으로 복귀함.
  • 생명 주기: Main이 종료되기 직전, 스택에 있던 객체들의 소멸자가 호출되며 마무리됨.

 

🟧 2. 클래스 설계와 메모리 관리


🟦 정보 은닉과 다형성

  • 캡슐화: private으로 데이터를 보호하고, public Getter를 통해 안전하게 접근함.
  • 생성자 오버로딩: 이름은 같지만 매개변수가 다른 함수를 여러 개 만들어 다양한 방식으로 객체를 생성함.

🟦 템플릿과 동적 할당

  • 범용성: template<typename T>를 사용해 타입에 독립적인 "빵틀" 구조를 설계함.
  • 동적 관리: new로 힙(Heap) 영역에 메모리를 직접 할당하며, 배열 할당 시에는 반드시 **delete []**를 호출해야 메모리 누수를 막을 수 있음.

🟦 메모리 구조 (Stack vs Heap)

  • 스택(Stack): 함수 종료 시 자동으로 삭제되어 관리가 편리함.
  • 힙(Heap): 개발자가 직접 관리하는 영역으로, new와 delete의 짝을 맞추는 것이 핵심임.

 

🟧 3. STL(Standard Template Library)의 활용


🟦 컨테이너 (Container)

  • 벡터(vector): 크기가 자동 조정되는 동적 배열. 임의 접근이 빠르며 맨 뒤 삽입/삭제가 효율적임.
  • 맵(map): 키-값(Key-Value) 쌍으로 저장하며 키를 기준으로 자동 정렬되는 연관 컨테이너임.

🟦 알고리즘과 반복자

  • sort/find: 컨테이너의 내부 구현을 몰라도 사용할 수 있는 범용 함수임.
  • 반복자(Iterator): 컨테이너와 알고리즘 사이를 잇는 다리 역할로, 일관된 방식으로 요소를 순회하게 함.

 

🟧 4. 객체지향 설계 핵심 (Cohesion & Coupling)


🟦 응집도 (Cohesion)

  • 모듈 내부 요소들이 얼마나 밀접한지 나타내며, 높은 응집도가 좋은 설계임. (예: 피자 클래스에는 피자 관련 기능만 넣기)

🟦 결합도 (Coupling)

  • 모듈 간의 의존성을 나타내며, 낮은 결합도가 좋은 설계임. 인터페이스를 활용해 특정 클래스에 직접 의존하지 않게 설계해야 함.

 

🟧 5. SOLID 설계 원칙


  • SRP (단일 책임): 클래스는 하나의 책임만 가져야 함.
  • OCP (개방 폐쇄): 확장에는 열려 있고 수정에는 닫혀 있어야 함.
  • LSP (리스코프 치환): 자식 클래스는 부모 클래스의 역할을 완전히 대체할 수 있어야 함.
  • ISP (인터페이스 분리): 사용하지 않는 메서드에 의존하지 않도록 인터페이스를 세분화함.
  • DIP (의존 역전): 구체적인 구현이 아닌 '추상화(인터페이스)'에 의존해야 함.

 

🟫 오늘 느낀 점

  • C++의 실행 원리와 메모리 관리의 기초를 다진 후, 이를 자동화한 STL과 객체지향의 정수인 SOLID 원칙을 연결하며 견고한 코드를 짜는 법을 체감함.

'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글

TIL - 19일차  (0) 2025.12.24
TIL - 18일차  (0) 2025.12.23
TIL - 16일차  (0) 2025.12.19
TIL - 15일차  (1) 2025.12.18
TIL - 14일차  (0) 2025.12.17