1. 객체와 클래스의 개념
- 객체란?
- 변수(상태)와 함수(행동)를 묶은 소프트웨어 덩어리
- 예: 캐릭터는 체력, 레벨(변수) + 공격, 방어(함수)로 구성
- 절차지향 vs 객체지향
- 절차지향: 데이터를 함수에 계속 전달
- 객체지향: 데이터와 행동을 하나의 객체로 묶어, 객체가 스스로 행동
- 캡슐화(Encapsulation)
- 객체의 내부 상태(멤버 변수)는 외부에서 직접 접근하지 못하게 하고,
오직 멤버 함수(메서드)를 통해서만 접근/수정 가능
- 장점: 내부 구현을 몰라도 객체를 사용할 수 있음, 유지보수와 확장성 향상
2. 클래스의 구조
- 클래스는 객체의 설계도
- 객체(instance)는 클래스를 통해 만들어짐
- 멤버 변수, 멤버 함수
- 멤버 변수: 객체의 상태(데이터)
- 멤버 함수: 객체의 행동(동작)
- 접근 지정자
private: 클래스 외부에서 접근 불가(캡슐화) / 같은 클래스라면 다른 객체여도 접근 가능
public: 외부에서 접근 가능(인터페이스 제공)
protected: 외부에서는 접근 못하나, 상속받은 자식클래스에서는 접근 가능
3. struct와 class 비교
- 공통점
- 멤버 변수, 멤버 함수, 생성자/소멸자, 상속 등 모두 지원
- 차이점
- struct
- 기본 접근 지정자가 public
- 데이터만 저장하는 단순 구조, 외부에 모두 공개해도 무방할 때
- C와의 호환, 값 객체, DTO 등에 사용
- class
- 기본 접근 지정자가 private
- 멤버 변수 보호, 행동(메서드) 중심, 캡슐화와 정보 은닉 필요할 때
- 객체지향 설계, 복잡한 동작, 유지보수와 확장성 고려