
개념
특징
public, private 같은 접근 제한자implements, extends 등을 활용한 상속interface, abstract class 등장점
단점
예제 (Python)
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Bark"
class Cat(Animal):
def speak(self):
return "Meow"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak()) # 다형성 예제
개념
특징
1. Cross-Cutting Concerns (횡단 관심사):
장점
단점
예제 (Spring AOP)
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBeforeMethodExecution(JoinPoint joinPoint) {
System.out.println("Method executed: " + joinPoint.getSignature());
}
}
@Before: 메서드 실행 전에 로깅 실행com.example.service.*)의 메서드에 적용개념
일급 객체란 프로그래밍 언어에서 다른 값처럼 자유롭게 다룰 수 있는 객체를 말합니다.
즉, 변수에 할당하거나 함수의 인자로 전달하거나, 함수의 반환값으로 사용할 수 있는 객체를 의미합니다.
일급 객체는 주로 함수형 프로그래밍에서 중요하게 다뤄집니다.
특징
1. 순수 함수 (Pure Function):
장점
단점
예제 (JavaScript)
const numbers = [1, 2, 3, 4, 5];
// 순수 함수
const double = x => x * 2;
// 고차 함수
const doubledNumbers = numbers.map(double);
console.log(doubledNumbers); // [2, 4, 6, 8, 10]
| 특징 | OOP | AOP | FP |
|---|---|---|---|
| 중심 개념 | 객체와 클래스 | 관심사(Concern) 분리 | 순수 함수와 함수 조합 |
| 적용 대상 | 상태와 행위를 캡슐화 | 로깅, 인증 등 횡단 관심사 처리 | 데이터 불변성 및 함수 조합 |
| 핵심 도구 | 클래스, 객체, 상속, 캡슐화 | Aspect, Advice, Pointcut | 순수 함수, 고차 함수, 불변 데이터 |
| 주요 특징 | 캡슐화, 상속, 다형성 | 비즈니스 로직과 부가 로직 분리 | 함수 조합, 지연 평가, 불변성 유지 |
| 장점 | 코드 재사용성, 유지보수성 | 코드 중복 감소, 관심사 분리 | 병렬 처리 용이, 상태 변화 최소화 |
| 단점 | 설계 복잡성, 작은 프로젝트에 과도할 수 있음 | 학습 곡선, 디버깅 어려움 | 초기 학습 난이도, 명령형 사고와의 차이 |
| 사용 사례 | 게임 개발, GUI 응용 프로그램 | 트랜잭션 관리, 로깅, 인증 | 데이터 처리, AI, 병렬 작업 |