-
[TIL] 재귀함수 마스터해버리기(?) + SOLID 원칙TIL(Today I Learned) 2022. 11. 21. 20:04
*20221121의 회고
오늘은 오전 9시에 객체지향에 대한 강의를 줌에서 실시간으로 들었다. 객체지향에서 꼭 알아야 하는 개념인 SOLID원칙에 대해서 배웠다. 예전에 스프링 강의를 수강하면서 SOLID 원칙에 대해 공부한 적이 있었다. 물론 스프링의 'ㅅ' 정도만 배우고 내배캠에 참여하게 되었지만, SOLID에 대해 처음 들었을 때는 멘붕 그 자체였던 것 같다. 아니 자바를 공부하면서 객체지향에 대한 개념을 드디어 좀 이해했고, 이제 객체 지향의 개념이 낯설지 않아졌는데, 또 SOLID원칙을 지키면서 객체지향 프로그래밍을 하라구?!! 정말....ㅎㅎ 공부는 끝이 없는 것 같다. 그리고 세상엔 많은 천재들이 있는 것 같다. 컴퓨터가 세상에 나온지 얼마나 되었다고 선생님들 께서는 여러가지의 이론과 용어들을 정리해 주시고... 스프링이라는 프레임 워크도 만들어 주시고... 대단한 것 같다...ㅎ 덕분에 예전보단 편하게 개발을 할 수 있게 되었지만 이런 발상을 했다는 게 신기했다 ㅎㅎ
무튼 오늘 배운 SOLID원칙에 대해 회고해보려 한다. 좋은 객체 지향 프로그래밍을 설계하는데에는 5가지 원칙이 있다.
로버트 마틴 선생님께서 이 5가지 원칙을 정리해주셨다.
- SRP(Single Responsibility Principle : 단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 한다.
- 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것
- OCP(Open / Closed Principle : 개방 - 폐쇄 원칙)
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.
- LSP(Liskov Substitution Principle : 리스코프 치환 원칙)
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 다형성에서 하위클래스는 상속받은 인터페이스의 규약을 다 지켜야 한다.
- ISP(Interface Segregation Principle : 인터페이스 분리 원칙)
- 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
- DIP(Dependency Inversion Principle : 의존 관계 역전 원칙)
- 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다. -> 구현클래스에 의존하지 말고 인터페이스에 의존해야 함
말만 들으면 정말 어렵다 ㅎㅎ 이걸 실제 코드로 적용해 보는 연습을 많이 해봐야 할 것 같다. 실시간 강의에서도 튜터님께서 코드를 수정하면서 원칙 하나 하나에 대해서 설명해주셨지만, 정확히는 잘 모르겠다. 그러나 어떤 느낌인지는 알 수 있었다. 취업할 때 질문에서 자주 등장하는 내용이라 하니 무조건 잘 알아둬야 겠다!
강의를 듣고, 오늘도 나머지 시간엔 재귀함수에 대해 공부하였다. 확실히 매일 보니까 이젠 거부감없이 재귀함수가 받아들여졌다. 그리고 어느정도 감이 오는 것 같다. 역시 반복이 답이고 익숙해지는게 답이다. 그런데 요 근래 맨날 재귀함수만 공부하다 보니 저녁즈음 되서는 집중력이 많이 떨어졌다. 내일은 어떤 공부를 해야할지 고민도 되고, 차라리 어서 팀프로젝트 라는 단기목표가 생겨서 수동적으로라도 열심히 몰입하고 싶다! 그치만 오늘 남은시간도 최선을 다해보려 노력할 것이다. 오늘의 회고 끝~!~!~!
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 두번째 미니 프로젝트 시작 - 메모장 구현하기 (0) 2022.11.23 [TIL] 자바의 객체지향프로그래밍과 친해지기 (0) 2022.11.22 [TIL] 객체지향프로그래밍과 CS특강 (2) 2022.11.18 [TIL] 그래프, DFS, BFS, 동적계획법.....반갑다.... (0) 2022.11.17 [TIL] 타임어택 알고리즘, 트리, 배열로 이진탐색트리 구현 (2) 2022.11.16 - SRP(Single Responsibility Principle : 단일 책임 원칙)