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
Records
- Records at the Logical Level
- Record(Class, Struct) : μ νν λ°μ΄ν° λͺ¨μ, λ€λ₯Έ νμ
μΌλ‘ ꡬμ±λ unstructed composite data type μ΄λ€.
- Member selection operator (period .) : record type λ³μμ λ©€λ²μ μ κ·ΌνκΈ° μν μλ³μμ΄λ€.
- 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)