생성일: 2021년 9월 5일 오후 4:10
태그: ADT, Records
Data
- The representation of information.
- Data are the nouns.
Data Abstraction
- Logical Level과 Implementaion Level을 구분
Data Encapsulation ⭐
- Application Level과 Logical Level의 데이터를 구분
- Application Level에서는 최소한의 부분만 공개 (information hiding)
Abstract Data Type(ADT)
- 추상화된 데이터 타입
- 우리가 지금까지 사용하고, 만들어온 Data Type이 ADT ⇒ 자료구조는 사용하는 사람과 만든사람이 다르다라는 것을 가정 그리고 사용하는 사람은 그 기 반의 모든것을 알 필요는 없다.
Data Structures
- A collection of data elements
Data from 3 different levels
- Application (or user) level modeling real-life data in a specific context.
- Logical (or ADT) level abstract view of the domain and operations. What의 영역
- Implementaion level specific representation of the structure to hold the data items, and the coding for operaions. How의 영역
추상화를 거쳐 상위 단계에 도달
4 Basic Kinds of ADT Operations
- Constructor ⇒ create
- Transformer ⇒ change
- Observer ⇒ observe
- Iterator ⇒ process, sequentially
Composite Data Type
- 더이상 쪼개지지 않는 built-in simple type과는 다르다.
- stores a collection of individual data components
- allows the individual data components to be accessed
Unstructured vs Structured
- Unstructured는 순서 X (ex) class, struct
- Structured는 순서 O (ex) arrays
Records
at the Logical Level
A record is a composite data type made up of a finite collection of not necessarily homogeneous
- Struct와 Class가 이에 해당
- 이와 달리 Array는 homogeneous
at the Application Level
- 객체로 표현, 데이터들을 모아서 하나의 single name으로 표현
at Implementation Level
- 메모리에서 공간을 할당 받는다.
- Base address = 할당되는 첫번째 주소
- Member-length-offset table = record의 각각의 멤버가 얼마나 메모리가 필요한지 나타내는 table
Array
- structured composite data type
- finite, fixed size( complie time에 결정됨)
- homogeneous
- Array는 assign operation 불가, 함수의 리턴값 불가(주소로 리턴 가능)
- Array는 pass by reference 구조체는 pass by value
- Address(index) = BaseAddress + Index * SizeOfElement
Two - Dimensional Array
- C++에서는 다차원 Array를 메모리에 row order로 저장한다. (1줄의 row를 쭉 메모리에 저장후 다음 row 저장)
Inheritance & Polymorphism
- Inheritance ⇒ reuse
- Polymorphism (다형성) ⇒ 복잡한 상속 관계속에서 여러 객체중에 어떤 객체를 사용하는 것인지 모호해짐 ⇒ runtime에 결정된다.