절.객.관

SUADI·2022년 10월 13일
0

이번 포스팅에서는 절차지향, 객체지향, 관점지향에 대해 알아보려고 한다.

[1] 절차지향

절차지향 프로그래밍이란 말그대로 코드를 위에서 아래로 순차적으로 처리하는 프로그래밍 방식이다. C언어가 절차지향 언어의 대표적인 예이다.

예전에는 하드웨어와 소프트웨어의 개발 속도가 별 차이 없었지만 하드웨어의 급격한 발전으로 컴퓨팅 환경은 좋아졌지만 소프트웨어 개발 시간은 상대적으로 느렸기에 객체지향 언어가 등장했다.

발전 방향은 절차지향으로부터 객체지향이지만 절차지향 나름의 장점이 있다.

절차지향 장점

  • 컴퓨터 처리 구조와 비슷해서 실행 속도가 빠르다.
  • 코드를 구조화 시킬 필요가 없기 때문에 개발 속도가 빠르다.

절차지향 단점

  • 가독성이 떨어지기 때문에 생기는 문제들이 모두 단점으로 작용한다. (유지보수, 디버깅 등)
  • 실행 순서가 정해져 있으므로 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

[2] 객체지향

실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다. 즉, 물건, 혹은 추상화된 개념을 객체라는 개념을 만들어 그것의 속성과 기능을 정의해 놓고 어플리케이션에 가져다 이용하는 방법이다. 객체지향의 장점은 곧 객체지향의 특징과 같다.

객체지향 특징

상속

상속은 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법이다. 기존 코드를 재활용해서 사용할 수 있으므로 코드의 반복이 줄기 때문에 유지보수도 쉽고 가독성도 좋다.

다형성

다형성이란 하나의 이름(방법)으로 많은 상황에 대처하는 기법이다. 개념적으로 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해지는 효과가 있다.

캡슐화

캡슐화란 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리된 것이다. 관련된 코드와 데이터가 묶여있고 오류가 없기 때문에 사용이 편리하다. 하나의 묶음을 메서드라고 한다. 메서드를 통해 불필요한 코드를 감추고 외부세계와의 상호작용을 한다.

[3] 관점지향

AOP는 스프링의 가장 중요한 세 가지 특징인 IoC(제어의 역전), DI(의존성 삽입), AOP(관점 지향 프로그래밍)중 하나이다. AOP는 OOP를 대신하는 개념이 아니라 보완하는 개념이라고 봐도 될 것 같다.

위에 설명했듯이 OOP의 특징인 캡슐화, 다형성, 상속 등을 통해 객체를 정의함으로써 코드를 간결하게 줄일 수 있고 서로 독립적인 코드를 작성할 수 있게 되었다.

하지만 횡적으로도 코드가 중복될 수 있다. 횡적이라는 의미는 객체들 사이에서도 객체 내에 중복되는 코드가 있다는 의미이다. 어플리케이션으로 따지면 애플리케이션 내에 핵심기능들마다 그 내부에 공통된 부수적인 기능들이 존재하는 경우가 많은데 그 부수적인 기능(횡단 관심사)을 분리함으로써 모듈성을 증가시키기 위해서 AOP 라는 개념이 등장했다.

관점지향 특징

다시 설명하자면 OOP는 공통적인 핵심 기능을 각 객체의 종단으로 입력했다면, AOP는 핵심 기능에서 중복되는 공통적인 기능을 종단간으로 삽입할 수 있도록 한 것이다.

OOP에서 보완된 AOP라는 개념 덕분에 한층 더 중복 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용 용이 등의 이점을 얻을 수 있다.

0개의 댓글

관련 채용 정보