๐ŸŸช Backend-Java

10. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐOOP,ํด๋ž˜์Šค์˜ ๊ตฌ์„ฑ์š”์†Œ, ์ธ์Šคํ„ด์Šค / ์ •์ ๋ฉค๋ฒ„, ์ƒ์„ฑ์ž์— ๋Œ€ํ•˜์—ฌ ์š”์•ฝ์ •๋ฆฌ

ramen2 2024. 7. 11. 21:59
๋ฐ˜์‘ํ˜•

โœ…  ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„. OOP์˜ ํ•ต์‹ฌ ๊ฐœ๋…์€ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

[OOPํŠน์ง•]

  • ํด๋ž˜์Šค: ๊ฐ์ฒด์˜ ์„ค๊ณ„๋„. ๊ฐ์ฒด์˜ ์†์„ฑ(๋ฐ์ดํ„ฐ)๊ณผ ๋ฉ”์„œ๋“œ(๋™์ž‘)๋ฅผ ์ •์˜ํ•จ.
  • ๊ฐ์ฒด: ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค. ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.
  • ์ƒ์†: ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•.
  • ๋‹คํ˜•์„ฑ: ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ.
  • ์บก์Šํ™”: ๋ฐ์ดํ„ฐ๋ฅผ ์€๋‹‰ํ•˜์—ฌ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

โœ…  ํด๋ž˜์Šค 

  • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ํ‹€. ํด๋ž˜์Šค๋Š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ์ •์˜.
public class Dog {
    // ํด๋ž˜์Šค ์†์„ฑ (์ •์  ๋ฉค๋ฒ„)
    public static String species = "Canis familiaris";

    // ์ธ์Šคํ„ด์Šค ์†์„ฑ (์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„)
    private String name;
    private int age;

    // ์ƒ์„ฑ์ž (constructor)
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
    public String description() {
        return name + " is " + age + " years old";
    }

    // ์ •์  ๋ฉ”์„œ๋“œ
    public static String bark() {
        return "Woof!";
    }
}

 

 

โœ…  ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„

  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค์˜ ๊ฐ ์ธ์Šคํ„ด์Šค์— ์†ํ•˜๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ. ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•จ.
  • ๊ฐ์ฒด๋งˆ๋‹ค ๋ณ„๋„๋กœ ์กด์žฌํ•˜๋Š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ.
  • this ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•จ.
public class Main {
    public static void main(String[] args) {
        // Dog ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
        Dog dog1 = new Dog("Buddy", 3);
        Dog dog2 = new Dog("Lucy", 4);

        // ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ ‘๊ทผ
        System.out.println(dog1.name);  // ์ถœ๋ ฅ: Buddy
        System.out.println(dog2.age);   // ์ถœ๋ ฅ: 4
        System.out.println(dog1.description());  // ์ถœ๋ ฅ: Buddy is 3 years old
    }
}

 

 

โœ…  ์ •์  ๋ฉค๋ฒ„

  • ์ •์  ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ. ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ.
  • static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•จ.
  • this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ.
public class Main {
    public static void main(String[] args) {
        // ์ •์  ๋ฉค๋ฒ„ ์ ‘๊ทผ
        System.out.println(Dog.species);  // ์ถœ๋ ฅ: Canis familiaris
        System.out.println(Dog.bark());   // ์ถœ๋ ฅ: Woof!
    }
}


โœ… 
์ƒ์„ฑ์ž (Constructor)

  • ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฉ”์„œ๋“œ. ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์Œ
  • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ.
  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋ฅผ ์ดˆ๊ธฐํ™”ํ•จ.
public class Dog {
    private String name;
    private int age;

    // ์ƒ์„ฑ์ž (Constructor)
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // ๊ธฐํƒ€ ๋ฉ”์„œ๋“œ...
}

// ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋จ
Dog dog1 = new Dog("Buddy", 3);
Dog dog2 = new Dog("Lucy", 4);

// ์ดˆ๊ธฐํ™”๋œ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํ™•์ธ
System.out.println(dog1.name);  // ์ถœ๋ ฅ: Buddy
System.out.println(dog2.age);   // ์ถœ๋ ฅ: 4

 

 

โœ๏ธ  ํŠน์ง• ํ•œ ์ค„ ์ •๋ฆฌ

 

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP): ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋ธ๋งํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„.
  • ํด๋ž˜์Šค: ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ์„ค๊ณ„๋„. ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•จ.
  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„: ๊ฐ ๊ฐ์ฒด์— ์†ํ•˜๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ. ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™”๋จ. this ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•จ.
  • ์ •์  ๋ฉค๋ฒ„: ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ. ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•จ. static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋จ.
  • ์ƒ์„ฑ์ž (Constructor): ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฉ”์„œ๋“œ. ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์Œ.

 

 

๋ฐ˜์‘ํ˜•