티스토리 뷰

🟩 오늘의 목표

  • 클래스의 역할과 필요성을 이해한다.
  • 클래스와 객체를 정의하고 활용해 간단한 프로그램을 작성한다.
  • 접근 제어자(public, private)를 적절히 사용하여 안전한 구조를 설계한다.
  • 생성자, getter/setter, 파일 분리 구조를 통해 유지보수하기 좋은 코드를 작성한다.

 

🟧 C++ 기초 세션 – Class(클래스) 이해하기

 

🟦 1. 클래스가 필요한 이유

  • 유지 보수 시간이 개발보다 더 오래 걸리는 실제 환경에서는 재사용성, 유지 보수성이 매우 중요하다.
  • C++의 class는 데이터를 안전하게 보호하고, 필요한 기능만 외부에 제공하는 방식으로 구조를 개선한다.
  • 클래스는 “설계도”, 객체는 “설계도로 만들어진 실제 인스턴스”의 개념.

 

🟦 2. 클래스 없이 작성한 프로그램의 문제점

  • 학생 성적 관리 예제에서 함수에 과목이 늘어날수록 인자 개수가 폭증 → 유지보수 불가.
  • 데이터가 외부에 노출되어 잘못된 접근으로 오류 발생 가능.
  • 데이터(점수)와 기능(평균, 최대값 계산)이 섞여 있어 구조가 복잡해짐.

 

🟦 3. 클래스 기본 구조 (멤버 변수 & 멤버 함수)

  • 멤버 변수 (private):
    • 내부 데이터를 저장한다.
    • 함부로 수정되면 오류가 생기므로 대부분 private으로 숨긴다.
  • 멤버 함수 (public):
    • 외부에서 사용할 수 있는 기능(행동).
    • 데이터는 멤버 함수만 통해 안전하게 조작.

 

🟦 4. 접근 제어자 — public / private

  • public : 외부에서 접근 가능한 공개 멤버.
  • private : 클래스 내부에서만 접근 가능한 비공개 멤버.
  • 기본값이 private이라, 멤버 변수는 자동으로 보호됨.
  • private 멤버에 직접 접근 시 컴파일 에러 발생 → 데이터 보호 효과.

 

🟦 5. getter / setter 사용 이유

  • private 변수에 직접 접근할 수 없기 때문에
    getter(값 읽기), setter(값 변경) 을 통해 안전하게 제어.
  • setter로 잘못된 값 입력을 방지하거나 로직을 추가할 수도 있어 유지관리 쉬움.

 

🟦 6. 생성자(Constructor)

  • 객체가 생성될 때 자동으로 호출되는 특별한 함수.
  • 특징:
    • 반환형 없음.
    • 클래스 이름과 동일해야 함.
    • 멤버 변수를 초기화할 때 사용.
  • 형태:
    • 기본 생성자
    • 매개변수 있는 생성자
    • 기본값이 있는 생성자
  • 잘못된 호출 또는 정의 누락 시 컴파일 에러 발생.

 

🟦 7. Student 클래스에 생성자 적용하기

  • 국/영/수 점수를 입력받아 최대 점수 & 평균을 계산하는 클래스 제작.
  • 점수가 항상 3개 필요하므로 생성자에서 초기화.
  • 필요 시 기본값이 있는 생성자로 대체 가능.

 

🟦 8. 헤더(.h) / 소스(.cpp) 파일 분리

  • Student.h
    • class 선언(목차 역할)
    • 중복 포함 방지를 위한 #ifndef, #define, #endif
  • Student.cpp
    • 멤버 함수 구현(실제 내용)
  • main.cpp
    • Student.h를 include하고 클래스 사용

이렇게 파일을 나누면:

  • 전체 구조가 명확해지고
  • 유지보수성과 가독성이 크게 향상됨.

 

🟫 오늘 느낀 점

클래스 구조를 배운 덕분에 C++ 프로그램이 어떻게 확장성과 유지보수성을 갖추는지 이해할 수 있었다.

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

TIL - 11일차  (1) 2025.12.11
TIL - 10일차  (0) 2025.12.10
TIL - 8일차  (0) 2025.12.08
TIL - 7일차  (1) 2025.12.05
TIL - 6일차  (0) 2025.12.04