* 해당 글은 게임 프로그래머 입문 올인원 강의를 보고 정리한 글입니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Rookiss | 어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로
www.inflearn.com
* 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,
프로그램을 수많은 객체(object)라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다
ㄴ [객체] 메소드와 변수를 가지며 특정 역할을 수행하도록 인간이 정의한 추상적인 개념
객체 지향 프로그래밍
객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그램 설계 방법론의 일
namu.wiki
* 클래스(Class)
객체를 생성하기 위한 설계도
멤버 함수(동작)와 멤버 변수(속성)를 포함
정적할당과 동적 할당이 모두 가능
* 객체(Object)
클래스 기반으로 생성된 실체
설계도를 바탕으로 생성된 구체적인 데이터를 가진 단위
* 인스턴스(Instance)
객체를 생성하는 행위 또는 생성된 객체를 인스턴스라고 부름
* 생성자(Constructor)
객체를 생성할 때 호출되는 특별한 함수
(1) 기본 생성자
매개변수 없는 생성자
사용자 정의 생성자가 하나라도 작성하면 기본 생성자는 자동으로 생성되지 않음
(2) 사용자 정의 생성자
개발자가 직접 정의한 생성자
* 복사 생성자(Copy Constructor)
동일한 타입의 객체를 복사하여 동일한 상태를 갖는 새로운 객체를 생성
클래스명(const 클래스명& other)
{
this->멤버변수1 = other.멤버변수1;
this->멤버변수2 = other.멤버변수2;
this->멤버변수3 = other.멤버변수3;
}
* 소멸자(Destructor)
객체가 소멸될 때 호출되는 특별한 함수
주로 동적으로 할당된 메모리나 리소스를 해제하기 위해 사용
* 생성자는 여러 개 만들 수 있으나, 소멸자는 하나만 만들 수 있다
* C++에서 일반적으로 멤버 함수를 위에, 멤버 변수를 아래에 배치한다
* 절차 지향 프로그래밍(Procedural Programming)
함수, 메소드, 루틴, 서브 루틴 등(이를 통틀어 프로시저라고 함)을 이용한 프로그래밍 패러다임을 뜻한다
https://namu.wiki/w/%EC%A0%88%EC%B0%A8%EC%A0%81%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
절차적 프로그래밍
Procedural Programming 절차적 프로그래밍이란 단순히 순차적인 명령 수행이 아니라 함수, 메소드,
namu.wiki
* OOP 3대 요소
(1) 상속성(inheritance)
기존에 존재하는 클래스의 속성이나 기능을 다른 클래스에 물려주는 것을 의미
(예1) GameObject
- Creature
-- Player, Monster, Npc, Pet
- Projectile
-- Arrow, Fireball
- Env
(예2) Item
- Weapon
-- Sword, Bow, Lance
- Armor
-- Helmet, Boots, Armor, Glove
- consumable
-- Potion, Scroll
(2) 은닉성(data hiding), 캡슐화(encapsulation)
변수나 메소드들을 캡슐로 감싸서 안보이게 하는 정보 은닉 개념 중 하나이다
(예) 알약
- 접근 지정자
public - 전부 접근
protected - 내 자손들한테만
private - 나만
- 클래스에서 상속에서 사용하면
private이면 부모가 public, protected 이어도 private
protected이면 부모가 public 이어도 protected
💠 OOP 캡슐화 & 정보 은닉 개념 완벽 이해하기
캡슐화 (Encapsulation) 캡슐화란 쉽게 말하면 변수나 메소드들을 캡슐로 감싸서 안보이게 하는 정보 은닉 개념중 하나이다. 우리가 먹는 알약을 생각해보면 된다. 알약의 실제 약 내용은 가루약이
inpa.tistory.com
(3) 다형성(polymorphism = poly + morphism)
오버로딩(overloading) : 함수 이름의 재사용
오버라이딩(overriding) : 부모에 정의된 함수를 자식이 재정의
* 바인딩(Binding) == 묶는다
정적 바인딩 (static binding) : 컴파일 시점 결정
동적 바인딩 (dynamic binding) : 실행 시점 결정
'게임프로그래밍 > 게임 프로그래머 입문 올인원' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 문자열, 참조, 로또 번호 생성기, 달팽이 문제, 블루프린트 실습 - 3 (0) | 2025.01.29 |
---|---|
[게임 프로그래머 입문 올인원] 배열, 포인터 기초, 포인터 연산 (0) | 2025.01.22 |
[게임 프로그래머 입문 올인원] 파일분할, 블루프린트 실습 - 2주차 (0) | 2025.01.14 |
[게임 프로그래머 입문 올인원] 함수 기초, 스택 메모리와 스택 프레임, 디버깅 기초 (0) | 2025.01.07 |
[게임 프로그래머 입문 올인원] 블루프린트 실습 - 1주차 (0) | 2024.12.23 |