※ 추상화

: 사물들의 공통된 특징, 즉 추상적(보편적) 특징을 파악해 해당 특성으로 각각의 사물을 하나의 집합으로 파악하는 것

 

ex) 갤럭시 s8, g6, v20이 있다고 하면 이들은 스마트폰이라는 개념을 사용해 추상화할 수 있다. 만약 스마트폰 종류마다 배터리 충전 방식이 다르다고 하면 밑에 있는 소스코드와 같을 수 있다.

switch(스마트폰 종류) case 갤럭시 s8: //배터리 충전 방식 기술 case g6: //배터리 충전 방식 기술 end

 

 

여기서 새로운 종류의 스마트폰 v20을 추가하라고 하면 아래의 소스코드와 같이 case 문을 더 추가해야 한다.

switch (스마트폰 종류) case 갤럭시 s8: //배터리 충전 방식 기술 case g6: //배터리 충전 방식 기술 case v20: //배터리 충전 방식 기술 end

하지만 추상화 개념인 스마트폰을 이요할 경우 코드는 다음과 같을 것이다.

 

void chargeBattery(SmartPhone sp){
    sp.chargeBattery();
}

 

위와 같이 다형성의 원리를 이용해 코드를 작성하면 구체적인 스마트폰의 종류에 대한 부분을 찾을 수 없다. 따라서 특정 스마트폰이 추가되어도 코드의 수정이 필요없다.

 

 

=> 각 사물의 구체적인 개념에 의존하지 말고 추상적 개념에 의존해야 설계를 유연하게 변경 가능하다.

+ Recent posts