객체지향 프로그래밍 특강
절차지향 프로그래밍?
레벨, 체력, 공격력, 방어력 등의 동일한 속성의 변수들이
몬스터 같은 객체들이 추가될 때마다 비슷한 코드가 반복되고 길어지는 현상이 생김
이걸 배열로 반복 처리는 가능
문제1 - 데이터 구조 파악의 복잡함.
문제2 - 중간에 데이터 추가가 필요하다면??
가독성 저하 -> 코드 이해가 어려움 -> 버그 발생이 빈번해짐 -> 유지 보수가 힘듦
객체지향 프로그래밍
동일한 목적이나 기능을 하는 변수와 함수들을 하나로 묶어서 관리한다
연관된 데이터 묶기
객체 사용으로 코드가 간결해짐
가독성 증가 -> 코드 파악이 쉽다
길어 질 수 있는 코드를 나눠서 관리, 코드 관리에 좋음 -> 코드 분석 쉬움, 협업에도 유리
목적에 맞게 기능도 포함가능 -> 함수 사용
1. 목적에 맞게 코드를 분리해서 관리
2. 연관된 데이터 묶어서 사용
-> 코드 파악이 쉽다, 가독성 증가, 유지보수 쉽다.
=> 코드를 이해하기 쉽다!
객체지향 특징 4가지:
추상화 : 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.
다형성 : 하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될 수 있는 것을 말한다.
상속 : 상속은 자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것을 말한다.
캡슐화 : 변수와 함수를 하나의 단위로 묶는 것을 의미한다.
객체지향 설계원칙 5가지 (SOLID):
SRP(Single Responsibility Principle), 단일책임의 원칙 :
객체는 오직 하나의 책임만을 가져야 한다
OCP(Open-Closed Principle), 개방폐쇄의 원칙 :
Open(확장은 되면서), Closed(수정은 안 되게 하라)
LSP(Liskov Substitution Principle), 리스코프 치환 원칙 :
자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. (상속의 본질)
ISP(Interface Segregation Principle), 인터페이스 분리 원칙 :
인터페이스를 작게 나누어 만들어서, 클라이언트에서 필요없는 메서드는 사용하지 않게 한다.
DIP(Dependency Inversion Principle), 의존관계 역전 원칙 :
추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안 된다.
(출처가 나무위키이긴 하지만 정리가 너무 잘 되어있다...)
메타버스 모방 개인 과제
필수요구사항은 아래와 같이 총 7개인데,
- 캐릭터 만들기
- 캐릭터 이동
- 방 만들기
- 카메라 따라가기
- 캐릭터 애니메이션 추가
- 이름 입력 시스템
- 캐릭터 선택 시스템
이 중 캐릭터 애니메이션 추가 기능 까지는 구현이 빠르게 가능했다.
나머지는 내일까지 제출이라 내일 오전 중으로 마무리를 빠르게 지을 계획이다.
'TIL(Today I Learned)' 카테고리의 다른 글
Unity 팀 프로젝트 : 개발 방향 결정, 임무 분담 - TIL#23 (0) | 2024.01.24 |
---|---|
개인과제 : Unity로 메타버스 환경 카피하기 - TIL#22 (0) | 2024.01.23 |
Unity 게임 개발 입문 : 탑다운 슈팅 프로젝트 - TIL#20 (0) | 2024.01.19 |
Unity 입문하기, 세팅과 기본 조작 - TIL#19 (0) | 2024.01.18 |
텍스트 RPG 게임 : 팀 프로젝트 발표 - TIL#18 (0) | 2024.01.17 |