Data Design and Implementation
- Data: representation of information(정보의 표현)
- Data abstraction: logical properties를 implementation으로부터 분리하는 것
- Data encapsulation: Application 단계(logical level)에서 필요한 data들만 남겨두고 나머지 data는 information-hiding을 통해 은닉하는 것
- Abstract Data Type(ADT): properties와 implementation이 분리된 data type
- Data Structure: Data가 여러개 존재해야 하며, components elements로 분리될 수 있으며, 저장하는 방법에 따라 data에 access하는 방법이 달라진다
Data from 3 diffrent levels
- Application level: modeling real-life data in a specific context
- Logical level: (WHAT) abstract view of domain and operations
- Implemenatition level: (HOW) 어떻게 기계에서 작동되고 표현되는지에 대한 단계
4 basic kinds of ADT operations
1) Constructor: create new obejct
2) Transformer: data value를 변경
3) Observer: data value를 변경하지 않고 얻기만 한다.
4) Iterator: 반복자. 일정한 순서로 data components에 접근 가능하게 해준다.
- built-in types: 더 쪼갤 수 없는(machine-level operation으로 정의된) data type.
- composite data type: collection of individual data in One variable name. components의 type은 달라도 된다. Ex) struct, class C++의 composite 경우는 array, struct, class
1) Structed: 일정한 순서로 data가 조직화되어 있어서, organization에 따라 access 방법이 달라진다 Ex) Array
2) Unstructed: not organized(순서가 없는) data type. Ex) classes, structs
Record at logical level
Records at Implementation level
- 실행하기 위해서는 메모리 공간을 할당 받아야 한다
- Base address: first cell of record의 memory address
- Member-length-offset-table을 이용하여 메모리 주소 계산 가능
1차원 배열의 logical level
2차원 배열의 logical level
- Array operation: creation, storing value, retrieving value. -> assign(=)은 불가하다, return type이 될 수도 없다
- [ row ][ col ]을 이용하여 component position에 접근가능하다
- memory는 linear 함으로, 2차원 배열을 저장할 시 row major. column major방식이 존재한다(아래와 같이 row major를 많이 사용)
C++ class data type
- class: unsturcted type으로써 data member와 member function을 encapsulate한 data type이다
- client: class와 객체를 이용하는 software
- 선언 헤더 파일과 구현 파일을 분리하여 사용 -> client에게는 header파일만 보여주면 된다
- :: 연산자를 이용하여 class member fuction에 접근할 수 있다
Three inter-related constructs
- class: object 구조를 결정한다
- object: 기본적인 run-time 요소
- inheritance: 상속을 통해 is-a relation ship 형성. 다형성(polymorphism의 경우 runtime시 결정)
Offset table