자료 추상화 , 자료 캡슐화
- 자료를 연산과 함께 선언한다
- 정보 은닉 개념 -> readability 증가
- class, cluster, flavor, form, modula, package, structure ...
추상화(Abstraction)
- 일부 속성 만으로 작업/객체들을 필요한 정도만 묘사하고 나머지는 숨기거나 삭제
- 유사성만 표현, 차이점은 삭제
- 기계에서 일이 수행되는 구체적이고 상세한 것을 모르고도 컴퓨터의 수행작업을 쉽게 이해하도록 해줌
자료형 : 객체들의 집합 + 객체에 작용하는 연산 집합(실체화, 구축, 소멸, 분리연산)
자료 추상화(Data abstraction) : 자료형 + 연산들을 캡슐화(encapsulation)
- 강 자료형을 지원
- 객체들에 적용되는 연산들의 타당성을 검증
- 안전한 호출 보장과 비밀 보장
추상 자료형 (Abstract data type)
- 자료구조 내에서 사용 가능한 연산들 또는 특징들의 리스트와 이 연산들의 정규 특성들에 기술되는 자료구조
- 내부적인 구현과 구분되는 인터페이스를 가짐
캡슐화(Encapsulation)
- 은닉형 : 공개적으로 정의된 인터페이스 + 내부구조 및 관련 연산들을 전용으로 정의한 구현을 갖는 자료형
방출 (export) / 도입 (import)
- Modula, Euclid(module)
- Ada(package)
- Simula( 최초의 class)
- CLU (cluster)
- ALPHARD(form)
- 구성
1) 공용부(public part) , 가시부 (visible part)
- 객체의 사용자 또는 패키지의 서비스에 요구되어지는 세부사항을 제공하는 패키지 선언의 한 부분
- 창문 활용 방출
2) 전용부(private part)
- 개발 과정에서 필요하지만, 패키지의 기능을 사용하는 사람들에게는 무관하며 접근 할 수 없는 구조적 세부 사항을 제공하는 패키지 선언의 한 부분
- 벽으로 보호
자료 추상화 제공 시 고려 사항
1) 자료 추상화 구문 형태는?
2) 영역 규칙과 생성된 객체의 생존 기간은?
3) 초기화 또는 최종 마무리할 코드 세그먼트의 허용 여부
4) 추상 자료형 정의에 매개변수화 사용 여부
5) 생성된 실체들 사이에 자료 공유 사용 여부
Ada의 단위 프로그램 종류
1) Subprogram (procedure, function)
2) Package -> 자료 추상화를 지원 // own 변수의 개념 -> 가시부의 부 프로그램 호출 시 변수의 이전 값이 남아있다
명세부
가시부 - 자료 방출 (with : 다른 package의 방출 자료 도입 , use : 도입된 이름의 한정자 생략)
전용부 - 자료 방출 불허용
몸체부
연산(부 프로그램) 구현
3) task
C++의 추상 자료형
- 객체 지향 프로그래밍 지원
- 추상 자료형 지원 : class
**Ada의 package나 Modula-2의 module은 자료형이 아니지만 C++의 클래스는 자료형이다
- Member Data는 스택에 할당, 나머지는 힙에 할당
Class
- 멤버 함수 : 함수의 헤더와 몸체부로 구성 , 클래스 내에서 인라인 됨
- 생성자(constructor) : 객체를 생성할 때 필요한 매개 변수의 제공 및 초기화 기능
- 소멸자(destructor) : 클래스 이름 앞에 ~기호 , 클래스 실체 소멸 시 묵시적 호출 , 할당된 힙 기억 장소 해제
Java의 추상 자료형
- C++과 유사
**차이점
1) 모든 객체들은 힙에 할당하여 참조형 변수를 총하여 접근한다.
2) 부 프로그램은 클래스 내에서만 정의가 된다
3) Package : 클래스 상위 수준인 두번째 캡슐화 구조 / 한개 이상의 클래스 정의를 가짐 / 패키지 내에 각 클래스는 다른 클래스의 부분 프렌드
수학적 추상화 명세
- 자료의 이상적인 추상화 기술 기법 : 구현보다 설계에 유용하며 새로운 언어 개발에 효과적이나 현재 언어에는 미 제공
- 자료형의 일반적 형태의 정의 지원
- 새로운 자료형의 정의 (언어 확장)
ex) 속성을 갖는 여러 클래스
one : 정의하고자 하는 자료형의 객체 표현을 위한 속성들
another : 이 자료형에 필요한 연산 구현을 위한 속성들
other : 관련된 특성 기술들
- 구문 명세 : 자료형 이름, 연산, 연산의 매개변수형 열거
- 의미 명세 : 연산 특성 기술(대수 방정식) -> 자료 표현과 독립적
- 제한 명세 : 연산 적용 전후의 조건들
-> 간결성 (판독성 증가, 언어 사용 용이)
5개의 기본요소 : 함수적 구성, 동등관계 , 논리 상수(true, false), 무한개의 자유 변수
'CS(Computer Science) > 프로그래밍언어' 카테고리의 다른 글
14. 객체지향 프로그래밍 (0) | 2023.06.07 |
---|---|
12. 예외 처리 (0) | 2023.06.04 |
10장 부 프로그램 (0) | 2023.06.04 |
9장 요약 (0) | 2023.06.04 |
9. 기억장소 배당 (3) | 2023.06.03 |