[OOP] 절차 지향과 객체 지향

재키·2021년 3월 3일
0

OOP

목록 보기
1/1

0. 글의 목적

프로그래밍 패러다임인 절차 지향과 객체 지향 프로그래밍의 차이를 정리한다.

1. 절차 지향 프로그래밍(Procedural Programming)

소프트웨어를 구현한다는 것은 결국 최종적으로는 소프트웨어를 구성하는 데이터와 데이터를 조작하는 코드를 작성하는 것이다. 데이터를 조작하는 코드를 별도로 분리해서 함수나 프로시저(Procedure)와 같은 형태로 만들고, 각 프로시저들이 데이터를 조작하는 방식으로 코드를 작성할 수 있을 것이다. 프로시저는 다른 프로시저를 사용할 수도 있고, 각각의 프로시저가 같은 데이터를 사용할 수도 있다. 이렇게 프로시저로 프로그램을 구성하는 기법을 절자 지향 프로그래밍이라고 부른다. 각 프로시저는 필요에 따라 다르니 프로시저를 사용하기도 한다. 또한, 여러 프로시저가 동일한 데이터를 공유한다. 따라서 자연스럽게 데이터를 중심으로 구현하게 된다. 대표적인 절자 지향 프로그래밍 언어에는 C가 있다.

함수와 프로시저 차이: 둘 다 매개변수가 존재하나 함수는 반환값이 존재하고 프로시저는 반환값이 존재하지 않는다.

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

2. 객체 지향 프로그래밍(Object Oriented Programming)

절자 지향과 달리 객체 지향은 데이터 및 데이터와 관련된 프로시저(메서드)를 객체(object)라고 불리는 단위로 묶는다. 객체는 프로시저를 실행하는데 필요한 만큼의 데이터를 가지며, 객체들이 모여 프로그램을 구성한다. 이로 인해 객체는 자신만의 기능을 제공하며, 각 객체들은 서로 연결되어 다른 객체가 제공하는 기능을 사용할 수 있게 된다. 객체는 다른 객체에 기능을 제공하기 위해 프로시저를 사용하는데, 이때 프로시저는 자신이 속한 객체의 데이터에만 접근할 수 있으며, 다른 객체에 속한 데이터에는 접근할 수 없다.

  • 발생가능한 문제
    - 객체 별로 데이터와 프로시저를 알맞게 정의해야 하고, 프로그램의 규모가 작을 때에는 절자 치향 방식보다 복잡한 구조를 갖게 된다.
  • 이점
    - 객체의 데이터를 변경하더라도 해당 객체로만 변화가 집중되고 다른 객체에는 영향을 주지 않음 -> 요구 사항이 변했을 때 절차 지향 방식보다 프로그램을 더 쉽게 변경할 수 있다(캡슐화).
profile
기초를 탄탄히!

0개의 댓글