OOP에서 지향하는 것이 뭘까?

·2022년 7월 5일
4

컴퓨터개론

목록 보기
11/14

복잡하게 이야기를 하고 싶은 것이 아니라 조금 요약을 하고 싶어서 작성하는 글입니다.


객체지향이란 것은 무엇일까, 라고 좀 찾아보면 뭐 서양철학은 어쩌니 앨런케이가 이야기하기를 이런 복잡한 말들이 있다.

물론 정확하게 이해를 할 수도 없고, 사람마다 해석을 다르게 하기 때문에
내가 이야기하는 것도 그저 다양한 조각지식을 합쳐놓은 것이라 볼 수 있다.


일단 객체지향에서 중요한 것은 객체 라는 것을 잊으면 안된다.

클래스는 객체를 조금 더 다양하게 다루기 위해서 사용을 하는 것이지, 객체지향 !== 클래스라는 것이다.
그렇게 클래스가 좋으면 클래스지향이라고 부르면 되지 왜 객체지향이라고 부르겠는가?

그리고 내가 본 책에서(ㅎ...) 말하기를 3개의 요소가 중요하다고 한다.

  • 역할
    • 모든 객체는 자신이 해야하는 역할을 가지고있다.
  • 책임
    • 모든 객체는 자신의 역할을 가지게 되는 것으로 특정 작업을 해야만 하는 책임이 생겨난다.
  • 협력
    • 객체는 혼자서는 활동할 수 없으며, 다른 객체에 의하여 작업이 이루어지기 때문에 협력이 중요하다.

그리고 이것을 지키기 위해서는 객체들은 서로 독립되어 있어야한다 라는 특징이 있다

이러한 독립성을 지키기 위하여 객체지향에서는 싱글톤 패턴을 사용하고 있고,
코드의 재사용을 위하여 DI를 사용하고 있다.

그럼 여기서 객체지향에서 지향하는 바가 무엇인지 알 수 있다.

기존에 만들어 놓은 코드를 재사용하기 위하여 발악을 하는 것이 객체지향이라고 할 수 있다는 것이다.

엄청 복잡하게 대답할 필요도 없고, 미사여구를 꾸밀 필요도 없고
정말 담백하게 기존에 작성해놓은 코드를 재사용하기 위하여 노력을 하는 것이 객체지향입니다. 라고 대답을 하면 된다고 생각한다.

흔히 객체지향의 5대원칙(?) SOLID 라는 것이 있는데, 결국은 재사용에 문제가 생기지 않도록 하라. 라는 내용이다.
솔리드원칙 면접에서 물어보면 어떻게하지...


다른 의견이 있거나, 조금 더 좋은 대답이 있다고 생각하시는 분이 계시다면 언제든 댓글로 달아주시면 반영하겠습니다 :D

profile
물류 서비스 Backend Software Developer

0개의 댓글