Home
>
CS
>
2024
>
πΎ [CS] μΆμν(Abstraction)
CS
πΎ [CS] μΆμν(Abstraction).
1οΈβ£ μΆμν(Abstraction).
-
μΆμν(Abstraction) λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented-Programming, OOP)μ μ€μν κ°λ
μ€ νλλ‘, 볡μ‘ν μμ€ν
μμ ν΅μ¬μ μΈ κ°λ
μ΄λ κΈ°λ₯λ§μ μΆλ €λ΄μ΄ λ¨μννλ κ³Όμ μ
λλ€.
- μ΄λ₯Ό ν΅ν΄ λΆνμν μΈλΆ μ¬νμ κ°μΆκ³ , μ€μν μμ±μ΄λ νμλ§μ λ
ΈμΆνμ¬ μμ€ν
μ λ³΄λ€ κ°λ¨νκ² μ΄ν΄νκ³ μ¬μ©ν μ μκ² ν©λλ€.
1οΈβ£ μΆμνμ ν΅μ¬ κ°λ
.
-
1. λ³Έμ§μ μΈ κ²λ§ λ
ΈμΆ.
- μμ€ν
μ 볡μ‘ν λ΄λΆ ꡬνμ μ¨κΈ°κ³ , μΈλΆμμλ μ€μν κΈ°λ₯μ΄λ μμ±λ§μ μ¬μ©ν μ μλλ‘ μ€κ³ν©λλ€.
- μλ₯Ό λ€μ΄, μλμ°¨λ₯Ό μ΄μ ν λ μ΄μ μλ μμ§μ μλ μ리λ λ΄λΆ ꡬ쑰λ₯Ό λͺ°λΌλ, μ΄μ λ, κ°μ νλ¬, λΈλ μ΄ν¬ λ±μ μ€μν μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μλμ°¨λ₯Ό μ‘°μν μ μμ΅λλ€.
-
2. 볡μ‘μ± κ°μ.
- μΆμνλ₯Ό ν΅ν΄ μ¬μ©μμκ² λ³΅μ‘ν μμ€ν
μ λ¨μνκ² λ³΄μ΄λλ‘ νμ¬, μ¬μ©μκ° μμ€ν
μ μ½κ² μ΄ν΄νκ³ μ¬μ©ν μ μκ² ν©λλ€.
- μ΄λ νΉν ν° μμ€ν
μ΄λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€κ³ν λ μ€μν©λλ€.
-
3. μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μμ± ν₯μ.
- μΆμνλ₯Ό μ¬μ©νλ©΄, μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ μ μ§λ³΄μμ±μ ν₯μμν¬ μ μμ΅λλ€.
- λμΌν μΆμ μΈν°νμ΄μ€λ₯Ό ꡬννλ μ¬λ¬ ν΄λμ€κ° μμ λ, ꡬ체μ μΈ ν΄λμ€ κ΅¬νμ μ κ²½ μ°μ§ μκ³ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μΌκ΄λ λ°©μμΌλ‘ μ½λλ₯Ό μ¬μ©ν μ μμ΅λλ€.
2οΈβ£ μΆμνμ μ
- μΆμνλ μ£Όλ‘ μΆμ ν΄λμ€μ μΈν°νμ΄μ€ λ₯Ό ν΅ν΄ ꡬνλ©λλ€.
μΆμ ν΄λμ€.
- μΆμ ν΄λμ€λ νλ μ΄μμ μΆμ λ©μλλ₯Ό μ΄ν¨νλ ν΄λμ€μ
λλ€.
- μΆμ λ©μλλ μ μΈλ§ λμ΄ μκ³ , ꡬ체μ μΈ κ΅¬νμ ν΄λΉ ν΄λμ€λ₯Ό μμλ°λ νμ ν΄λμ€μμ μ 곡ν΄μΌ ν©λλ€.
abstract class Animal {
abstract void sound(); // μΆμ λ©μλ
void breathe() { // ꡬ체μ μΈ λ©μλ
System.out.println("Breathing");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Woof");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Meow");
}
}
- μ΄ μμμ
Animal
ν΄λμ€λ μΆμ ν΄λμ€μ΄κ³ , sound()
λ©μλλ μΆμ λ©μλμ
λλ€.
-
Dog
μ Cat
ν΄λμ€λ sound()
λ©μλλ₯Ό ꡬ체μ μΌλ‘ ꡬνν©λλ€.
-
Animal
ν΄λμ€λ λλ¬Όμ μΌλ°μ μΈ νΉμ§μΈ breath()
λ©μλλ₯Ό ν¬ν¨νμ§λ§, sound()
λ λλ¬Όλ§λ€ λ€λ₯΄λ―λ‘ νμ ν΄λμ€μμ ꡬ체νλ©λλ€.
μΈν°νμ΄μ€
- μΈν°νμ΄μ€λ μΆμνμ λ λ€λ₯Έ ννλ‘, ν΄λμ€κ° ꡬνν΄μΌ νλ λ©μλμ μ μΈμ ν¬ν¨ν©λλ€.
- μΈν°νμ΄μ€ μ체λ ꡬνμ κ°μ§μ§ μμΌλ©°, ꡬνμ μ΄λ₯Ό ꡬννλ ν΄λμ€μμ μ 곡λ©λλ€.
interface Flyable {
void fly(); // μΆμ λ©μλ
}
class Bird implements Flyable {
@Override
public void fly() {
System.out.println("Bird is flying");
}
}
class Airplane implements Flyable {
@Override
public void fly() {
System.out.println("Airplane is flying");
}
}
- μ¬κΈ°μ
Flyable
μΈν°νμ΄μ€λ fly()
λΌλ μΆμ λ©μλλ₯Ό μ μΈνκ³ μμΌλ©°, Bird
μ Airplane
ν΄λμ€λ κ°κ° μ΄ λ©μλλ₯Ό ꡬνν©λλ€.
-
Flyable
μΈν°νμ΄μ€λ₯Ό ν΅ν΄, λΉνν μ μλ κ°μ²΄λ€μ λμΌν λ°©μμΌλ‘ μ·¨κΈλ μ μμ΅λλ€.
3οΈβ£ μΆμνμ μ₯μ .
-
1. μ½λμ κ°κ²°μ±.
- μ€μν λΆλΆλ§ λ¨κΈ°κ³ 볡μ‘ν ꡬν μΈλΆ μ¬νμ μ¨κ²¨, μ½λλ₯Ό κ°κ²°νκ³ μ΄ν΄νκΈ° μ½κ² λ§λλλ€.
-
2. μ μ°ν μ€κ³.
- ꡬ체μ μΈ κ΅¬νμ μμ‘΄νμ§ μκΈ° λλ¬Έμ, λ€μν ꡬν체λ₯Ό μ½κ² κ΅μ²΄νκ±°λ νμ₯ν μ μμ΅λλ€.
-
3. μ¬μ¬μ©μ± μ¦κ°.
- μΆμ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μ¬λ¬ ν΄λμ€μμ 곡ν΅μ μΌλ‘ μ¬μ©λ μ μλ ꡬ쑰λ₯Ό λ§λ€ μ μμ΅λλ€.
4οΈβ£ μμ½.
- μΆμνλ 볡μ‘ν μμ€ν
μμ λΆνμν μΈλΆ μ¬νμ κ°μΆκ³ μ€μν λΆλΆλ§μ λ
ΈμΆνμ¬ μμ€ν
μ κ°λ¨νκ² λ§λλ κ°λ
μ
λλ€.
- μ΄λ₯Ό ν΅ν΄ μ½λμ 볡μ‘μ±μ μ€μ΄κ³ , μ μ°μ±κ³Ό μ¬μ¬μ©μ±μ λμ΄λ©°, μ μ§λ³΄μλ₯Ό μ©μ΄νκ² ν μ μμ΅λλ€.
- μΆμνλ μ£Όλ‘ μΆμ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ ꡬνλ©λλ€.