절차지향과 객체지향

박핸지·2021년 11월 10일
0

회사 프로젝트에서 주로 쓰이는 언어는 Java이다.
자바는 객체지향의 대표적 언어라고 할 수 있는데(요즘 뭐 거의 객체지향이긴 하지만...ㅎ)
자투리시간에 자바를 공부하던 중 객체..상속..등 객체지향에 대한 심도있는 이해가 필요함을 느껴 회사 책장에서 객체지향과 디자인패턴이라는 책을 골라오게 되었다.
왜 이걸 공부하면 저걸 알고싶고 저걸 공부하다보면 또 딴게 궁금해지는건지
로스트아크 섬마퀘스트 하는거같다.. 하다보면 내가 원래 뭘 하려했는지 본질을 잃게돼버렷!

1.1 절차 지향

절차 지향은 말 그대로 순서에 따라 프로그래밍 하는 방식이라고 생각했는데, 사실 절차는 영어 단어 Procedural을 그대로 해석한 것이라고 한다. 우리가 일상생활에서 쓰는 절차랑은 좀 다른 뜻.
ProCedure은 프로시저를 이용한 프로그래밍 기법을 의미하며 절차 지향보다는 프로시저 지향이라고 부르는 것이 더 의미에 맞다고 한다.

  • 절차지향은 데이터를 중심으로 한 프로시저로 구성된다.

절차지향의 프로시저는 데이터를 사용해서 기능을 구현하며, 필요에 따라 다른 프로시저를 사용하기도 한다. 또한, 여러 프로시저가 동일한 데이터를 공유한다.
다수의 프로시저들이 데이터를 공유하는 방식으로 만들어지기 때문에, 절차 지향 프로그램은 자연스럽게 데이터를 중심으로 구현하게 된다.
-> 이러한 과정은 자연스러운 과정이기 때문에, 절차 지향적으로 코드를 구현하는 것은 쉽지만 프로그램 규모가 커지게 되면 다음과 같은 문제가 발생한다.

  • 데이터 타입이나 의미를 변경해야 할 때, 함께 수정해야 하는 프로시저가 증가한다.
  • 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 발생한다.

즉 이런 상황이 발생하는 것이다.
요구 사항이 생겨서 프로그램을 수정하면, 다른 곳에서 문제가 발생하고, 또 그 곳을 수정하면 또 다른 곳에서 문제가 발생하는..개빡치는 상황

1.2 객체 지향

그럼 객체 지향은 무엇이냐 !
절차 지향과 달리 객체 지향은 데이터 및 데이터와 관련된 프로시저를 객체(Object)라고 불리는 단위로 묶는다. 객체는 프로시저를 실행하는데 필요한 만큼의 데이터를 가지며, 객체들이 모여 프로그램을 구성한다.

각 객체는 자신만의 데이터와 프로시저를 갖는다. 객체는 자신만의 기능을 제공하며, 각 객체들은 서로 연결되어 다른 객체가 제공하는 기능을 사용할 수 있게 된다.
객체는 다른 객체에 기능을 제공하기 위해 프로시저를 사용하는데, 프로시저는 자신이 속한 객체의 데이터에만 접근할 수 있으며, 다른 객체에 속한 데이터에는 접근할 수 없다.

  • 객체지향은 규모가 작을 때는 절차지향보다 복잡한 구조를 갖게 되지만, 요구 사항의 변화가 생겼을 때 절차지향 방식보다 프로그램을 더 쉽게 변경할 수 있는 장점이 있다.

요약하자면,

  • 절차 지향 : 데이터를 중심으로 한 프로시저로 구성된다.
  • 객체 지향 : 데이터와 프로시저를 함께 갖는 객체들로 구성된다.

즉 절차지향은 처음에는 쉬울지 몰라도 시간이 흐를수록 프로그램을 수정하기 어렵게 만드는 구조이고
객체 지향은 최초 설계에는 더 많은 노력이 들어갈 수 있지만 프로그램을 상대적으로 쉽게 수정할 수 있는 유연함을 제공한다.

근데 생각해보면 절차지향이 절차적인건 맞는 것 같기도 하다..
데이터를 중심으로 프로그래밍 하게 되면 어차피 데이터를 따라서 순차적으로 프로그래밍 하게 되어있으니까

profile
핸지의 메모장ㅎㅅㅎ

0개의 댓글

관련 채용 정보