๋ฐ์ํ
โ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (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): ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํํ๋ ๋ฉ์๋. ํด๋์ค์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๋ฉฐ ๋ฐํ ํ์
์ด ์์.
๋ฐ์ํ