절차 지향, 객체 지향, 관점 지향 - 차이점

김형준 Kim Hyeong Jun·2022년 12월 6일
0
post-thumbnail

객체 지향 프로그래밍

객체 지향 프로그래밍(Object-Orientd Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

절차 지향 프로그래밍

절차 지향 프로그래밍(Procedural-Oriented Programming, POP)은 단순히 순서대로 명령을 수행하는 것을 의미하는 것이 아닌 프로시저 호출의 개념을 바탕으로 하는 구조적 프로그래밍의 일종이다.

여기서 말하는 "절차"는 프로시저 혹은 함수로 해석해야 맞다.

객체 지향 vs 절자 지향

  • 객체지향 프로그래밍과의 가장 큰 차이점으로 데이터와 함수를 별개로 취급한다.
  • 특정 기능을 수행하려면 그 일을 해주는 메소드를 직접 호출해야 한다. (vs 객체지향 프로그래밍에서는 특정 기능을 수행하는 메소드를 가진 객체를 만들어서, 그 인스턴스를 이용해 메소드를 호출한다.)
  • 절차지향은 데이터를 중심으로 순차적 실행에 초점을 맞추고 코드를 작성한다. 그렇다고 객체지향은 순차적으로 실행되는 것이 아니라고할 수 없다. 객체지향 프로그래밍도 절차지향 프로그래밍과 같이 절차적으로 실행되나 객체간의 관계에 초점을 두고 코드를 작성한다. 각각의 프로그래밍 방식이 순서를 중요시하는지, 객체를 중요하는지에 따라 구분한다고 생각하면 개념을 이해하는데 도움이 될 것 같다.

관점 지향 프로그래밍

관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)은 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. (OOP를 더욱 발전시키기 위한 개념)

기존의 단순 OOP에서는 계좌이체, 입출금, 이자계산의 서비스가 각각의 OOP로 프로그래밍 되었고, 각각의 OOP 모두 기능 작동을 위해 로깅, 보안, 트랜잭션을 하는 코드가 구현되어 있었다.

여기서 계좌이체, 입출금, 이자계산 서비스가 공통되게 가지고 있는 로직이 있는 것을 알 수 있고, 이를 OOP 소스 코드에서 제거하고 외부로 빼내 하나의 공통 모듈로 만들 수 있는데, 이것이 바로 기존의 OOP에 AOP관점을 더해 발전시킨 기법이다.

Core Concern(핵심 관심) : 각 서비스의 핵심 비즈니스 로직
Crosscut Concern(횡단 관심) : 공통 모듈

Reference

https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

http://www.incodom.kr/%EC%A0%88%EC%B0%A8_%EC%A7%80%ED%96%A5

https://greendreamtrre.tistory.com/601

profile
I want be a developer🙂

0개의 댓글