Abstraction   추상화

(2023-09-24)

Abstract, 추상적


1. 추상화 (抽象化, Abstraction) 이란?

  ㅇ 실세계의 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화시킴
     - 즉, 복잡성에 대항하는 무기로써, 
     - 크고 복잡한 상황을 더 잘 관리하도록 해 줌

  ㅇ 추상화(단순화/간추리기/일반화/개념화)  ↔  구체화


2. 추상화 과정  

  ㅇ 통상, 구체적인 사항은 되도록 생략하고, 핵심이 되는 요소/원리 만을 추구함
     - 즉, 불필요한 세부사항, 흔한 공통사항 등을 제거하여 복잡도를 낮추는 것
        . 결국, 세부사항을 숨기고, 더 높은 수준에서 문제를 다룰 수 있게 해 줌

  ㅇ 한편, 프로그래밍 의도를 추상화시켜 컴퓨터에 전달하는 도구는, ☞ 프로그래밍 언어 참조
     - 대상물의 동작/특성들을 추상화를 통해 모델링하여 추상적 모델을 만들고,
     - 이에의한 구체화(구현) 과정을 위해,
     - 수식/절차(알고리즘),프로그램(코딩),컴퓨터 내부언어(컴파일) 등으로 변환하게 됨


3. 추상화 표현

  ㅇ 현상의 본질 만을 남겨두고 축약시켜, 다루기 쉽게 표현토록 함
  ㅇ 이때, 보통의 사람들이 이해할 수 있는 언어나 그림 등을 사용하여 이를 표현하게 됨
  ㅇ 결국, 추상화를 통해 `모델링`이 가능하게 됨


4. 추상화 방법

  ㅇ 일반화 (Generalization)
  ㅇ 집단화 (Aggregation)
  ㅇ 연관화 (Association)

  ㅇ 때론, 추상화를 이루기 위한 기초 작업으로,
     - 전문화 또는 세분화 또는 상세화 (Specialization)도 필요하기도 함


5. 추상화 계층/레벨

  ㅇ 응용에 따라 대상을 보는 관점이 다르므로, 
     - 다양한 형태 및 수많은 계층/레벨별로 추상화가 이루어질 수 있음
        . 하위의 개념들을 결합하여 상위의 고급 개념들을 만들어가는 단계/계층/레벨 등이 있게 됨

  ㅇ 통상, 말이 통하지 않는다 라고 함은,
     - 지적 추상화 레벨이 다르기 때문에 일어나는 경우가 대부분 임

  ㅇ 컴퓨터는, 하드웨어로부터 소프트웨어 구현까지, 수많은 추상화 계층을 둠
     - 즉, 항상 더 높은 추상화를 통해 하위 세부사항들을 일일이 신경쓰지 않고 간결하게 취급케 함
     * [참고용어] ☞ 컴포넌트, 추상자료형, 부프로그램, 모듈, 패키지, API6. [프로그래밍]  `프로세스` 및 `데이터`의 추상화  =>  추상 자료형

  ㅇ `프로세스/제어/연산/실행`의 추상화 (Procedural Abstraction)
     - 복잡한 실행 절차를 구분짓고 묶어 단순화시키는 것
        . 例) 부프로그램/함수 등

     - 과거 초창기 고급 프로그래밍언어부터 도입된 제어 추상화의 대표적인 例로는,
        . 제어 구조(반복문,조건문 등), 함수(부 프로그램) 등이 있음
           .. 이들은 상황에 따라 프로그램 실행 경로/순서를 수정하는 성질을 추상화시킨 것

  ㅇ `데이터/자료`의 추상화        (Data Abstraction)
     - 여러 자료형을 하나로 묶어 단순화하는 것
        . 例) 사용자 정의 자료형으로써 구조체(Structure) 등

  ※ 위 둘을 하나로 묶음  =>  추상 자료형 (Abstract Data Type, ADT)
     - `자료` 및 `연산`을 모두 하나의 단위로 묶고, 
     - 외부로부터 내부 자료를 함부로 접근 못하게함
        . 이를두고, 캡슐화(Encapsulation) 또는 정보은닉(Information Hiding) 라고도 함
     - 항상, 인터페이스 만을 통해 접근토록 함

  ※ `추상 자료형`을, 구체적으로 구현한 것을 `자료 구조` 라고 하며,
     - 데이터,연산을 추상화시킨 `자료 구조`를 기초로하여,
     - 할 일을 추상화 한 것을 `알고리즘` 이라고 함

공통/유사어(ㅊ~ㅌ)
   1. 척도 (scale)   2. 추상화 (abstraction)   3. 칩 (chip)   4. 컨텍스트 (context)   5. 컴플라이언스 (compliance)   6. 클래스 (class)   7. 클러스터 (cluster)   8. 타이머 (timer)   9. 태그 (tag)   10. 트리거 (trigger)  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"