[Object] 추상화(Abstract)

업데이트:

한 번에 다뤄여 하는 정보의 수를 줄이기 위해 본질적인 정보만 남기고 불필요한 세부 사항을 걸러내면 문제를 단순화할 수 있을 것이다. 이처럼 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업을 추상화 라고 부른다.

가장 일반적인 추상화 방법은 한 번에 다뤄야 하는 문제의 크기를 줄이는 것이다. 이처럼 큰 문제를 해결 가능한 잗은 문제로 나누는 작업을 분해(decomposition) 라고 부른다.

  • 프로시저 추상화 : 소프트웨어가 무엇을 해야하는지를 추상화한다.
  • 데이터 추상화 : 소트트웨어가 무엇을 알아야 하는지를 추상화한다.

시스템을 분해하는 방법을 결정하려면 먼저 프로시저 추상화 중심으로 할 것인지, 데이터 추상화를 중심으로 할 것인지를 결정해야 한다. 프로시저 추상화를 중심으로 시스템을 분해하기로 결정했다면 기능 분해(fucntional decomposition) 의 길로 들어서는 것이다. 기능 분해는 알고리즘 분해 라고 부르기도 한다.

데이터 추상화를 중심으로 시스템을 분해하기로 결정했다면 두 가지 중 하나를 선택해야 한다. 하나는 데이터를 중심으로 타입을 추상화 하는 것이고 다른 하나는 데이터를 중심으로 프로시저를 추상화 하는 것이다. 전자를 추상 데이터 타입(Abstract Data Type) 이라 부르고 후자를 객체 지향(Object-Oriented) 이라고 부른다.

기능을 ‘협력하는 공동체’ 를 구성하도록 객체들로 나누는 과정이 바로 객체지향 패러다임에서의 분해를 의미한다.

추상 데이터 타입

추상 데이터 타입을 구현하려면 다음과 같은 특성을 위한 프로그래밍 언어의 지원이 필요하다.

  • 타입 정의를 선언할 수 있어야 한다.
  • 타입의 인스턴스를 다루기 위해 사용할 수 있는 오퍼레이션의 집합을 정의할 수 있어야 한다.
  • 제공된 오퍼레이션을 통해서만 조작할 수 있도록 데이터를 외부로 부터 보호할 수 있어야 한다.
  • 타입에 대해 여러 개의 인스턴스를 생성할 수 있어야 한다.

Reference

오브젝트, 코드로 이해하는 객체지향 설계

카테고리:

업데이트:

댓글남기기