OOP와 AOP의 관계와 차이점

KIM YONG GU·2023년 11월 4일
0

JAVA Knowledge

목록 보기
36/40

OOP (Object-Oriented Programming)과 AOP (Aspect-Oriented Programming)은 소프트웨어 개발 방법론 또는 프로그래밍 패러다임의 두 가지 다른 관점을 나타냅니다.

OOP (Object-Oriented Programming)

  • 개념: OOP는 객체 지향 프로그래밍을 나타냅니다. 이 패러다임은 프로그램을 객체들의 집합으로 모델링하고, 객체 간 상호 작용을 통해 프로그램을 작성합니다. 객체는 데이터 (속성 또는 상태)와 메서드 (동작 또는 행위)로 구성됩니다.

  • 특징: 상속, 다형성, 캡슐화 등의 개념을 활용하여 코드를 구성합니다. 이로 인해 코드의 재사용성이 높아지고 유지 보수가 쉬워집니다.

  • 예시: Java, C++, Python과 같은 언어는 객체 지향 프로그래밍을 지원하며, 클래스와 객체를 사용하여 코드를 구성합니다.

AOP (Aspect-Oriented Programming)

  • 개념: AOP는 관점 지향 프로그래밍을 나타냅니다. 이 패러다임은 애플리케이션의 다양한 부분에 걸쳐 있는 "관점" 또는 "관심사"를 분리하여 모듈화하려는 노력을 기반으로 합니다. 주요 목표는 코드의 모듈화 및 재사용을 증가시키고, 코드의 가독성을 향상시키며 유지 보수를 단순화하는 것입니다.

  • 특징: AOP는 핵심 비즈니스 로직과 별도로 "관심사"를 정의하고, 관심사가 적용될 지점을 결정합니다. 이를 통해 로깅, 보안, 트랜잭션 관리 등과 같은 관심사를 핵심 비즈니스 로직과 분리하여 구현할 수 있습니다.

  • 예시: Spring Framework와 같은 프레임워크에서 AOP를 활용하여 트랜잭션 관리, 보안 등을 구현합니다.

차이점

  • OOP는 객체 지향 프로그래밍 패러다임으로, 주로 데이터와 해당 데이터를 조작하는 메서드를 객체로 모델링합니다. AOP는 코드를 "관심사"에 따라 모듈화하며, 주로 비즈니스 로직과는 별개로 나타납니다.

  • OOP는 프로그램의 구조화 및 재사용을 위해 사용되며, 클래스와 객체의 개념을 강조합니다. AOP는 코드의 횡단 관심사를 분리하기 위해 사용되며, 코드의 가독성 및 유지 보수를 개선합니다.

  • OOP는 객체 간의 관계를 정의하고 코드를 기능별로 조직화합니다. AOP는 핵심 비즈니스 로직 외의 관심사에 초점을 맞춥니다.

  • OOP는 주로 클래스와 객체를 활용하는데 반해, AOP는 관심사에 맞춰서 어드바이스(Advice), 포인트컷(Pointcut), 애스펙트(Aspect) 등의 용어와 개념을 사용합니다.

profile
Engineer, Look Beyond the Code.

0개의 댓글