- toc {:toc}
Data Design
-
λ°μ΄ν°(Data) : μ 보λ₯Ό μ»΄ν¨ν°κ° μ²λ¦¬ν μ μλλ‘ κ°κ³΅ν κ²
-
λ°μ΄ν°λ νλ‘κ·Έλλ° μΈκ³μμμ λͺ μ¬μ΄λ€.
- μ‘°μλ μ μλ κ°μ²΄, μ²λ¦¬λ μ μλ μ 보μ΄λ€.
-
Data Abstraction : λ°μ΄ν°μ ꡬνμΌλ‘λΆν° λ°μ΄ν° νμ μ λ Όλ¦¬μ μΈ μμ±μ λΆλ¦¬
-
Logical Property : Whatμ μλ―Ένλ€. κ°λ₯ν κ°μ΄ 무μμΈμ§, νμν μ°μ°μ΄ 무μμΈμ§
-
Implementation : Howλ₯Ό μλ―Ένλ€. C++μμ μ΄λ»κ² ꡬνν κ²μΈμ§, μ΄λ»κ² μ¬μ©λ κ²μΈμ§
-
Data Encapsulation : λ°μ΄ν°λ₯Ό μ¬μ©νλ νλ‘κ·Έλ¨μΌλ‘λΆν° λ°μ΄ν°μ ννμ λΆλ¦¬
-
Low-levelμμ μ΄μ§μλ‘μ ννμ μΊ‘μννμ¬ high-levelλ‘ νννλ€.
-
ADT(Abstract Data Type)
-
μμ±(λ²μμ μ°μ°)μ΄ λͺ μλ λ°μ΄ν° νμ μ΄λ€.
-
νΉμ ꡬν λ°©μκ³Ό λ 립μ μΌλ‘ ν΅νμ΄μ λ°μ΄ν° νμ μ λͺ μνλ κ°λ μ μΈ κ²μ μλ―Ένλ€.
Data Structure
-
μλ£κ΅¬μ‘°(Data Structure) : κ°λ³ λ°μ΄ν° μμλ₯Ό μ μ₯νκ³ λμ°Ύλ μ°μ°μ ν μ μλ νΉμ§μ΄ μλ λ°μ΄ν° μμμ λͺ¨μ
-
ADT κ°λ μ λ°νμΌλ‘ μ€μ ꡬνμ ν΅ν΄ λ§λ€μ΄μ§λ€.
-
Features of Data Structures
- κ΅¬μ± μμλ€λ‘ λΆν΄λ μ μλ€.
- μμμ ꡬμ±μ μμμ μ κ·Όμ λν΄ μν₯μ μ€λ€.
- μμμ ꡬμ±κ³Ό μμμ μ κ·Ό λ°©μμ λ λ€ μΊ‘μνλ μ μλ€.
-
Data from 3 different levels
- Application level : μ€μ λ°μ΄ν°λ₯Ό λͺ¨λΈλ§νλ€.
- Logical level : λ²μμ μ°μ°μ λν΄ μΆμμ μΈ κ°λ μ κ°λλ€.
- Implementation level : ꡬ체μ μΌλ‘ μ΄λ»κ² λ°μ΄ν°λ₯Ό μ§λλ ꡬ쑰λ₯Ό νννκ³ μ°μ°μ λ§λ€ κ²μΈμ§λ₯Ό μ μνλ€.
-
Basic ADT Operation
- Constructor : ADTμ μλ‘μ΄ μΈμ€ν΄νΈ κ°μ²΄λ₯Ό λ§λ λ€.
- Transformer : μΈμ€ν΄μ€μ λ°μ΄ν° κ°μ λ°κΎΈκ±°λ μΆκ°νλ€.
- Observer : μΈμ€ν΄μ€μ λ°μ΄ν°λ₯Ό λ³ννλ κ² μμ΄ λ°μ΄ν°λ₯Ό λ³Ό μ μλλ‘ νλ€.
- Iterator : λ°μ΄ν°μ λͺ¨λ ꡬμ±μμλ₯Ό μμ°¨μ μΌλ‘ μ κ·Όν μ μλλ‘ νλ€.
-
Built-in type(int, float)μ κ²½μ° machine-level μ°μ°μ κ΄μ μ λ§κ² ꡬνλμλ€.
Composite Data Type
-
Composite Data Type
-
νλμ λ³μ μ΄λ¦μΌλ‘ κ°λ³ λ°μ΄ν° μμμ λͺ¨μμ μ μ₯ν ꡬ쑰
-
κ°λ³ λ°μ΄ν° μμμ μ κ·Ό κ°λ₯
- Unstructed(Custom) : classμ struct κ°μ΄ 미리 ꡬμ±λμ΄ μμ§ μμ ꡬ쑰
- Structed(Built-in) : arrayμ κ°μ΄ κ°λ³ λ°μ΄ν° μμμ μ κ·Όνλ λ°©λ²μ 미리 ꡬμ±ν΄λμ ꡬ쑰
-
C++ Built-In Data Types
- Simple
- Integral
- char
- short
- int
- long
- enum
- Floating
- float
- double
- long double
- Integral
- Composite
- array
- struct
- union
- class
- Address
- pointer
- reference
- Simple
Records
-
Records at the Logical Level
-
Record(Class, Struct) : μ νν λ°μ΄ν° λͺ¨μ, λ€λ₯Έ νμ μΌλ‘ ꡬμ±λ unstructed composite data type μ΄λ€.
-
Member selection operator (period .) : record type λ³μμ λ©€λ²μ μ κ·ΌνκΈ° μν μλ³μμ΄λ€.
- ex) myCar.year
-
Records at the Application Level
- κ°μ²΄λ₯Ό λ§λλ κ²μ μ μ©νλ€.
- κ°μ²΄μ λν λ€μν νμ μ λ°μ΄ν°λ₯Ό λͺ¨μλ μ μλ€.
- μ 체 κ°μ²΄λ₯Ό νλμ μ΄λ¦μΌλ‘ μ°Έμ‘°ν μ μλ€.
- κ°μ²΄μ λ€μν λ©€λ²λ€μ μ°Έμ‘°ν μ μλ€.
- λ€λ₯Έ νλ‘κ·Έλλ¨Έκ° μ μν μλ£ κ΅¬μ‘°λ₯Ό μ μνλ κ²μ μ μ©νλ€.
- κ°μ²΄λ₯Ό λ§λλ κ²μ μ μ©νλ€.
-
Records at the Implementation Level
- ꡬνμ νλ €λ©΄ λ°μ΄ν°μ λν λ©λͺ¨λ¦¬ μ μμ½μ΄ νμνλ€.
- μ κ·Ό ν¨μκ° μ ν΄μ ΈμΌ νλ€.
- Base addressλ λ©λͺ¨λ¦¬ 첫 λ²μ§Έ μ μ μ£Όμλ‘ μ ν΄μ§λ€.
- λ©€λ²μ μ κ·ΌνκΈ° μν΄ νμν λ©λͺ¨λ¦¬ μμΉλ₯Ό ν¬ν¨ν member-length-offset tableμ κ°μ§λ€.
One-Dimensional Array
-
One-Dimensional Array at the Logical Level
-
Array : μ νν ν¬κΈ°, λμΌν λ°μ΄ν° νμ μΌλ‘ ꡬμ±λ structed composite data typeμ΄λ€.
-
μμλ€μ μλμ μΈ μμΉλ₯Ό κ°μ§κ³ μμ΄ μ§μ μ μΈ μ κ·Όμ΄ κ°λ₯νλ€.
-
Arrayμ μ°μ° λ° μλμ μ μΈκ³Ό μΈλ±μ€λ₯Ό νμ©νμ¬ μνλλ€.
-
Implementation Level
-
Index = BaseAddress + Index * SizeOfElement
-
λμΌν λ°μ΄ν° νμ , μλ£νμ κ°κΈ° λλ¬Έμ μμ νλμ μλ£ν ν¬κΈ°λ₯Ό κ³±ν΄μ£Όλ©΄ μΈλ±μ€μ μμΉλ₯Ό μ€μ ν μ μλ€.
-
μΈλ±μ€λ λ°λμ integral type(char, short, int, long, enum)μ΄μ΄μΌ νλ€.
-
μΈλ±μ€λ νμ 0λΆν° μμνλ€.
-
λ°°μ΄ μ체λ₯Ό ν¨μμ νλΌλ―Έν°λ‘ μ£Όκ±°λ λ°νκ°μΌλ‘ λ°μ μ μλ€.
- μ΄λ₯Ό μν΄ ν¬μΈν°λ₯Ό μ¬μ©νλ€.
Two-Dimensional Array
-
Two-Dimensional Array at the Logical Level
-
Arrayμ λμΌνλ, λ μ°¨μμ΄ μ λ ¬λ μνμ΄λ€.
-
Array μ°μ° λ° μλμ μ μΈκ³Ό μΈλ±μ€μ μ(ν, μ΄)μ ν΅ν΄ μνλλ€.
-
λ©λͺ¨λ¦¬ μμμ two-dimensional arrayλ κ° μ΄μ μμ λμ κ²μ²λΌ ꡬμ±λλ€.
C++ class data type
-
Class : μ νν λ°μ΄ν° μμμ ν¨μλ₯Ό μΊ‘μνν unstructed composite typeμ΄λ€.
-
ν΄λμ€ νμ μ λ³μλ€μ νΉμ ν΄λμ€μ κ°μ²΄ νΉμ μΈμ€ν΄μ€λΌκ³ λ§νλ€.
-
ν΄λμ€μ κ°μ²΄λ₯Ό μ¬μ©νκ³ μ μΈνλ μννΈμ¨μ΄λ ν΄λΌμ΄μΈνΈλΌκ³ λΆλ₯Έλ€.
-
ν΄λΌμ΄μΈνΈ μ½λλ ν΄λμ€ κ°μ²΄λ€μ λ€λ£¨λ public member functionμ μ¬μ©νλ€.
-
Sending a messageλ public member functionμ νΈμΆνλ κ²μ μλ―Ένλ€.
-
Scope Resolution Operator (::)
-
C++ νλ‘κ·Έλ¨μ λ€μν ν΄λμ€ νμ μ μ¬μ©νκΈ° λλ¬Έμ λ€μν ν΄λμ€ μμ μλ λ©€λ² ν¨μμ μ΄λ¦μ΄ λμΌν κ²½μ°κ° μκΈΈ μ μλ€.
-
Member selection operator(.)μ΄ ν΄λΉ ν΄λμ€μ λ©€λ² ν¨μ νΈμΆμ κ²°μ νλλ° μ¬μ©λλ€.
-
Implementation νμΌμμλ ν΄λμ€λ₯Ό λͺ μνκΈ° μν΄ λ©€λ² ν¨μμ μ΄λ¦ μμ scope resolution operatorκ° μ¬μ©λλ€.
Object-Oriented Programming
-
3κ°μ§ κ³΅ν΅ κ΅¬μ‘° : class, object, inheritance
-
κ°μ²΄λ κ°μ²΄ μ§ν₯ μμ€ν μμ κΈ°λ³Έμ μΈ λ°νμ
-
ν΄λμ€λ κ°μ²΄μ ꡬ쑰λ₯Ό μ μνλ€.
-
ν΄λμ€λ μμμ μν΄ μ μλ νμ κ΄κ³λ‘ ꡬμ±λλ€.
-
Inheritance(μμ) : μ‘΄μ¬νλ ν΄λμ€λ₯Ό μ λ¬Ένν μλ‘μ΄ ν΄λμ€λ₯Ό λ§λ€ μ μκ² νλ€.
-
μλ‘μ΄ ν΄λμ€λ νμ ν΄λμ€, μμ ν΄λμ€λΌ λΆλ₯΄κ³ , μ‘΄μ¬νλ ν΄λμ€λ κΈ°λ³Έ ν΄λμ€, λΆλͺ¨ ν΄λμ€λΌκ³ λΆλ₯Έλ€.
-
μμμ ν΅ν΄ μ΄λ―Έ κ²μ¦λ ν΄λμ€λ₯Ό μ¬μ¬μ©ν μ μκ³ , νμλ‘ νλ μμ±μ νμ ν΄λμ€μ 곡μ ν μ μλ€.
-
Polymorphism(λ€νμ±) : μμ κ³μΈ΅μμ λ©μλ μ΄λ¦μ 볡μ νκ³ λ©μλκ° μ μ©λ κ°μ²΄λ₯Ό μν΄ μ ν©ν λ©μλλ₯Ό μ μ©νλ κ²μ λ§νλ€.
-
Overloading : νλμ ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬ κ° μ€λ³΅νμ¬ μ μνλ€.
-
Overriding : κ°μ μ΄λ¦μ λ©μλλ₯Ό κ° ν΄λμ€μ λ§₯λ½μ λ§κ² μ¬μ μνμ¬ μ¬μ©νλ€.
-
Exception
-
μμΈ μ¬νμ νλ‘κ·Έλ¨μ΄ μ€νλ λ λ°μνλ λΉμ μμ μΈ μν©μ΄λ€.
-
μμΈ μ¬ν κ΄λ¦¬
- μ€λ₯ 쑰건μ μ μνλ€.
- κ°λ₯ν μ€λ₯λ₯Ό ν¬ν¨νλ μ½λλ₯Ό μμ±νλ€.(try)
- μ€λ₯κ° λ°μνλ€λ©΄ μμ€ν μ μλ¦°λ€.(throw)
- μμ€ν μ μ€λ₯κ° λ°μνλ€λ μ νΈκ° λ€μ΄μ¨λ€λ©΄ μ€λ₯λ₯Ό μ²λ¦¬νλ€.(catch)