320x100
320x100

OOP (Object Oriented Programming)

실제 사물을 프로그래밍으로 옮겨와 모델링 하는 것

OOP의 핵심은 공통된 목적을 띈 데이터와 동작을 묶어 하나의 객체로 정의하는 것

기능을 재사용 할 수 있는 것이 큰 장점

관심사 분리 (Separation of Concers, SoC)의 디자인 원칙을 준수해야함

클래스 라는 핵심 단위를 가짐

 

- OOP의 문제점

비즈니스 클래스에 횡단 관심사와 핵심 관심사가 공존하게 되는데,

이때 메서드의 복잡도가 증가하여 비즈니스 코드 파악이 어렵게 된다

부가 기능의 불특정 다수 메서드가 반복적으로 구현되어 횡단 관심사의 모듈화가 어렵다

 

 * 핵심 관심사

핵심기능. 객체가 제공하는 고유의 기능

ex) 기능 자체

 

* 횡단 관심사

핵심 기능을 보조하기 위해 여러 클래스에 걸쳐 공통으로 사용되는 부가 기능

핵심 기능과 함께 사용

ex) 로깅, 보안, 트랜잭션 등

 

 

 

 

AOP (Aspect Oriented Programming)

핵심 관심사 (기능)에서 횡단 관심사를 분리하여 분리한 부가 기능을 Aspect라는 모듈 형태로 개발하는 방법

이를통해 객체지향의 단점을 보완하면서 객체지향적 가치를 높일 수 있게 함

여러 유형과 객체 간 발생하는 문제의 모듈화를 가능하게 함

Aspect라는 핵심 단위를 가짐

 

- 구현 방법

공통으로 사용되는 로직을 유틸 등으로 분리하여 클래스에서 호출

 

 

 

 

 

 

Reference

 

Spring AOP(Aspect Oriented Programming)란?

실제 사물을 프로그래밍으로 옮겨와 모델링하는 것사물 (Object) = 속성 (Variable) + 행위 (Method)<OOP의 핵심>은 공통된 목적을 띈 데이터와 동작을 묶어 하나의 객체로 정의하는 것기능을 재사용할 수

velog.io

 

300x250
728x90