- 객체지향 프로그래밍 OOP
- 클래스는 Define하기 위해 만드는 객체이다.
- 엔진들은 모두 모듈화(상속이 되어있다.)
- 프로그래밍 동작 순서
- 하드 → 메모리(용량 큼) 속도 조금 느림 → 레지스터(용량 작음) 속도 빠름 → CPU
- 선언파일(h), 구현파일(cpp)차이점
- 헤더파일은 이름같은거 정의 할때 선언(public, protected, private으로 공개 범위 적용)
- 구현파일은 헤더파일을 가지고 오거나 해당 변수를 이용하여 기능을 구현.
- 변수(*메모리에 공간을 할당하는 것은 운영체제가 해줌.) 빌트인 타입, 유저인 타입(*클래스도 마찬가지임)
- 즉, 메모리 공간하면, 구조를 생각 후 → 객체를 생각해줘야 한다.
- 유저 디파인 타입 : 구조체 타입을 사용하여 만들어야 함(예시 : 캐릭터가 가질 수 있는 속성들을 보관.)
- 변수는 메모리를 할당하여 데이터를 저장 → 객체가 만들어 진다는 뜻임.
- 재귀호출(this)(스택 메모리를 씀.) → 주소를 복사하지 않고 객체 데이터 자체를 복사.재귀호출 잘못 짜면 스택이 쌓이고 메모리가 쌓이면서 무한 루프로 메모리 누수에 빠짐.
- (*스택 오버플로우) → 주의해서 쓸 것.
- 전역변수 : 힙 메모리에 저장.
- 자기가 자기 자신을 호출한다.(클래스 자기 자신을)
- 인풋장치에서 데이터가 들어오면?
- 바이너리 데이터가 생성되어 CPU에서 처리된다.
- 컴퓨터 시스템 게층구조순서 : 하드웨어→운영체제→응용프로그램→통신
- 메모리 구성
- 높은 번지(High Address) 순으로 정렬 : 힙 → 미사용공간 → 스택 → 전역변수 → 기계코드
- 지역변수가 사용하는 공간 : 스택공간. → 미사용공간에데가 할당하면서 만들어줌.
- 글로벌 변수(전역변수) : 별도로 따로 메모리를 저장함(전역변수 공간에)
- 동적할당 (포인터) : 힙 메모리에 만들어짐.
- 기계코드 : 함수들이 들어감(main(), fcn()*함수는 파라미터(스택)
- 함수 호출에 따른 활성화 레코드 코드 예시
- 리턴되면 함수가 사라짐(fcn는 사라지고 main 함수가 다시 cpu에서 처리를 함.)
- fcn함수가 호출 되는 순간에는 main 함수를 건들지 않음.
- 스택 메모리는 제일 위에 있는 영역만 건드리고 힙 메모리는 동적메모리 할당하고, 해제하면 다른 포르그램이나 함수에서 사용 가능하도록 해당 메모리를 비워둠.
- 함수호출 관련 예시.
- 컨텍스트 스위칭을 수반함.
- 새로운 활성화 레코드를 생성함.
- 연속적인 함수호출에 따라 활성화 레코드가 스택에 생성됨.
- 함수 종료시 제일 위의 활성화 레코드가 사라지고 직전의 상황을 복원.(return 코드임..)
- (나중에 들어온 메모리가 우선순위가 높다.)
- 자료구조란?
- 데이터를 구성, 처리 , 검색, 저장하기 위한 특별한 형식.
- 자료구조는 데이터 값, 관계, 연산의 모음이다.(규칙적인 놈들)
- 자료구조는 대량의 데이터를 효율적으로 관리하는 메커니즘이다.
- 기본 자료구조
- 컴파일러에서 제공해주는 기본 타입 : 리니어 타입. - 빌트인 타입. (float, bool, int, 배열, 스택, 큐, 링크드 리스트.)
- 배열 : 맵
- 스택 : 메뉴관리 (*경로탐색 ( 깊이우선 탐색가능))
- 미로라면 방문하는 위치가 계속 스택에 들어감(
- 링크드 리스트 : 발사된 총알 개수 관리
- 큐 : 스택과 다르게 먼저 들어온 녀석이 먼저 서비스로 나감. (*경로탐색 (너비 우선 탐색가능))
- 마치 벽을 짚고 미로를 탈출하는 것마냥 경로탐색.(너비우선 탐색)
- 컴파일러에서 제공하지 않는 타입 : 논리니어 타입. 트리, 그래프, 트리, 해쉬 테이블 - (검색효율은 짱임.)
- 문제해결 과정에서 중요한 개념
- 코딩을 하기전에 문제를 먼저 분석, 분해
- 패턴 파악
- 객체를 확인하고 추상화(뼈대만 남기고 세부적인거 다 제거)
- 객체에 대한 요소들을 파악
- 자료구조를 설계(데이터 구조 + 알고리즘)
- 클래스를 세분화 하여 코딩
- 전체를 조립해서 프로그램을 완성한다.
반응형
'Game DevTip > STL' 카테고리의 다른 글
6. STL : 링크드 리스트(Linked List)를 직접 구현해 보자. (0) | 2024.12.07 |
---|---|
5. STL : 재귀함수에 대해서 (2) | 2024.12.07 |
4. STL : Call by value, Ref, Address & 배열과 포인터에 관련해서. (0) | 2024.12.07 |
3. STL : 클래스 상속에 관하여. (0) | 2024.12.07 |
2. STL : 추상화에 관해서. (0) | 2024.12.07 |
댓글