BuNa_
IT Story
BuNa_
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (117)
    • CS (14)
      • ์šด์˜์ฒด์ œ (8)
      • ๋„คํŠธ์›Œํฌ (0)
      • Design Pattern (1)
      • OOP (4)
    • ๋Œ€์™ธํ™œ๋™ (24)
      • ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค (14)
      • DND ๋™์•„๋ฆฌ (4)
      • UMC ๋™์•„๋ฆฌ (5)
      • ํ•ด์ปคํ†ค (1)
    • Android (29)
      • MVVM (2)
      • ์Šคํ„ฐ๋”” (11)
      • Compose (3)
      • Unit Test (1)
    • Project (5)
      • ์–ด๋”ฐ์„ธ์›Œ (5)
      • DnD ๊ณผ์™ธ ์„œ๋น„์Šค (0)
    • Programming (11)
      • Kotlin (4)
      • ํŒŒ์ด์ฌ (7)
    • Git (1)
    • ์ธ๊ณต์ง€๋Šฅ (22)
    • ๋ฐฑ์ค€ (8)
    • ๊ธฐํƒ€ (3)
      • IntelliJ (1)
      • ์ผ์ƒ (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Baekjoon
  • ViewModel
  • K-means
  • RecyclerView
  • UMC
  • ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค
  • ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ
  • ์šฐํ…Œ์ฝ”
  • MVVM
  • ์ปด๊ณต์„ ๋ฐฐ
  • ํŒŒ์ด์ฌ
  • ์•ˆ๋“œ๋กœ์ด๋“œ
  • ๋ฐฑ์ค€
  • ์šฐํ…Œ์ฝ” 5๊ธฐ
  • Android
  • ๋”ฅ๋Ÿฌ๋‹
  • External fragmentation
  • ์™ธ๋ถ€ ๋‹จํŽธํ™”
  • Ai
  • ์ธ๊ณต์ง€๋Šฅ ๋ถ„๋ฅ˜
  • ์›์‹œ๊ฐ’ ํฌ์žฅ
  • Compose
  • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ์–ด๋”ฐ์„ธ์›Œ
  • ์šด์˜์ฒด์ œ
  • ์…€๋ ˆ๋‹ˆ์›€
  • ์„ ํ˜•ํšŒ๊ท€
  • k-means++
  • ์šฐํ…Œ์ฝ” ํ”„๋ฆฌ์ฝ”์Šค
  • ์ธ๊ณต์ง€๋Šฅ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
BuNa_

IT Story

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์บก์Аํ™”(Encapsulation) ์ด๋ž€?
CS/OOP

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์บก์Аํ™”(Encapsulation) ์ด๋ž€?

2022. 10. 20. 00:54

 ๐Ÿ‘€โ€‹   Study Goal

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์บก์Аํ™” ๊ฐœ๋…์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ์บก์Аํ™”์˜ ํ•„์š”์„ฑ์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.
  • ์บก์Аํ™”๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ๋ก€๋ฅผ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค.

 

โœ๏ธ   ์บก์Аํ™”(Encapsulation) ๋ž€?

์บก์Аํ™”(Encapsulation)๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ๊ฐ์ถ”๊ณ , ํ•„๋“œ(field)์™€ ๋ฉ”์„œ๋“œ(method)์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰๋Š” OOP ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.



๐Ÿ’ก  ์บก์Аํ™”(Encapsulation)์˜ ๋‘ ๊ฐ€์ง€ ์ธก๋ฉด

 

์บก์Аํ™”(Encapsulation)์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ์ธก๋ฉด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํ•„๋“œ(field)์™€ ๋ฉ”์„œ๋“œ(method)์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰์Šต๋‹ˆ๋‹ค.
2. ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„ ๋‚ด์šฉ์„ ๊ฐ์ถฅ๋‹ˆ๋‹ค.

 

๋จผ์ €, ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰์•„์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ฒŒ์ž„ ํšŒ์‚ฌ์— ๋‹ค๋‹ˆ๋Š” ๊ฐœ๋ฐœ์ž A์”จ๋Š” ์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด ํšŒ์‚ฌ์— ์ถœ๊ทผํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ถœ๊ทผ ๋„์žฅ์„ ์ฐ์ž๋งˆ์ž ์ปดํ“จํ„ฐ๋ฅผ ํ‚จ A์”จ๋Š” ํฌ๊ฒŒ ๋‹นํ™ฉํ•˜์˜€๊ณ , ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž B์”จ์—๊ฒŒ ์—ฐ๋ฝํ•ฉ๋‹ˆ๋‹ค.

 

 

A์”จ  ํ˜น์‹œ ์–ด์ œ ์ œ๊ฐ€ ๋งŒ๋“  Class์—์„œ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์ด ์žˆ๋‚˜์š”?
B์”จ  ์•„๋‹ˆ์š”! ์ œ๊ณตํ•ด์ฃผ์‹  ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ–ˆ์„ ๋ฟ, A์”จ๊ฐ€ ์ œ๊ณตํ•ด์ฃผ์‹  ์ฝ”๋“œ๋Š” ์ „ํ˜€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

 

A์”จ๊ฐ€ ๊ฐœ๋ฐœํ•œ ์Šฌ๋ผ์ž„ ๋ชฌ์Šคํ„ฐ Class์—์„œ ๋ฌด์–ธ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋“ฏํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์—์„œ ํŒ€์›๋“ค๊ณผ ๋ฌธ์ œ์ ์„ ํŒŒ์•…ํ•˜๊ณ ์ž ์Šฌ๋ผ์ž„ Class๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

public class Slime {
    public String name; // ๋ชฌ์Šคํ„ฐ ์ด๋ฆ„
    public int hp; // ๋ชฌ์Šคํ„ฐ์˜ ์ฒด๋ ฅ
    public int attackDamage; // ๊ณต๊ฒฉ๋ ฅ
    public int speed; // ๋ชฌ์Šคํ„ฐ์˜ ์†๋„

    public Slime() {
        this.name = "ํ™”๊ฐ€ ๋‚œ ์Šฌ๋ผ์ž„";
        this.hp = 100;
        this.attackDamage = 10;
        this.speed = 10;
    }

    // ์Šฌ๋ผ์ž„์ด ์‚ฌ์šฉ์ž๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๋ฉ”์„œ๋“œ
    public void attack() {
        System.out.println("์Šฌ๋ผ์ž„์ด ๊ณต๊ฒฉํ•˜์˜€์Šต๋‹ˆ๋‹ค!\n" +
                "์ฒด๋ ฅ์ด " + attackDamage + " ๋งŒํผ ๊ฐ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค!");
    }

    /*
    * Slime field ์˜ getter & setter
    */
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getAttackDamage() {
        return attackDamage;
    }

    public void setAttackDamage(int attackDamage) {
        this.attackDamage = attackDamage;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }
}

 

์ฝ”๋“œ๊ฐ€ ๋‹ค์†Œ ๊ธธ์–ด ๋ณด์ด์ง€๋งŒ, ์Šฌ๋ผ์ž„ class๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ•„๋“œ(field) : '์ด๋ฆ„(name)', '์ฒด๋ ฅ(hp)', '๊ณต๊ฒฉ๋ ฅ(attackDamage)', '์ด๋™์†๋„(speed)'
๋ฉ”์„œ๋“œ(method) : attack(), getter() & setter() 

 

์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด, ํ•„๋“œ๊ฐ€ ์™ธ๋ถ€์—์„œ ๋งˆ๊ตฌ์žก์ด๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก public์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž B์”จ๋Š” ์Šฌ๋ผ์ž„์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“์€ ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฐ’(field)์„ ํ•จ๋ถ€๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ’ก  ์บก์Аํ™”(Encapsulation)๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ๋ฌธ์ œ์ 

 

์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ Class์˜ ์บก์Аํ™”๋ฅผ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

  • ํ•„๋“œ(field)์™€ ๋ฉ”์„œ๋“œ(method)์˜ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜ ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Client๊ฐ€ ์™ธ๋ถ€์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, '์ ‘๊ทผํ•ด๋„ ๋˜๋Š” ์ •๋ณด'์™€ '์ ‘๊ทผํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์ •๋ณด' ๋ฅผ ์ง์ ‘ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • Client๋Š” ๊ตณ์ด ๋ณต์žกํ•œ ๋‚ด๋ถ€ ๋กœ์ง์„ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (๋•Œ๋กœ๋Š” ๋ณต์žกํ•œ ๋กœ์ง์˜ ๊ณต๊ฐœ๊ฐ€ ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.)
  • Class์˜ ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„์™€ ์˜์กด๋„๊ฐ€ ๋†’์•„์ง€๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ์•…ํ™”์‹œํ‚ต๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์บก์Аํ™”(Encapsulation)๋ฅผ ์ ์šฉํ•œ ์ฝ”๋“œ

 

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์ข‹์„๊นŒ์š”?

 

์บก์Аํ™”๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ํƒ€์ž…์ด ์žˆ๋‹ค๊ณ  ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

1. ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํ•„๋“œ(field)์™€ ๋ฉ”์„œ๋“œ(method)์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰์Šต๋‹ˆ๋‹ค.
2. ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„ ๋‚ด์šฉ์„ ๊ฐ์ถฅ๋‹ˆ๋‹ค.

 

์œ„ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์บก์Аํ™”๋ฅผ ์ ์šฉํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

public abstract class Monster {
    private String name; // ๋ชฌ์Šคํ„ฐ ์ด๋ฆ„
    private int hp; // ๋ชฌ์Šคํ„ฐ์˜ ์ฒด๋ ฅ
    private int attackDamage; // ๊ณต๊ฒฉ๋ ฅ
    private int speed; // ๋ชฌ์Šคํ„ฐ์˜ ์†๋„

    public Monster(String name, int hp, int attackDamage, int speed) {
        this.name = name;
        this.hp = hp;
        this.attackDamage = attackDamage;
        this.speed = speed;
    }

    abstract void attack(); // ๋ชฌ์Šคํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๋ฉ”์„œ๋“œ

    public String getName() {
        return name;
    }

    public int getHp() {
        return hp;
    }

    public int getAttackDamage() {
        return attackDamage;
    }

    public int getSpeed() {
        return speed;
    }
}

 

์šฐ์„ , ์ถ”์ƒํ™” ๊ฐœ๋…์„ ์ ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ชฌ์Šคํ„ฐ๋“ค์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•(name, hp, attackDamage, speed)๋“ค์„ ํ•˜๋‚˜์˜ Monster๋ผ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

public class Slime extends Monster {

    public Slime() {
        super("ํ™”๊ฐ€ ๋‚œ ์Šฌ๋ผ์ž„", 100, 10, 10);
    }

    // ์Šฌ๋ผ์ž„์ด ์‚ฌ์šฉ์ž๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๋ฉ”์„œ๋“œ
    @Override
    public void attack() {
        System.out.println("์Šฌ๋ผ์ž„์ด ๊ณต๊ฒฉํ•˜์˜€์Šต๋‹ˆ๋‹ค!\n" +
                "์ฒด๋ ฅ์ด " + getAttackDamage() + " ๋งŒํผ ๊ฐ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค!");
    }
}

 

Monster๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•œ ์Šฌ๋ผ์ž„์˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

์ด์ œ Slime์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•  ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

// Before
Slime angrySlime = new Slime();
angrySlime.setAttackDamage(100000);
angrySlime.setHp(0);

// After
Monster angrySlime = new Slime();
angrySlime.setAttackDamage(100000); // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ!!
angrySlime.setHp(0); // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ!!

 

์ด์ œ, ์Šฌ๋ผ์ž„ Class๋ฅผ ์บก์Аํ™”ํ•˜์—ฌ ๊ฐ’์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Client๋Š” Slime์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋กœ์ง์„ ์•Œ ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๊ณ , ๋‹จ์ˆœํžˆ ๊ณต๊ฒฉ(attack)ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

โญ  ๊ฒฐ๋ก 

 

์บก์Аํ™”(Encapsulation)๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ

  • ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์˜ ์ •๋ณด(field, method)์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€์— ํด๋ž˜์Šค์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„ ๋กœ์ง์„ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ, ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

github : https://github.com/tmdgh1592

 

tmdgh1592 - Overview

๋А๋ฆฌ๋”๋ผ๋„ ์ฒœ์ฒœํžˆ..!! ๐Ÿ˜. tmdgh1592 has 21 repositories available. Follow their code on GitHub.

github.com

 

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS > OOP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Programming] ์›์‹œ๊ฐ’๊ณผ ์ปฌ๋ ‰์…˜์„ ํฌ์žฅํ•ด์•ผ ํ•˜๋Š” ์ด์œ  - ๋ž˜ํผ ํด๋ž˜์Šค, ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(Wrapper class, First-class Collection)  (2) 2023.02.17
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์ƒ์†(Inheritance) ์ด๋ž€?  (1) 2022.11.01
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์ถ”์ƒํ™”(Abstraction) ์ด๋ž€?  (2) 2022.10.17
    'CS/OOP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Programming] ์›์‹œ๊ฐ’๊ณผ ์ปฌ๋ ‰์…˜์„ ํฌ์žฅํ•ด์•ผ ํ•˜๋Š” ์ด์œ  - ๋ž˜ํผ ํด๋ž˜์Šค, ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(Wrapper class, First-class Collection)
    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์ƒ์†(Inheritance) ์ด๋ž€?
    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - OOP ์ถ”์ƒํ™”(Abstraction) ์ด๋ž€?
    BuNa_
    BuNa_
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ํ–ฅํ•ด ๋‹ฌ๋ฆฌ๊ณ  ์žˆ๋Š” ๊ณต๋Œ€์ƒ์ž…๋‹ˆ๋‹ค! ๐Ÿง‘ Android, Kotlin, Java, Python ๋“ฑ ํ•™์Šตํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ๊ณผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฃผ๋กœ ์—…๋กœ๋“œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์ ๊ณผ ์กฐ์–ธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค!๐Ÿ˜Š github : https://github.com/tmdgh1592

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”