Notice
Recent Posts
Recent Comments
ยซ   2024/12   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
29 30 31
Archives
Today
In Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

A Joyful AI Research Journey๐ŸŒณ๐Ÿ˜Š

[30] 230209 Java Ch. 6 ํด๋ž˜์Šค: 1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 30์ผ] ๋ณธ๋ฌธ

๐ŸŒณBootcamp Revision 2023โœจ/Spring Framework, Java

[30] 230209 Java Ch. 6 ํด๋ž˜์Šค: 1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 30์ผ]

yjyuwisely 2023. 2. 9. 12:50

230209 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) ํด๋ž˜์Šค ๋ฉค๋ฒ„: ํด๋ž˜์Šค์— ์„ ์–ธ๋˜๋Š” ๋ฉค๋ฒ„๋Š” ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. 


728x90
๋ฐ˜์‘ํ˜•
Comments