์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[30] 230209 Java Ch. 6 ํด๋์ค: 1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ [K-๋์งํธ ํธ๋ ์ด๋ 30์ผ] ๋ณธ๋ฌธ
[30] 230209 Java Ch. 6 ํด๋์ค: 1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ [K-๋์งํธ ํธ๋ ์ด๋ 30์ผ]
yjyuwisely 2023. 2. 9. 12:50230209 Thu 30th class
Ch. 6 ํด๋์ค
์ง๋: p. 224 ~ (๊ต์ฌ: ํผ์ ๊ณต๋ถํ๋ ์๋ฐ, ์ ์: ์ ์ฉ๊ถ)
ํผ์ ๊ณต๋ถํ๋ ์๋ฐ
๋ ํ์ผ๋ก ์๋ฐ๋ฅผ ๋ฐฐ์ฐ๋ ์ ๋ฌธ์๊ฐ ‘๊ผญ ํ์ํ ๋ด์ฉ์ ์ ๋๋ก’ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑํ๋ค. ‘๋ฌด์์’ ‘์ด๋ป๊ฒ’ ํ์ตํด์ผ ํ ์ง ์กฐ์ฐจ ๋ชจ๋ฅด๋ ์ ๋ฌธ์์ ๋ง์ฐํ ๋ง์์ ์ดํด, ๊ณผ์ธ ์ ์๋์ด
www.aladin.co.kr
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
์ง๋ ์์ ๋ ๋ฐฐ์ด ๊ฒ ์ค ๋ค์ ๊ธฐ์ตํ ๊ฒ
์์ฑ์(constructor): new ์ฐ์ฐ์๋ก ํธ์ถ๋๋ ํน๋ณํ ์ค๊ดํธ ๋ธ๋ก.
๊ฐ์ฒด ์์ฑ ์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ์ญํ ์ ํ๋ค.
๋ฉ์๋์ ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง, ํด๋์ค ์ด๋ฆ์ผ๋ก ๋์ด ์๊ณ ๋ฐํํ์ด ์๋ค.
๊ฐ์ฒด ์ด๊ธฐํ๋ ํ๋๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋, ๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๋ ๊ฒ์ ๋งํ๋ค.
Ch. 6 ํด๋์ค p. 212
์ฑ ์ ๋ชฉ์ฐจ
06-1 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
06-2 ํ๋
06-3 ์์ฑ์
06-4 ๋ฉ์๋
06-5 ์ธ์คํด์ค ๋ฉค๋ฒ์ ์ ์ ๋ฉค๋ฒ
06-6 ํจํค์ง์ ์ ๊ทผ ์ ํ์
6.1 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OPP: Object-Oriented Programming): ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋์๋ ๋ถํ์ ํด๋นํ๋ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ฅผ ํ๋์ฉ ์กฐ๋ฆฝํด์ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ธฐ๋ฒ์ด๋ค.
์๋ฐ๋ ์์ฑ๊ณผ ๋์์ ๊ฐ๊ฐ ํ๋(field)์ ๋ฉ์๋(method)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ฒด ๋ชจ๋ธ๋ง(object modeling): ํ์ค ์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ์ํํธ์จ์ด ๊ฐ์ฒด๋ก ์ค๊ณํ๋ ๊ฒ์ผ๋ก ํ์ค ์ธ๊ณ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋์์ ์ถ๋ ค๋ด์ด ์ํํธ์จ์ด ๊ฐ์ฒด์ ํ๋์ ๋ฉ์๋๋ก ์ ์ํ๋ ๊ณผ์ ์ด๋ค.
ํ์ด์ด - class
์์ฑ - ๋ณ์
ํ์ด์ด์ ๋์ด, ๋์ด, ๊ณต๊ธฐ์
๊ธฐ๋ฅ - ํจ์ / ๋ฉ์๋
์๋์ฐจ ํ์ค์ ์งํฑํ๋ ๊ธฐ๋ฅ ๋ฑ
ํ์๊ฐ์
์์ฑ:
String id;//์์ด๋,
String password;//๋น๋ฐ๋ฒํธ,
๋น๋ฐ๋ฒํธ ์ฌํ์ธ,
String name;//์ด๋ฆ,
์๋ ์์ผ,
String gender;//์ฑ๋ณ,
String email;//๋ณธ์ธ ํ์ธ ์ด๋ฉ์ผ,
String phone;//ํด๋์ ํ
๋์: ๋ก๊ทธ์ธ, ํ์๊ฐ์ , ํํด, ํ์์ ๋ณด์์
๊ฒ์ํ
์์ฑ:
String title;//์ ๋ชฉ
String content;//๋ด์ฉ
String writer;//์์ฑ์
String regdate;//์์ฑ์ผ
int cnt;//์กฐํ
int good;//์ข์์
๊ธฐ๋ฅ:
๊ฒ์ํ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ
๊ฒ์ํ ๊ธ์์ ๊ธฐ๋ฅ
๊ฒ์ํ ๊ธ์ญ์ ๊ธฐ๋ฅ
๊ฒ์ํ ๋ชฉ๋ก๋ฆฌ์คํธ ๋ณด์ฌ์ฃผ๊ธฐ ๊ธฐ๋ฅ
๊ฒ์ํ ์์ธ๋ด์ฉ ๋ณด์ฌ์ฃผ๊ธฐ ๊ธฐ๋ฅ
6.1.1 ๊ฐ์ฒด์ ์ํธ์์ฉ p. 213
์ํํธ์จ์ด์์ ๊ฐ์ฒด๋ค์ ๊ฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๊ณ , ๋ค๋ฅธ ๊ฐ์ฒด์ ์๋ก ์ํธ์์ฉํ๋ฉด์ ๋์ํ๋ค.
๊ฐ์ฒด๋ค ์ฌ์ด์ ์ํธ์์ฉ ์๋จ์ ๋ฉ์๋์ด๋ค.
์ด๋ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ฉ์๋ ํธ์ถ(๊ฐ์ฒด์ ์ํธ์์ฉ)์ด๋ค.
๋ฆฌํด๊ฐ = ์ ์๊ณ์ฐ๊ธฐ๊ฐ์ฒด.๋ฉ์๋(๋งค๊ฐ๊ฐ1, ๋งค๊ฐ๊ฐ2, ...);
int result = Calculator.add(10, 20);//๋ฆฌํด ๊ฐ์ int ๋ณ์์ ์ ์ฅํ๋ค.
๋ํธ ์ฐ์ฐ์๋ ๊ฐ์ฒด์ ํ๋์ ๋ฉ์๋์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ค.
๋ฆฌํด๊ฐ์ ๋ฉ์๋๊ฐ ์คํ๋๊ณ ๋ ํ ํธ์ถํ ๊ณณ์ผ๋ก ๋๋ ค์ฃผ๋(๋ฆฌํดํ๋) ๊ฐ์ด๋ค.
๊ฐ์ฒด์ ์ํธ์์ฉ์ ๊ฐ์ฒด ๊ฐ์ ๋ฉ์๋ ํธ์ถ์ ์๋ฏธํ๋ฉฐ, ๋งค๊ฐ๊ฐ๊ณผ ๋ฆฌํด๊ฐ์ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
6.1.2 ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ
- ์งํฉ (ํฌํจ) ๊ด๊ณ: ํ๋๋ ๋ถํ์ด๊ณ ํ๋๋ ์์ฑํ์ด๋ค.
ex) ๋ถํ(์์ง, ํ์ด์ด, ํธ๋ค) → ์๋์ฐจ
- ์ฌ์ฉ ๊ด๊ณ: ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ผ๋ก ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ธ๋ค.
ex) ์ฌ๋ → ์๋์ฐจ: ์ฌ๋์ ์๋์ฐจ๋ฅผ ์ฌ์ฉํ ๋ ๋ฌ๋ฆฐ๋ค, ๋ฉ์ถ๋ค ๋ฑ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- ์์ ๊ด๊ณ: ์์(๋ถ๋ชจ) ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์(์์) ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์์ ๊ฐ์ฒด๋ ์ข
๋ฅ๋ฅผ ์๋ฏธํ๊ณ , ํ์ ๊ฐ์ฒด๋ ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ์ ํด๋นํ๋ค.
ex) ๊ธฐ๊ณ (์์) ← ์๋์ฐจ (ํ์): ์๋์ฐจ๋ ๊ธฐ๊ณ์ ํ ์ข
๋ฅ์ด๋ค.
๋ถ๋ชจ ๊ฐ์ฒด, ์์ ๊ฐ์ฒด
ํค์๋: extend (์์ ๊ฐ์ฒด๊ฐ (๊ธฐ๋ฅ์) ํ์ฅํ๋ค. ex) ํ์ค ๊ณ์ฐ๊ธฐ - ๊ณตํ์ฉ ๊ณ์ฐ๊ธฐ)
p. 310์์ ๋ฐฐ์ธ ์์ ์ด๋ค.
์ฐธ๊ณ : ๊ฐ์ฒด-์งํฅ-ํ๋ก๊ทธ๋๋ฐ-ํน์ง
6.1.3 ๊ฐ์ฒด์ ํด๋์ค
๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ์ฐ์ ์ค๊ณ๋๋ก ํด๋น ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์์
์ด ํ์ํ๋ค.
์๋ฐ์์๋ ์ค๊ณ๋๊ฐ ํด๋์ค(class)์ด๋ค. ํด๋์ค์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๋์ ๋ฉ์๋๊ฐ ์ ์๋์ด ์๋ค.
ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ํด๋น ํด๋์ค์ ์ธ์คํด์ค(instance)๋ผ๊ณ ํ๋ค. ex) ์๋์ฐจ ๊ฐ์ฒด๋ ์๋์ฐจ ํด๋์ค์ ์ธ์คํด์ค์ด๋ค.
์ธ์คํด์คํ: ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์
๊ฐ๋ฐ์ → [์ค๊ณ] → ํด๋์ค(์ค๊ณ๋) → [์ธ์คํด์คํ] → ์ธ์คํด์ค(๊ฐ์ฒด)
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฐ์ ๋จ๊ณ
1) ํด๋์ค๋ฅผ ์ค๊ณํ๋ค.
2) ์ค๊ณ๋ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
3) ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ค.
6.1.4 ํด๋์ค ์ ์ธ p. 217
ํ์ผ๋ช = ํด๋์ค๋ช ์ด๋ค.
์๋ณ์ ์์ฑ ๊ท์น์ ๋ฐ๋ผ ๋ง๋ค์ด์ผ ํ๋ค.
- ํ๋ ์ด์์ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. ex) Car, SportsCar
- ์ฒซ ๊ธ์์๋ ์ซ์๊ฐ ์ฌ ์ ์๋ค. ex) Car, 3Car(x)
- '$', '_' ์ธ์ ํน์ ๋ฌธ์๋ ์ฌ์ฉํ ์ ์๋ค. ex) $Car, _Car, @Car(x), #Car(x)
- ์๋ฐ ํค์๋๋ ์ฌ์ฉํ ์ ์๋ค. ex) int(x), for(x)
public class ํด๋์ค์ด๋ฆ{
}
public class Car{
}
class Tire{
} //2๊ฐ ์ด์์ ํด๋์ค ์ ์ธ๋ ๊ฐ๋ฅํ๋ค.
public class ํค์๋๋ ํด๋์ค๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ฉฐ ๋ฐ๋์ ์๋ฌธ์๋ก ์์ฑํด์ผ ํ๋ค.
2๊ฐ ์ด์์ ํด๋์ค ์ ์ธ์ ํ๊ณ ์์ค ํ์ผ์ ์ปดํ์ผํ๋ฉด ๋ฐ์ดํธ ์ฝ๋ ํ์ผ(.class)๋ ํด๋์ค๋ฅผ ์ ์ธํ ๊ฐ์๋งํผ ์๊ธด๋ค. (Car.class, Tire.class๊ฐ ๊ฐ๊ฐ ์์ฑ๋๋ค.) ๊ฐ๊ธ์ ์ด๋ฉด ์์ค ํ์ผ ํ๋๋น ๋์ผํ ์ด๋ฆ์ ํด๋์ค๋ฅผ ํ๋ ์ ์ธํ๋ ๊ฒ์ด ์ข๋ค.
6.1.5 ๊ฐ์ฒด ์์ฑ๊ณผ ํด๋์ค ๋ณ์ p. 218
ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
public class Car{ //Carํด๋์ค ์ ์ธ
}
//Carํด๋์ค์ ๊ฐ์ฒด ์์ฑ
new Car();
new๋ ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑ์ํค๋ ์ฐ์ฐ์์ด๋ค.(์์ฑ์: ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋๋ง๋ค ์คํ๋๋ ๋ฉ์๋)
new ์ฐ์ฐ์๋ ํ ์์ญ์ ๊ฐ์ฒด๋ฅผ ์์ฑ์ํจ ํ ๊ฐ์ฒด์ ๋ฒ์ง๋ฅผ ๋ฆฌํดํ๋๋ก ๋์ด ์๋ค.
//ํด๋์ค๋ก ์ ์ธ๋ ๋ณ์์ new ์ฐ์ฐ์๊ฐ ๋ฆฌํดํ ๊ฐ์ฒด์ ๋ฒ์ง๋ฅผ ์ ์ฅํ๋ค.
ํด๋์ค ๋ณ์;
๋ณ์ = new ํด๋์ค();
//1๊ฐ์ ์คํ๋ฌธ์ผ๋ก ์์ฑํ ์ ์๋ค.
ํด๋์ค ๋ณ์ = new ํด๋์ค();
Student์ StudentExample ํด๋์ค์ ์ฉ๋ p. 220
์์ 1) Student ํด๋์ค๋ฅผ ์ ์ธํ๊ณ StudentExample ํด๋์ค์ main() ๋ฉ์๋์์ Student ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
package ch06;
//ํด๋์ค ์ ์ธ
public class Student {
}
package ch06;
//main๋ฉ์๋๊ฐ ์๋ ํด๋์ค์ ๊ฐ์ฒด ์์ฑ
public class StudentExample {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("s1 ๋ณ์๊ฐ Student ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.");
Student s2 = new Student();
System.out.println("s2 ๋ณ์๊ฐ Student ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.");
}
}
๊ฒฐ๊ณผ)
s1 ๋ณ์๊ฐ Student ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
s2 ๋ณ์๊ฐ Student ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์์ 2)
public class Car {//Car ํด๋์ค ์ ์ธ
//์์ฑ
//์ฐจ์ ์๊น
String color;
//์๋์ ์ซ์
int speed;
//๊ธฐ๋ฅ
//๋ฌ๋ฆฐ๋ค.
//๋ฉ์ถ๋ค.
}
//main๋ฉ์๋๊ฐ ์๋ ํด๋์ค์์ ๊ฐ์ฒด ์์ฑ
public class CarExample {
public static void main(String[] args) {
// int a = 10
Car c1 = new Car();//Carํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ c1์ฐธ์กฐ๋ณ์์ ์ ์ฅํ๋ค.
Car c2 = new Car();//Carํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ c2์ฐธ์กฐ๋ณ์์ ์ ์ฅํ๋ค.
}
}
๊ฒฐ๊ณผ)
c1 | 0x100 <--- | new Car() | Car |
Carํด๋์ค์ ์๋ก์ด ์ฃผ์ ์์ฑ: 0x100 | color | ||
speed | |||
c2 | 0x200 <--- | new Car() | void run(){} |
Carํด๋์ค์ ์๋ก์ด ์ฃผ์ ์์ฑ: 0x100 | void stop(){} |
6.1.6 ํด๋์ค์ ๊ตฌ์ฑ ๋ฉค๋ฒ
ํด๋์ค ์ ์ธ
public class ํด๋์ค๋ช {
ํ๋ (-> ์ ์ธ)
์์ฑ์
๋ฉ์๋
}
ํด๋์ค ์ ์ธ -> ๊ฐ์ฒด์์ฑ
public static void main(String[] args){
ํด๋์คํ์ (์ฐธ์กฐํ์ ) ์ฐธ์กฐ๋ณ์ = new ํด๋์ค๋ช ()
}
ํด๋์ค์๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ ๊ตฌ์ฑ ๋ฉค๋ฒ๊ฐ ์ ์ธ๋๋ค. ๊ตฌ์ฑ ๋ฉค๋ฒ์๋ ํ๋, ์์ฑ์, ๋ฉ์๋๊ฐ ์๋ค. ์ด ๊ตฌ์ฑ ๋ฉค๋ฒ๋ค์ ์๋ต๋๊ฑฐ๋ ๋ณต์์ ๊ฐ์๋ก ์์ฑ๋ ์ ์๋ค.
ํ๋: ๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ
์์ฑ์: ๊ฐ์ฒด ์์ฑ ์ ์ด๊ธฐํ ์ญํ ๋ด๋น
๋ฉ์๋: ๊ฐ์ฒด์ ๋์์ ํด๋นํ๋ ์คํ ๋ธ๋ก
public class ClassName{
//ํ๋
int fieldname;
//์์ฑ์
ClassName(){...}
//๋ฉ์๋
void methodName(){...}
}
class Car { // ํด๋์ค ์ด๋ฆ
private String modelName; // ํ๋
private int modelYear; // ํ๋
Car(String modelName, int modelYear) { // ์์ฑ์
this.modelName = modelName;
this.modelYear = modelYear;
}
public String getModel() { // ๋ฉ์๋
return this.modelYear + "๋
์ " + this.modelName + " " + this.color;
}
}
์์)
1) ํ๋ (Field)
๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ
ํ๋๋ ์์ฑ์์ ๋ฉ์๋ ์ ์ฒด์์ ์ฌ์ฉ๋๋ฉฐ ๊ฐ์ฒด๊ฐ ์๋ฉธ๋์ง ์๋ ํ ๊ฐ์ฒด์ ํจ๊ป ์กด์ฌํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ญ ๋ณ์์ ๊ฐ๋ค.
ํด๋์ค์ ํ๋(field)๋ ํด๋์ค์ ํฌํจ๋ ๋ณ์(variable)๋ฅผ ์๋ฏธํฉ๋๋ค.
ํด๋์ค ๋ด์์ ํ๋๋ ์ ์ธ๋ ์์น์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถ๋ฉ๋๋ค.
1. ํด๋์ค ๋ณ์(static variable)
2. ์ธ์คํด์ค ๋ณ์(instance variable)
3. ์ง์ญ ๋ณ์(local variable)
2) ์์ฑ์ (Constructor)
์์ฑ์์ ์ญํ ์ ๊ฐ์ฒด ์์ฑ ์ ์ด๊ธฐํ ์ญํ ์ ๋ด๋นํ๋ค.
new ์ฐ์ฐ์๋ก ํธ์ถ๋๋ ํน๋ณํ ์ค๊ดํธ {} ๋ธ๋ก์ด๋ค.
ํ๋๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๋ค.
ํด๋์ค ์ด๋ฆ์ผ๋ก ๋์ด ์๊ณ ๋ฆฌํด ํ์
์ด ์๋ค.
new ์ฐ์ฐ์๋ก ํธ์ถ๋๋ ํน๋ณํ ์ค๊ดํธ ๋ธ๋ก.
๊ฐ์ฒด ์์ฑ ์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ์ญํ ์ ํ๋ค.
๋ฉ์๋์ ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง, ํด๋์ค ์ด๋ฆ์ผ๋ก ๋์ด ์๊ณ ๋ฐํํ์ด ์๋ค.
๊ฐ์ฒด ์ด๊ธฐํ๋ ํ๋๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋, ๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๋ ๊ฒ์ ๋งํ๋ค.
ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ํด๋น ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฆ์ ์์ฑ๋ฉ๋๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์์ฑ๋ ๊ฐ์ฒด๋ ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๊ฐ ์์ง ์ด๊ธฐํ๋์ง ์์ ์ํ์ ๋๋ค.
๋ฐ๋ผ์ ์๋ฐ์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ํ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํํ ์ ์๋ ์์ฑ์(constructor)๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฐ์์ ์์ฑ์(constructor)์ ์ด๋ฆ์ ํด๋น ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ฆ, Car ํด๋์ค์ ์์ฑ์๋ Car()๊ฐ ๋ฉ๋๋ค.
3) ๋ฉ์๋ (Method)
๊ฐ์ฒด์ ๋์์ ํด๋นํ๋ ์คํ ๋ธ๋ก์ด๋ค.
๋ฉ์๋๋ ๊ฐ์ฒด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์๋จ์ด๋ค.
์์ฑ์์ ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง ์์ฑ์๋ ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ฏ๋ก ๊ตฌ๋ถ์ด ๋๋ค.
ํด๋์ค์์ ๋ฉ์๋(method)๋ ์ด๋ ํ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํ ๋ช ๋ น๋ฌธ์ ์งํฉ์ด๋ผ ํ ์ ์์ต๋๋ค.
์ฆ, ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ณต๋๋ ์ฝ๋์ ๋ฐ๋ณต์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ํผํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ํ, ๋ชจ๋ํ๋ก ์ธํด ์ ์ฒด์ ์ธ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ด ํ์ํ ๋๋ ์์ฝ๊ฒ ์ ์ง๋ณด์๋ฅผ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌ p. 222
6๊ฐ์ง ํค์๋๋ก ๋๋ด๋ ํต์ฌ ํฌ์ธํธ
1) ํด๋์ค: ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋์ด๋ค.
2) ๊ฐ์ฒด(object): ํด๋์ค๋ก๋ถํฐ ์์ฑ๋๋ฉฐ 'new ํด๋์ค()'๋ก ์์ฑํ๋ค.
๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๊ฑฐ๋ ์ถ์์ ์ผ๋ก ์๊ฐํ ์ ์๋ ๊ฒ ์ค์์ ์์ ์ ์์ฑ์ ๊ฐ์ง๊ณ ์๊ณ ๋ค๋ฅธ ๊ฒ๊ณผ ์๋ณ ๊ฐ๋ฅํ ๊ฒ์ ๋งํ๋ค.
ex) ์๋์ฐจ, ์์ ๊ฑฐ, ์ฑ
, ์ฌ๋ / ํ๊ณผ, ๊ฐ์, ์ฃผ๋ฌธ ๋ฑ
3) new ์ฐ์ฐ์: ๊ฐ์ฒด ์์ฑ ์ฐ์ฐ์์ด๋ฉฐ, ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ๊ฐ์ฒด ์์ฑ ๋ฒ์ง๋ฅผ ๋ฆฌํดํ๋ค.
4) ํด๋์ค ๋ณ์: ํด๋์ค๋ก ์ ์ธํ ๋ณ์๋ฅผ ๋งํ๋ฉฐ ํด๋น ํด๋์ค์ ๊ฐ์ฒด ๋ฒ์ง๊ฐ ์ ์ฅ๋๋ค.
5) ์ธ์คํด์ค(instance): ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค์ด๋ค.
ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
๊ฐ๋ฐ์ → [์ค๊ณ] → ํด๋์ค(์ค๊ณ๋) → [์ธ์คํด์คํ] → ์ธ์คํด์ค(๊ฐ์ฒด)
6) ํด๋์ค ๋ฉค๋ฒ: ํด๋์ค์ ์ ์ธ๋๋ ๋ฉค๋ฒ๋ ํ๋, ์์ฑ์, ๋ฉ์๋๊ฐ ์๋ค.