절차지향(Procedural Programming)이란?

물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어에는 C언어가 있다. 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다. 옛날에는 하드웨어와 소프트웨어의 개발 속도차이가 크지 않았다. 하지만 하드웨어의 빠른 발전을 통해 컴퓨팅 환경은 급속도로 증가했지만 소프트웨어 개발 시간이 따라가지 못하게 되고 이런 상황에 소프트웨어의 개발시간을 단축하되 하드웨어에 기본적인 사양을 잡아먹어도 더 이상 큰 단점이 아니기에 모듈화, 캡슐화해서 개념적으로 접근하는 형태를 갖는 객체지향 프로그래밍이 탄생했다. 객체지향 프로그래밍은 개발하려는 것을 기능별로 묶어 모듈화를 함으로써 같은 기능을 중복으로 연산하지 않거나 모듈을 재활용하기 때문에 유지보수에 유리하다.

 

장점

- 컴퓨터의 처리구조와 유사해 실행속도 빠름

 

단점

- 유지보수가 어려움

- 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움

- 디버깅이 어려움

 

 

객체지향(Object Oriented Programming)이란?

객체지향이란 실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다. 객체지향 프로그래밍에서는 데이터와 절차를 하나의 덩어리로 묶어서 생각한다. 이는 마치 컴퓨터 부품을 하나씩 사다가 컴퓨터를 조립하는 것과 같은 방법이다.

 

객체지향의 4대 특성

1. 추상화

  • 객체 지향적 관점에서 클래스를 정의하는 것. 예를 들어 사자, 고양이, 강아지가 있을 때 우리는 이것을
    각각 객체라고 하며, 이 객체들의 공통점인 동물이라고 표현할 수 있는데 이때 동물로 묶는 행위를
    추상화라고 한다.

2. 캡슐화

  • 특정 객체가 독립적으로 역할을 수행하기 위해 필요한 데이터와 기능을 하나로 묶는 것.
    ☞ 쉽게 말해 모듈화를 의미한다. 이러한 캡슐화를 통해 정보를 객체 안에 포함시키고, 그 정보에 대한 직접
        접근은 허용하지 않는 대신, 필요에 따라 확인할 수 있는 인터페이스를 외부에 공개함으로써 정보 은닉
        효과도 자연스럽게 따라온다.

3. 상속

  • 상위 개념의 특징을 하위 개념이 물려받는 것.

    상속에서 주의할 점
    ☞ 계층도, 조직도 관점(가족 관계도와 같은)에서 이해하면 안된다.
    분류도 관점에서 이해해야 한다.
    하위 클래스는 상위 클래스의 역할을 대신할 수 있으면서 고유의 역할도 수행할 수 있어야 한다.
          아버지와 아들을 예로 들면 아들은 아버지의 역할을 할 수 있으면서 아들 고유의 역할도 수행할 수 있어야
          하지만 그렇지 못하다. 이런 부분에서 상속을 사용할 때 주의해야 한다는 것이다.
    상속은 코드의 재사용성을 높이고 확장성을 높여준다.

4. 다형성

  • 다형성이란 하나의 이름으로 많은 상황에 대처하는 기법이다. 오버로딩, 오버라이딩이 그 방법이다.
    다형성을 이요하면 코드가 더 간단해지는 효과가 있다.

 

장점

- 코드의 재활용성이 높음

- 코딩이 절차지향보다 간편함

- 디버깅이 쉬움

 

단점

- 처리속도가 절차지향보다 느림

- 설계에 많은 시간소요가 들어감

 

이론적으로만 본다면 객체지향이 절차지향 언어에 비해 장점이 많다. 하지만 프로그래밍을 할 떼 항상 객체지향 언어만 사용하는 것은 아니다. 객체지향 언어는 어떤 모듈에 있는 하나의 기능만 필요하더라도 모듈 전체를 가져와야 하기 때문에 절차지향 프로그래밍보다 프로그램 사이즈가 더 커질 수도 있다. 또한 데이터에 대한 접근도 상대적으로 절차지향식보다 느려질 가능성이 많다. 

 

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

객체지향의 반대는 절차지향이 아니고 절차지향의 반대는 객체지향이 아니다. 

절차지향  ->  순차적으로 실행에 초점이 되어 있음 , 데이터 중심

객체지향  ->  객체간의 관계/조직에 초점을 두고 있음, 기능 중심

 

+ Recent posts