0%

객체지향vs절차지향

절차지향 vs 객체지향

절차지향(Procedural Programming)

절차지향 프로그래밍은물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법을 말합니다. 대표적인 절차지향 언어에는 C언어가 있는데, 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다고 볼 수 있습니다. 옛날에는 하드웨어와 소프트웨어의 개발속도 차이가 크지 않았다면 지금은 하드웨어의 개발속도가 소프트웨어의 속도를 따라오지 못하는 상황이 발생합니다.이는 객체지향 언어가 나타나면서 이러한 현상이 존재하게 되었습니다.

장점

  • 컴퓨터의 처리구와 유사해 실행속도가 빠르다.
  • 메모리를 직접 조작할 수 있다.
  • 복잡도가 단순하다.

단점

  • 유지보수가 어렵다.
  • 많은 지역변수를 사용한다.
  • 원하는 기능의 코드를 가져와서 복붙하면 오류가 발생한다.

언어

C언어, 베이직

객체지향(Object Oriented Programming)

객체지향은 절차지향 언어와 달리 실제 세계를 모델링하여 소프트웨어를 개발할 수 있습니다. 우리가 흔히 보는 의자 책상 등을 하나의 객체로 프로그래밍할 수 있다는 것입니다. 객체지향 프로그래밍에서는 데이터와 절차를 하나의 덩어리로 묶어서 생각해야 되고 마치 컴퓨터 부품을 하나씩 모아서 조립하는 것처럼 각 기능들을 불러와서 자신이 원하는 소프트웨어를 개발하는 것입니다.

특징

  1. 캡슐화

    데이터와 데이터를 처리한느 함수를 하나로 묶는 것

    캡슐화된 객체의 세부 내용이 외부에 은폐되어, 변경이 발생할 때 오류의 파급효과가 적습니다. 캡슐화된 객체들은 재사용이 용이합니다.

  2. 정보은닉
    캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것입니다.

  3. 추상화
    불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화 하는 것입니다.

  4. 상속성
    이미 정의된 상의 클래스의 모든 속성과 연산을 하위클래스가 물려받는 것입니다. 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있습니다.

  5. 다향성
    메시지에 의해 개체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미합니다.

장점

  • 신뢰성있는 소프트웨어를 쉽게 작성할 수 있다.
  • 재사용성 및 확장이 용이하다.
  • 유지보수에 유리하다

단점

  • 처리 속도가 절차지향보다 느리다.
  • 설계가 다소 어렵다

언어

C++, Javascript, Python, JAVA 등

객체지향과 절차지향의 차이점

객체지향언어와 절차지향언어는 반대되는 개념이 아닙니다. 위에서 설명한 것처럼 절차지향은 순차적으로 실행에 초점이 되어 있고 객체지향은 객체간의 관계조직에 초점을 두고 있습니다.

객체 지향 역시 순서도를 보면 절차지향적으로 프로그래밍이 실행되는걸 볼 수 있습니다. 다만 절차지향은 데이터에 초점을 두고 실행되지만, 객체지향은 기능을 중점으로 실행되는 것을 볼 수 있습니다.각 함수마다 하는 역할들이 나눠져 있기 때문입니다.