인프런 커뮤니티 질문&답변

u_innovation님의 프로필 이미지
u_innovation

작성한 질문수

스프링 핵심 원리 - 기본편

객체 지향 설계와 스프링

좋은 객체 지향 프로그래밍이란?

작성

·

39

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요! 좋은 강의 감사드립니다 !

공부를 하면 할 수록, 왜? 에대해 의문을 품게 되니 질문이 끝도 없는 것 같습니다 ㅠㅠㅋㅋㅋ

하지만 알아가는 재미가 있네요 !

 

왜?에 대한 질문을 해보면서, 면접 때 어떻게 간결하고 임팩트 있게 말할 수 있을까? 하며 고민을 해보게 됩니다.

 

"좋은 객체 지향 프로그래밍이란?"이라는 주제가 흥미로웠습니다.

 

이걸 의식의 흐름대로 생각해보았을 때 아래와 같은 답을 내보았어요.

 

좋은 객체 지향 프로그래밍이란 우선 객체지향의 특징을 살릴 수 있어야 한다.

추상화, 캡슐화, 상속, 다형성

 

이 네가지가 프로그램을 유연하고 변경이 용이하게 만든다.

 

변경이 용이하다는 것은, 레고 블럭을 조립하듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발하는 것을 말하는데

이것은 다형성의 본질에 해당한다.

 

다형성의 본질은 역할과 구현으로 구분한다는 것이다.

역할과 구현으로 구분을 하게 되면 실행 시점에 유연하게 변경할 수 있고, 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.

 

이 장점을 극대화 할 수 있도록 도와주는 것이 스프링이다.

스프링에서 제공해주는 IoC, DI 기술로 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 도와준다.

스프링을 사용하지 않았을 때, OCP, DIP 원칙에 위배되었던 코드들을 해결할 수 있도록 도와준다.

 

결론: 객체지향의 특징을 살리고, 스프링을 사용해서 OCP, DIP 원칙도 지켜서 프로그램을 유연하고 변경이 용이하게 만드는 것이 좋은 객체지향 프로그래밍이라고 할 수 있다.

 


면접에서는 결론을 말하고 이전의 내용을 말하는 방식으로 설명한다면 충분한 답이 될지 궁금합니다.

 

혹은 "좋은 객체 지향 프로그래밍이란 무엇인가요?"에 좋은 답변이 될 수 있는, 3문장으로 간결하게 말할 수 있는 문장이 있다면 조언 부탁드리겠습니다 !

답변 1

0

안녕하세요. u_innovation님, 공식 서포터즈 David입니다.

좋은 객체지향 프로그래밍에 대한 요약은 스스로 생각한 부분들을 짧게 정리하여 묶어보시길 추천드립니다.

스스로 말씀하신 부분들을 코드 작성시 도입한 경험이 있는지, 있다면 어떤 것들을 느꼈는지에 대한 부분도 생각해 보시면 좋을 것 같습니다:)

감사합니다.

u_innovation님의 프로필 이미지
u_innovation

작성한 질문수

질문하기