๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+56] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ2 (ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค, ํŒจํ‚ค์ง€)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 12. 9.

 

 

๊ตญ๋น„์ง€์› D+56

-  ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ2 -

 


 

ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค

• ํด๋ž˜์Šค

ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ(Data)์™€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ(Method)๊ฐ€ ๋ชจ์—ฌ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ํ˜• ๋ฐ์ดํ„ฐํƒ€์ž…์ด๋‹ค.

 

- Class = Data + Method

- Data : ํ”„๋กœ๊ทธ๋žจ์—์„œ ์œ ์น˜, ๊ด€๋ฆฌํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ, Attribute๋ผ๊ณ ๋„ ํ•œ๋‹ค.

- Method : Data๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜

 

• ์ธ์Šคํ„ด์Šค

- ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ๊ตฌ์กฐํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ์„ ์˜๋ฏธํ•˜๋ฉฐ Object๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

- ์ธ์Šคํ„ด์Šค๋Š” ๋ชจ๋“  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๊ฐ€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์‚ฌ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ชฉ์ 

๊ฐ์ฒด์ง€ํ–ฅ์€ ๋Œ€์ฒด์ ์œผ๋กœ ์†Œ์Šค๊ฐ€ ๋ณผ๋ฅจ์ด ์žˆ์–ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค์˜ ์–‘๊ณผ ๋ณผ๋ฅจ์ด ์—†๋‹ค๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ชฉ์ ์€ ์ž์›(์‹œ๊ฐ„, ๋ˆ, ์ธ๋ ฅ ๋“ฑ)๊ณผ ํ’ˆ์งˆ์„ ์ข‹๊ฒŒํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ์ด๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ จ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฌถ์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ธ๋‹ค. (๋ชจ๋“ˆํ™” - ์‘์ง‘๋„ ๋†’, ๊ฒฐํ•ฉ๋„ ๋‚ฎ)

 

• ์ƒ์„ฑ์ž

ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•  ๋•Œ ์ด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ๋ฉ”์†Œ๋“œ๋กœ ํด๋ž˜์Šค์™€ ์ด๋ฆ„์ด ๊ฐ™์œผ๋‚˜ ๋ฆฌํ„ดํ˜•์ด ์—†๋‹ค.

 

ํŠน์ง•

- ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑ์„ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ž๋ฐ”์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

- ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. → ์—ฌ๋Ÿฌ๋ฐฉ์‹์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์›

- ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ธฐ๋ณธ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ณ  ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์ƒ์„ฑ์ž๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋„ฃ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ ํ•œ๋‹ค.

 

• ์ž๊ธฐ์ฐธ์กฐ๊ฐ’(this)

- ์ธ์Šคํ„ด์Šค๋Š” ์ž๊ธฐ ์ž์‹ ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ’(Reference value)์„ ์˜๋ฏธํ•œ๋‹ค.

- Method๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ this๋ฅผ ๋ฐ›๋Š”๋‹ค (์ƒ๋žต๋˜์–ด ๋ˆˆ์— ๋ณด์ด์ง€๋Š” ์•Š๋Š”๋‹ค)

- this๋Š” ์ธ์Šคํ„ด์Šค์™€ ๋ฉ”์†Œ๋“œ๋ฅผ binding(๋ฌถ๋‹ค)ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

this์˜ ์šฉ๋„

์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ๊ฐœ์ˆ˜๋งŒํผ ํž™์— ์˜ฌ๋ผ๊ฐ€์ง€๋งŒ ๋ฉ”์†Œ๋“œ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” only one์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด๋„ global์˜์—ญ์— ํ•˜๋‚˜ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ๋ฉ”์†Œ๋“œ์—๊ฒŒ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ’์„ ๋ณด๋‚ด์ฃผ๋ฉด์„œ this(์ฐธ์กฐ๊ฐ’)์„ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋˜๊ณ  ๋ฉ”์†Œ๋“œ๋Š” ํ•ด๋‹น ์ฐธ์กฐ๊ฐ’์„ ํ†ตํ•ด์„œ ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋งž๊ฒŒ ์ž‘๋™๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งˆ์น˜ ๊ฐ๊ฐ์˜ ์ธ์Šคํ„ด์Šค์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 


ํŒจํ‚ค์ง€

• ํŒจํ‚ค์ง€ (Package)

- JAVA Class๋ฅผ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ฐพ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ณ  ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

- ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๊ณ  ๊ตฌํ˜„๋˜๋ฉฐ ์†Œ์Šค์ฝ”๋“œ์—์„œ import ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์ด๋ฆ„์ถฉ๋Œ์„ ํ”ผํ•˜๊ธฐ์œ„ํ•ด ๋ณดํ†ต ๊ณต๋™์ž‘์—…์„ ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

 

• ํŒจํ‚ค์ง€์˜ ๊ตฌ์กฐ

๋งŒ์•ฝ com.base.linearfunction์ด๋ผ๊ณ  ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ์— src/com/base/linearfunction/ ์™€ ๊ฐ™์ด ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ packageํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌถ์–ด์ค€๋‹ค.

 

• ์ ‘๊ทผ์ œ์–ด์ž

public

- ์•„๋ฌด๋‚˜ ๋‹ค ์“ฐ๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. (์–ด๋–ป๊ฒŒ ๋˜๋˜ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ)

- ๋ˆ„๊ตฌ๋‚˜ ์ฝ๊ณ  ์“ฐ๋˜ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋‚ด์— ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” public์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ์•ˆ๋œ๋‹ค.

- ๋ฉ”์†Œ๋“œ๋Š” public์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๋ฐ ์ด์œ ๋Š” ๋ฉ”์†Œ๋“œ๋Š” writing์ด ์•„๋‹Œ reading๋งŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— public์„ ์‚ฌ์šฉํ•ด์ค˜๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

 

private

- ๊ทธ ๋ˆ„๊ตฌ๋„ ์ ‘๊ทผ ํ•  ์ˆ˜ ์—†๋‹ค.

- ์ ‘๊ทผํ•  ๊ฒฝ์šฐ getter/setter๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด ์ ‘๊ทผํ•œ๋‹ค.

- ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

 

default

- ๋”ฐ๋กœ ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ƒ๋žตํ–ˆ์„ ๊ฒฝ์šฐ์— default๊ฐ€ ์ ์šฉ๋œ๋‹ค.

- ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ์œผ๋ฉด ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์€ ์•ก์„ธ์Šค ์ปจํŠธ๋กค์ด public ์ฒ˜๋Ÿผ ๋Œ์•„๊ฐ„๋‹ค.

- default ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ )

default๋Š” ๊ฐ€๊ธ‰์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. → ๋ชจํ˜ธํ•œ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐ์‹œํ‚ฌ์ˆ˜ ์žˆ๋‹ค.
 
์˜ˆ๋ฅผ๋“ค์–ด, a์™€ b๊ฐ€ ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์กด์žฌํ•˜๋ฉฐ a, b ๋‘˜๋‹ค ์ •์ƒ์ ์œผ๋กœ ์ž˜ ๋™์ž‘๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
a๋Š” default๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ a๊ฐ€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋กœ ์ด๋™๋œ๋‹ค๋ฉด ๋งŒ์•ฝ b๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ a์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋ฉด b๋Š” ๊ฐ‘์ž๊ธฐ ๋™์ž‘์ด ์•ˆ๋ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ด๋Š” default์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์ด๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€