예제로 비교해보는 절차지향프로그래밍, 객체지향 프로그래밍, 관점지향 프로그래밍

코딩하는 어린콩·2021년 11월 27일
0

I learned

목록 보기
10/14

절차지향 프로그래밍

int human1_position = 0;
int human2_position = 0;

human1_position = move(human1_position,3);
human2_position = move(human2_position,3);


public int move(int human_position, int x){
	return human_position+x;
}

절차지향 프로그래밍은 물이 위에서 아래로 흐르는 것처럼 순차적으로 한줄씩 처리하는 프로그래밍을 말합니다.

위코드를 보시면 사람이 두명이 있고 3칸 이동하는 절차지향 프로그래밍입니다.

만약 절차 지향으로 간단하게 바꾸면 어떻게 될까요?

객체 지향 프로그래밍

public class Human{
	int position;
    
    public Human(){
    	this.position = 0;
    }
    
    public void move(int x){
    	this.position +=x;
    }
}


/////// main

Human human1 = new Human();
Human human2 = new Human();
human1.move(3);
human2.move(3);

객체 지향 프로그래밍은 객체 라는 기본 단위로 나누고 이들을 상호작용으로 서술하는 방식입니다.

그래서 Human이라는 객체를 만들어서 절차지향 프로그래밍과 다르게 이렇게 나옵니다.

자 이제 관점 지향 프로그래밍인데 관점 지향 프로그래밍은 처음 들어봐서 조사를 더 해봤습니다.

관점 지향 프로그래밍

관점 지향 프로그래밍의 핵심인 횡당 관심에 대하여 알아보도록 하겠습니다.

위 그림을 보시면 만약 A사 B사 C사에대한 공통적인 기능이 들어갈수가 있습니다.

그림을 보시면 Method Parameter Log와 실행 시간 Log는 A,B,C 모두 들어가있는 기능이고 ParameterEncode는 A사 B사 에만 있습니다. 만약 관점 지향 프로그래밍을 안쓴다면 이에 대한 반복적인 코딩을 할 수 밖에 없습니다.

즉 AOP(관점 지향 프로그래밍)이란

공통 관심 기능을 분리하여 반복되는 부분을 추출하여 핵심 로직에 영양를 미치지 않고 소스의 중복을 줄이는 방법으로 기존 객체지향 프로그래밍에서 공통 관심 기능을 여러 모듈에서 적용하여 발생하는 중복된 코드 양산의 한계를 극복하기 위해 나오게 되었습니다.

-> 핵심 로직에 집중할 수 있도록, 필요하지만 중복해서 작성해야 하는 핵심 로직 이외의 코드들은 외부로 빼놓는 것을 말합니다.

AOP 주요 Annotaion

예제

  • 실행결과

0개의 댓글