OOPμ ν΅μ¬μΈ ν΄λμ€μ κ°μ²΄λ κ°κ° 무μμΌκΉμ?
Class | ν΄λμ€
ν΄λμ€λ 'κ°μ²΄λ€μ μ²μ¬μ§' μ λλ€.
λν ν΄λμ€λ 'μ¬μ©μκ° μ§μ ν μλ£ν' μ λλ€.
λ§μΉ μ°λ¦¬κ° μ¬μ©νλ μ μλ μ€μ μλ£νμ²λΌ μ¬μ©ν μ μλ λ°μ΄ν°μ λλ€.
(ν΄λμ€μ μ μΈ λ°©μμ 보면 λμ± μ΄ν΄κ° λ κ² μ λλ€.)
ν΄λμ€μλ attributes(μμ±) λ€μ΄ μλλ°,
κ·Έκ²μ΄ μ°λ¦¬κ° μλ 'κ° (data)' κ³Ό λμΌν μν μ λλ€.
κ·Έλ¦¬κ³ methods(λ©μλ) λ€λ μλλ°,
μ΄κ²μ μ°λ¦¬κ° μ¬μ©νλ 'ν¨μ (function)' μ λμΌν μν μ λλ€.
λν ν΄λμ€λ€μ
ν΄λμ€μ λ΄λΆμ μΌλ‘λ§ μ¬μ©λλ μ©λμ ν¨μ(λ©μλ)μ κ°(μμ±) λ€μ κ°μ§κ³ μμ μ μμ΅λλ€.
κ·Έλ¦¬κ³ μ΄λ€μ μ¨κΈΈ μ μμ΅λλ€.
μ΄λ¬ν κ°λ λ€μ public / private μ κ·Ό μ νλ€ κ΅¬νλ©λλ€.
Classμ κΆκ·Ήμ μΈ λͺ©νλ
λ¬Έμ ν΄κ²°μ μ¬μ©λλ well-defined public interfacteλ₯Ό ꡬννλ κ² μ λλ€.
vectorκ³Ό stringλ μ¬μ€μ C++ standard libraryμ ν¬ν¨λ ν΄λμ€λ€μ λλ€.
Object | κ°μ²΄
κ°μ²΄λ ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ νΉμ μΈμ€ν΄μ€λ₯Ό λνλ
λλ€.
μλ₯Ό λ€μ΄ μν κ³μ’ classλ₯Ό ν΅ν΄μ μ μν κ³μ’ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό λ§λ€μ΄λΌ μ μμ΅λλ€.
ν΄λΉ κ³μ’λ μ κ°μΈ μ 보, κ³μ’ λ²νΈμ κ°μ κ°μ΄λ μ κΈ μΆκΈκ³Ό κ°μ κΈ°λ₯μ μννλ λ©μλλ‘ μ΄λ£¨μ΄μ‘κ² μ£ ?
μ°λ¦¬λ νλμ ν΄λμ€λ₯Ό ν΅ν΄ μλ§μ λ€λ₯Έ κ°μ²΄λ€μ λ§λ€ μ μμ΅λλ€.
Basic Syntax
ν΄λμ€μ μ μΈ syntaxλ λ€μκ³Ό κ°μ΅λλ€.
class Class_Name
{
// declaration(s);
};
* ν΄λμ€μ 첫 κΈμλ λλ¬Έμλ‘ μ μΈνλ κ²μ΄ κ΄λ‘μ λλ€.
κ°μ²΄κΉμ§ μ°κ²°λ μμλ₯Ό μ΄ν΄λ³ΌκΉμ?
κ²μμ νλ μ΄μ΄ ν΄λμ€λ₯Ό νλ² μ΄ν΄λ΄ μλ€.
class Player
{
// attributes (μμ±)
std::string name;
int health;
int xp;
// methods (λ©μλ)
void talk(std::string text_to_say);
bool is_dead();
};
// Object
Player hero;
Player villain;
Player *enemy = new Player();
delete enemy;
nameμ΄λΌλ μ΄λ¦μ λ΄μ κ²μΌλ‘ μΆμ λλ λ¬Έμμ΄ μμ±,
체λ ₯κ³Ό κ²½νμΉλ‘ μΆμ λλ μ μ health, xp μμ±μ΄ νμΈλ©λλ€.
λν λ©μλλ‘λ λ¬Έμμ΄μ μ λ ₯λ°μ 무μΈκ°λ₯Ό μννλ talk λ©μλμ,
boolean κ°μ λ°ννλ is_dead λ©μλκ° μ‘΄μ¬νλ€μ.
μ΄λ₯Ό νμ©νμ¬ heroμ villain κ°μ²΄κ° μ μΈλμμ΅λλ€.
λν λμ μΌλ‘ ν λΉλ νλ μ΄μ΄μ λν ν¬μΈν° enemyλ μ‘΄μ¬νλ€μ.
ν΄λμ€μ μμ±κ³Ό λ©μλμ μ κ·Όνλ λ°©λ²μ λ€μ ν¬μ€νΈμμ μ΄ν΄λ³΄κ² μ΅λλ€ π