2024/4/3 TIL
'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습
튜터님께 질문 드린 것
1. 맵 배치는 어떻게 하면 좋을지
- 1. 다른 비슷한 장르 게임을 레퍼런스로 참조하기
- 2. 인터넷에 자연 경관 사진을 검색한 뒤 참조하기
2. 레이어 관리는 어떻게 하면 좋을지
- 0. 배경
- 1. 바닥
- 2. 콜라이더 없는 타일
- 3. 콜라이더 있는 타일
- 4. 상호작용 가능한 타일
보통은 위 순서로 배치
3. 나무 같은 오브젝트에서, 플레이어 캐릭터가 나무의 앞, 뒤에 가려지고 앞으로 나오는 판정
- 방법을 찾아본 뒤 알려주신다고 함
4. 유니티에서 스프라이트가 흐릿해지는 문제
스프라이트가 너무 크기 때문.
직접 잘라서 편집해줘야함
Q20. 객체지향이란 무엇인지 설명해주세요.
1. (꼬리질문) 객체지향의 특징은 무엇이 있나요?
2. (꼬리질문) OOP란?
3. (꼬리질문) SOLID 원칙은 무엇인가요?
A20.
객체지향 프로그래밍(OOP: Object-Oriented Programming)은 프로그램을 객체들의 모임으로 바라보고,
객체들 간의 상호작용을 중심으로 프로그래밍 하는 개발 패러다임이다.
이러한 객체지향적 접근 방식은 현실 세계의 개념과 그들 간의 관계를 모델링하여 소프트웨어를 설계하고 구현하는 것을 목표로 한다.
객체지향의 특징
캡슐화(Encapsulation): 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶어서 클래스로 표현한다.
이를 통해 외부에서 클래스 내부의 구현에 직접 접근하는 것을 제한하고, 객체의 내부 정보를 보호한다.
상속(Inheritance): 부모 클래스(슈퍼 클래스)의 속성과 메서드를 자식 클래스(서브 클래스)가 물려받아 재사용할 수 있는 기능이다.
이를 통해 코드의 재사용성을 높이고, 계층적인 관계를 표현할 수 있다.
다형성(Polymorphism): 같은 타입 또는 인터페이스를 구현한 객체들이 같은 메서드 호출에 대해 각자의 방식으로 동작할 수 있는 특성이다.
다형성은 오버라이딩(Override)과 오버로딩(Overloading)을 통해 구현된다.
추상화(Abstraction): 공통의 속성이나 특징을 추출하여 클래스로 정의하는 것을 말한다.
이를 통해 현실 세계의 복잡한 개념을 단순화하고 모델링할 수 있다.
OOP(객체지향 프로그래밍)
OOP란 Object-Oriented Programming의 약어로, 객체지향 프로그래밍을 의미한다.
이는 객체를 기반으로 하는 프로그래밍 패러다임을 사용하여 프로그램을 설계하고 구현하는 방식을 말한다.
OOP는 현대의 대부분의 프로그래밍 언어에서 지원하며, Java, C++, Python 등에서 널리 사용된다.
SOLID 원칙
SOLID 원칙은 객체지향 설계의 다섯 가지 원칙을 의미한다.
이 원칙들은 소프트웨어를 설계할 때 유연성, 확장성, 유지보수성 등을 고려하여 객체 간의 관계를 구성하는 방법을 제시한다.
SOLID 원칙은 다음과 같다.
단일 책임 원칙(Single Responsibility Principle, SRP): 하나의 클래스는 하나의 책임만 가져야 하며, 클래스가 변경되어야 하는 이유는 오직 하나여야 한다.
개방-폐쇄 원칙(Open-Closed Principle, OCP): 소프트웨어 요소(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. 즉, 기존의 코드를 변경하지 않고도 새로운 기능을 추가할 수 있어야 한다.
리스코프 치환 원칙(Liskov Substitution Principle, LSP): 자식 클래스는 부모 클래스의 역할을 완전히 대체할 수 있어야 한다. 즉, 프로그램의 정확성은 변경되지 않고도 서브타입을 부모타입으로 대체할 수 있어야 한다.
인터페이스 분리 원칙(Interface Segregation Principle, ISP): 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않아야 한다. 즉, 하나의 클라이언트를 위한 인터페이스를 여러 개로 나누는 것이 좋다.
의존 역전 원칙(Dependency Inversion Principle, DIP): 고수준 모듈은 저수준 모듈에 의존해서는 안되며, 둘 다 추상화에 의존해야 한다. 즉, 추상화된 인터페이스나 추상 클래스에 의존해야 한다.
'오늘의 나는 무엇을 잘했는지' - 성취
대분류 : 최종 팀 프로젝트 - 클라이언트 구현
소분류 : 타일셋 작업
-타일셋 맵 배치를 어떻게 할 것인지 구상했다.
'오늘의 나는 어떤 문제를 겪었는지, 앞으로 어떻게 해결할 것인지' - 개선
-