추상화 매커니즘에는 프로시저 추상화와 데이터 추상화가 있다.
이 두 추상화 매커니즘은 시스템을 분해하는 방법이며 프로시저 추상화 중심으로 시스템을 분해한다면 기능분해(또는 알고리즘 분해)의 길로 가는 것이다. 데이터 추상화의 경우 데이터를 중심으로 타입을 추상화 하는 경우가 있고 데이터를 중심으로 프로시저를 추상화 하는 방법이 있다. 전자를 추상데이터 타입 후자를 객체 지향이라고 한다.
타입은 변수에 저장할 수 있는 내용물의 종류와 변수에 적용될 수 있는 연산의 가짓수를 의미한다.
리스코프는 "Programming with Abstract Data Types"에서 프로시저 추상화를 보완하기 위해 데이터 추상화 개념을 제안했다.
추상 데이터 타입을 구현하기 위해서 다음과 같은 특성을 프로그래밍 언어에서 지원해야한다.
1. 타입 정의를 할 수 있어야한다.
2. 타입 인스턴스를 다루기 위해 사용할 수 있는 오퍼레이션의 집합을 정의할 수 있어야한다.
3. 제공된 오퍼레이션을 통해서만 조작할 수 있도로고 데이터를 외부로부터 보호 할 수 있어야한다.
4. 타입에 대해 여러개의 인스턴스를 생성할 수 있어야한다.
클래스와 추상 데이터 타입의 차이점
* 추상 데이터 타입은 타입을 추상화한것, 클래스는 절차를 추상화 한 것
타입 추상화 Employee의 동작인 calculate_pay와 monthly_base_pay 직원의 종류에 따라 다르게 동작한다.
Employee 내부에 정규직과 비정규직이 존재함, Employee가 구체적인 직원 타입을 추상화
실제로 타입으로 구분되어있
단순히 클래스를 구현단위로 사용하는 것이 객체지향을 의미하지는 않는다. 타입을 기준으로 절차를 추상화해야한다.
변경의 압력
변경의 압력이 타입 추가측면이 강하다면 라면 객체지향
변경의 압력이 오퍼레이션 추가 측면이 강하다면 추상 데이터 타입
'Paradigm > OOP' 카테고리의 다른 글
추상클래스와 인터페이스 차이 (0) | 2022.08.21 |
---|---|
클래스와 객체 (0) | 2021.09.29 |
추상화 (0) | 2021.09.28 |
의존성 (0) | 2021.09.28 |
역할, 책임, 협력, 메세지 (0) | 2021.09.28 |