내일배움캠프 68일차 TIL
오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다.
오버로딩과 오버라이딩
- 오버로딩 : 하나의 메서드를 여러 가지 형태로 구현하는 것을 말한다. 같은 이름의 메서드를 매개변수의 개수나 타입을 다르게 하여 정의할 수 있다.
- 오버라이딩 : 상속을 통해 기반 클래스에서 물려받은 메서드를 파생 클래스에서 재정의하는 것을 말한다. 오버라이딩을 하게 되면 기반 클래스의 메서드보다 파생 클래스에서 재정의된 메서드가 우선시된다. 객체 지향 프로그래밍에서 다형성을 구현하기 위해 사용된다.
인터페이스와 추상클래스
- 인터페이스와 추상 클래스 모두 상속을 통해 구체화 및 구현하는 과정이 필수적이다. 둘 다 자체적으로는 객체 생성이 불가능하다.
- 인터페이스는 메서드만 선언할 수 있고, 추상클래스는 다른 타입도 필드로 선언할 수 있다.
디자인 패턴
- 디자인 패턴은 프로그램을 개발하는 과정에서 발생하는 다양한 디자인 문제를 상황에 따라 간편하게 적용할 수 있게 정리한 것이다. 상황에 맞게 적적히 사용한다면 시행착오를 줄일 수 있다.
- 여러 곳에서 호출되어야 하거나, 여러개의 객체가 존재해선 안되는 경우, 클래스를 싱글턴 패턴으로 만들어 접근성을 높이고 하나의 객체만 생성되도록 만들 수 있다. 프로젝트에서 게임 매니저, 데이터 매니저 등을 만들 때 싱글턴 패턴을 사용했다.
- 특정 조건을 만족했을 때 어떤 메서드를 호출하고 싶을 때가 있다. 예를 들어 플레이어가 죽으면 결과 UI를 띄워야 하는 상황이다. 플레이어의 체력을 매 프레임 또는 특정 시간마다 검사하며 플레이어가 죽었는지 검사하는 것은 굉장히 비효율적이다. 이러한 상황에서는 옵저버 패턴을 사용하여, 콜백을 통해 메서드가 실행되도록 하면 효율적으로 문제를 해결할 수 있다.
팀 프로젝트 개발 - DungeonGenerator 수정
원래 맵 무작위 생성 기능을 구현하기 위해 사용하는 맵 프리팹들만 테마별로 따로 만들고, 스크립트 자체는 동일한 것을 사용하려고 했는데, 맵 프리팹의 형태에 따라 일부 메서드를 수정할 필요가 있었다. 때문에 기존에 사용하던 DungeonGenerator 스크립트를 리팩토링할 예정이다. 계획으로는 기존에 사용하던 클래스를 추상 클래스로 만들고, 맵마다 자신만의 맵 제너레이터 클래스를 DungeonGenerator를 상속받아서 구현하는 방식으로 만들 예정이다.