TIL

25.02.21 TIL

gaon99 2025. 2. 21. 21:52

 

부트캠프 22일차

 

1. 오늘 학습 키워드

 

새 프로젝트 시작


2. 오늘 학습 한 내용을 나만의 언어로 정리하기

 

어제자로 개인 과제가 끝이 났고, 또 새로운 팀 프로젝트가 시작됐다.

 

우선 조가 나눠졌기에, 업무를 또 분담했다. 이번 프로젝트는 3가지의 게임 중 하나를 선택해서, 제작해보는 프로젝트였다.

 

그 중에서 우리는 하나를 선택했고, 그에 맞춰서 업무를 5가지로 나누었다. UI, 캐릭터, 아이템, 맵 그리고 게임 매니저

이렇게 나누었다.

 

그 중에서 나는 이번에 UI를 담당하기로 했고 그에 맞춰 어떻게 구현할 지 정도만 러프하게 그렸다.

 

그리고 그에 맞춰서 작업할 예정이다.

 

그리고 특강을 통해 객체 지향 프로그래밍에 대해서 좀 더 배웠는데,

 

지금까지 작업을 해오면서 리팩토리쪽과, 단일 책임 원칙 부분이 많이 부족하단걸 좀 깨닫는 기회였다.

 

그렇다고 해서 다른 부분을 잘했냐?는 절대절대 아니지만,

 

인터페이스 및 객체 지향의 특징인 추상화, 다형성, 상속, 캡슐화와 SOLID 원칙에 대해서도 생각해 볼 수 있었다.

 

객체 지향의 특징은 예전에 적었던 적이 있어, 

SOLID만 적어보려고 한다.

 

S : Single Responsibility Principle / 단일 책임 원칙 으로 한 클래스는 하나의 책임을 가져야한다로 얘기할 수 있다

이를 좀 사람으로 러프하게 예시를 들어 간단히 얘기하자면, 손가락 이라는 클래스에서 손가락에 대한 정보만 다뤄야지,

손가락에서 발가락이라던가, 무릎이라던가, 이런 다른 정보를 다뤄선 안된다는 것이다.

 

O: Open/Closed Principle / 개방 폐쇄 원칙이다. 이는 확장에 열려있어야 하지만, 변경 및 수정에는 닫혀있어야한다.

비슷한 방법으로 예시를 들자면,

우선 시력이 나쁘다 라는 문제가 생겼을 때, 안경을 쓴다거나, 렌즈를 사용하는 것은 확장이지만, 

시력을 고치기 위해 눈을 완전히 재조립하여, 새로 눈을 장착한다거나,, 뭐 이런 느낌이다.

해당 클래스의 내부 코드를 수정 안하는 것이 중요하다.. 라는 말로 정리할 수 있을것 같다.

 

L : Liskov Substitution Principle / 리스코브 치환 원칙이다. 이 원칙은 자식 클래스가 부모 타입으로 교체할 수 있어야한다. 정도로

말할수 있을것이다. 이는 같이 부트캠프를 하며, 한 분이 예시를 들며 설명해주셨는데,

사람과 포유류가 있을 때, 사람은 포유류지만 포유류가 사람은 아니다. 라는 말을 해주셨다.

포유류에는 많은 동물이 있기에, 포유류 = 사람으로 특정할 수 없다는 것이였다.

 

I : Interface Sepregation Principle 인터페이스 분리 원칙이고, 이 원칙은 말 그대로 인터페이스를 각각 사용에 맞게 잘 분리해야한다. 로 인터페이스를 사용하기 위해 선언 할 때, 보통 인터페이스의 기능을 이름으로 적는다.

예를 들면 결제에 대한 인터페이스를 작성할 때엔 IPay라던가, 판매는 ISell이라던가,

이렇게 하나의 인터페이스에서 IPay와 ISell의 기능을 모두 가지면 안된다로 해석하면 된다.

 

D : Dependence Inversion Principle은 어떤 클래스를 참조하여 사용 할 상황이 생긴다면, 더 상위 요소를 참조 하라는 뜻이다.

손가락은 5개가 있고, 이 손가락은 손이라는 큰 부모 클래스를 상속 받는다고 예시를 들겠다.

이때 엄지 손가락에 대한 정보를 사용한다면, 엄지 손가락을 참조하는것이 아닌, 손을 참조하여 엄지 손가락을 참조하라는 뜻이다.

더 예시를 들자면, 손가락 길이에 대한 메서드가 있다고 보자, 이때 엄지 손가락을 참조하여, 값을 받는다면

검지에 손가락의 길이를 알거나 할땐, 참조를 변경해야할 것이다. 하지만, 상위 개체인 손을 참조하게 된다면 손 안에 5개의 손가락이 상속 되어있기에, 변경 없이 사용을 할 수 있게된다.

 

이렇게 나는 이렇게 SOLID 원칙을 이해했다.

 

그리고 이렇게 배움을 통해 이때까지 내가 평소에 작업했던 부분에서 중복 되는 부분을 그때 당시엔 인터페이스를 건들 자신도, 능력도, 그리고 지식도 없었어서 중복 부분을 처리를 못했지만,

이제는 설계를 하며 수정을 할때, 충분히 다룰수 있을것같다.


3. 학습하며 겪었던 문제점 & 에러

 

딱히 없음..


4. 내일 학습 할 것은 무엇인지

 

월요일엔 UI작업을 할 예정이다.

'TIL' 카테고리의 다른 글

25.02.25 TIL  (0) 2025.02.25
25.02.24 TIL  (0) 2025.02.24
25.02.20 TIL  (0) 2025.02.20
25.02.19 TIL  (0) 2025.02.19
25.02.18 TIL  (0) 2025.02.18