대학 전공 공부/프로그래밍 언어

11. Abstract Data Types and Encapsulation Constructs

Xerath(제라스) 2022. 5. 2. 06:59
728x90
반응형

11.1. Abstraction에 대한 개념

 

- Abstraction <=> detail, representational, concrete

- Abstraction을 통해 프로그래밍의 복잡성을 해결할 수 있음.

- Process Abstraction vs Data Abstraction

1) Process Abstraction(Imperative 언어들, 거의 모든 언어긴 하지)

Fortran 이전의 Plankalkul이란 언어때부터 즉, 매우 오래 전부터 Process Abstraction은 존재했었음. (≡함수)

=> Subprogram(function)의 형태로 한 곳에 쭉 나열하는게 아니라 함수로 만들어서 기능별로 작성해두는 방식.

2) Data Abstraction(O.O.P에서 나온 개념)

변수, 함수들을 하나의 덩어리로 만들어서 하나의 데이터 타입으로 쓰는 방식.

 

11.2. Data Abstraction이란?

 

- Abstraction Data Type(ADT)(=class) = 하나의 Data Type(변수), 그에 대한 연산을 정의한 SubProgram(=메소드)을 하나의 덩어리로 만든 것.

1. Encapsulation

2. Information Hiding

 

- Process Abstraction의 문제였던 Side Effect...(자기 변수 이외의 변수를 건드림)

1. 전역변수를 건들기

2. Call-by-reference

-> coupling 문제(서로 얽히는 것.) 발생함.

 

∴ 객체 지향 개념이 생겨났음.

1. Encapsulation을 통해 데이터가 하나의 덩어리가 되어서 그것을 바꿀 수 있는 것은 클래스 안의 메소드 뿐!

2. Information Hiding을 통해 데이터의 접근을 제한(private, public 등)함!

 

아하~!

 

11.2.2. user-defined abstract type 

- class에 선언되어 있는 필드나 메소드를 사용할 수 있음. 

- 'protocol'(=API, Interface) 역할임. => 호출자와 피호출자 간의 Interface

- client에서 class에 직접 접근할 수는 없고 제공받는 메소드, 필드만을 사용 가능함. => Reliability 증가

 

11.3.Design Issues for Abstract Data Types

- prototype(=specification)=> Interface class와 같은 것으로, 직접 모든게 구현되어 있지 않은 부분. <=> Implementaion 

- 객체는 보이는 부분과 안 보이는 부분으로 나누어져 있다.

1. Iterator(반복자), 2. Accessor(접근 제한자), 3. Constructor, 4. Destructor

 

11.4. 예시 언어들

 

- SIMULA67 -> Smalltalk80 -> ...(O.O.P 언어들)

 

1. C++(C+O.O개념/기능)

- 접근 제한자 : private, protected, public

- constructor : 멤버 타입명(ex) Stack stk ), destructor : delete(delete stk)

- .h : Specification    vs   .cpp : Implementation

 

2.Objective-C

- Interface <=> Implementation

(prototype <=> definition)

3. Java

class(일반 클래스)

Interface class(Implementation)

Abstract class(구현이 덜 된 class)

 C++하고 다른 점은 독립된 class가 없다.(모든 class는 누군가로부터 상속을 받는다. Object class(root class)로부터 상속을 받아 내려온다.)

 

- 프로그래머가 deallocate 할 일이 없음. 가비지 콜렉터가 있으므로~ => dangling pointer 문제, 가비지 문제 걱정X

 

 

728x90
반응형