๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ก work work work/blockchain

[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ(2) - Constructor ์ƒ์„ฑ์ž, ์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ๋‘๊ฐœ ์ด์ƒ ์ƒ์†

by hanwitjus 2022. 6. 15.

โœ”๏ธ ์ƒ์„ฑ์ž

: ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜

๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์ฃผ๋กœ ์”€

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ธ์Šคํ„ด์Šค ํ™” ํ• ๋•Œ, ์ƒ์„ฑ์ž์—์„œ ๊ฐ’์„ ๋ฐ›์•„์„œ ์ดˆ๊ธฐ์— ์ƒ์„ฑ๋จ (์ดˆ๊ธฐ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค๋Š” ๋А๋‚Œ)

-> ์ดˆ๊ธฐ ์„ธํŒ…์ด ํ•„์š” ์—†๋‹ค๋ฉด ์ƒ์„ฑ์ž๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ.

 

 

์ด๋ ‡๊ฒŒ A๋ผ๋Š” ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  name๊ณผ age๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

๋ฐ‘์— change๋ผ๋Š” ํ•จ์ˆ˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ์— ์ƒ์„ฑํ•œ name๊ณผ age๊ฐ’์„ ๋ฐ”๊ฟ€๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

์ด์ œ B๋ผ๋Š” ์ปจํŠธ๋ž™ํŠธ์—์„œ A๋ฅผ ์ธ์Šคํ„ด์Šค๋กœ ์ƒ์„ฑํ• ๋•Œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  get()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ํ™•์ธํ•˜๊ณ , changeํ•จ์ˆ˜๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ A์˜ change()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ 

์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋„๋ก ํ•œ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ์‹์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™” ํ•ด์„œ ํ•จ์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด ๊ฐ€์Šค ์†Œ๋น„๊ฐ€ ๋งŽ์•„์ ธ์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

(B์—์„œ A์˜ ์š”์†Œ๋“ค์„ ๋งŽ์ด ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ)

 

๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ํ•œ ๋ธ”๋ก๋‹น ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์Šค ์–‘์„ ์ •ํ•ด๋†“๊ณ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์†Œ๋น„ํ•˜๋Š” ๊ฐ€์Šค ์–‘์ด ๋งŽ์•„์ง€๋ฉด ์•„์˜ˆ ๋ฐฐํฌ๋ฅผ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํด๋ก  ํŒฉํ† ๋ฆฌ ํŒจํ„ด(Clone Factory Pattern)์œผ๋กœ ๊ฐ€์Šค ์†Œ๋น„๋Ÿ‰์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

(๋‚˜์ค‘์— ์„ค๋ช…)

 

 

โœ”๏ธ ์ƒ์†

 

์ด๋ ‡๊ฒŒ Father๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ํ•˜๋‚˜ ์ž‘์„ฑํ•˜๊ณ 

์•„๋ž˜์— Son์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ปจํŠธ๋ž™ํŠธ์—์„œ ์ƒ์†์„ ๋ฐ›๊ฒŒ ํ–ˆ๋‹ค.

 

์ƒ์†ํ• ๋•Œ๋Š” is ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ €๋ ‡๊ฒŒ ์ƒ์†๋งŒ ํ•˜๊ณ  ์ปจํŠธ๋ž™ํŠธ ๋‚ด์— ์•„๋ฌด๊ฒƒ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด๋ฉด,

 

 

 

 

 

 

 

๊ทธ๋ž˜๋„ ์ด๋ ‡๊ฒŒ 

๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์—์„œ ์ด๋ฏธ ์ •์˜๋œ

๋ณ€์ˆ˜๋“ค๊ณผ ํ•จ์ˆ˜๋“ค์— ์ ‘๊ทผํ•˜์—ฌ

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

 

 

 

๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์— ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์— ์ด๋ ‡๊ฒŒ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ด๋•Œ ์ž์‹ ์ปจํŠธ๋ž™ํŠธ์—์„œ ์ƒ์†์„ ํ• ๋•Œ 

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ์† ๋ฐ›์„ ๋•Œ ๋ฐ”๋กœ ๋ณ€๊ฒฝ ํ•  ์ด๋ฆ„์„ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

๊ทธ๋Ÿผ ๊ฒฐ๊ณผ ์ฐฝ์—์„œ๋„ ์ž˜ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ”๏ธ ์˜ค๋ฒ„๋ผ์ด๋“œ Override

์•„๊นŒ ๋งŒ๋“  getMoneyํ•จ์ˆ˜๋ฅผ Son ์ปจํŠธ๋ž™ํŠธ์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜๊ณ ์ž ํ•œ๋‹ค.

์ด๋•Œ, ๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์—์„œ ํ•ด๋‹น ํ•จ์ˆ˜์— virtual ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ!

 

 

๊ทธ๋ฆฌ๊ณ  ์ž์‹ ์ปจํŠธ๋ž™ํŠธ์—์„œ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ–ˆ๋‹ค.

์ด๋•Œ๋Š” override ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ ์–ด์•ผํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์•„๋“ค์ด ์ผ์„ ํ•˜๋ฉด ๋ˆ์„ ๋” ๋ฒŒ ์ˆ˜ ์žˆ๋„๋ก work() ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ ,

getMoney ํ•จ์ˆ˜๋Š” ์ผ์„ ํ•œ ๋งŒํผ์„ ๋”ํ•œ ์•„๋“ค์˜ ์žฌ์‚ฐ์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

 

 

 

 

work ํ•จ์ˆ˜๋ฅผ ํ•œ๋ฒˆ๋„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š”

์•„์ง๊นŒ์ง€ ์žฌ์‚ฐ์ด 100์œผ๋กœ ๋‚˜์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ work ํ•จ์ˆ˜๋ฅผ ๋‘๋ฒˆ ๋ˆŒ๋Ÿฌ๋ณด์•˜๋‹ค.

 

 

 

 

 

 

 

๊ทธ๋žฌ๋”๋‹ˆ ์ด๋ ‡๊ฒŒ 300์ด ์ž˜ ์ฐํ˜€ ๋‚˜์˜จ๋‹ค.

 

 

+)  ๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์˜ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

 

์ž์‹ ์ปจํŠธ๋ž™ํŠธ์—์„œ ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ”๏ธ ๋‘ ๊ฐœ ์ด์ƒ ์ƒ์†

 

์ด๋ ‡๊ฒŒ Father, Mother ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‘๊ฐœ์˜ ๋ถ€๋ชจ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ž์‹ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๋‘ ๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ƒ์†์„ ๋ฐ›์„ ๋•Œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ is ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ! ๊ทธ๋Ÿฐ๋ฐ ์™ผ์ชฝ์„ ๋ณด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ค๋ฅ˜์˜ ๋‚ด์šฉ์€ ์ด๋Ÿฌํ•œ๋ฐ, 

์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ด์œ ๋Š” Father ์ปจํŠธ๋ž™ํŠธ์™€ Mother ์ปจํŠธ๋ž™ํŠธ ๋ชจ๋‘ 

getMoney๋ผ๋Š” ๋˜‘๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด ์˜ค๋ฅ˜๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ๋Š” 

 

 

์ด๋ ‡๊ฒŒ getMoney ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์œ„์—์„œ ํ•œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ฐฉ๋ฒ•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ์—์„œ ํ•ด๋‹น ํ•จ์ˆ˜์— virtual ํ‚ค์›Œ๋“œ๋ฅผ ๋„ฃ๊ณ , 

์ž์‹ ์ปจํŠธ๋ž™ํŠธ์—์„œ override ํ‚ค์›Œ๋“œ๋ฅผ ์ ์–ด์„œ ํ•จ์ˆ˜๋ฅผ ๋˜‘๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด๋œ๋‹ค.

 

์ด๋•Œ ๋‘๊ฐœ์˜ ๋ถ€๋ชจ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฏ€๋กœ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด override ํ‚ค์›Œ๋“œ ๋’ค์— ์ปจํŠธ๋ž™ํŠธ ๋ช…์„ ์ ์–ด์ค˜์•ผํ•œ๋‹ค.

 

 

LIST

'๐Ÿ’ก work work work > blockchain' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter4~11 : ๊ฐ€์Šค, ์‹œ๊ฐ„ ๋‹จ์œ„, Public ํ•จ์ˆ˜, ํ•จ์ˆ˜ ์ œ์–ด์ž์˜ ๋‹ค๋ฅธ ํŠน์ง•, ๊ฐ€์Šค ์ ˆ์•ฝํ•˜๊ธฐ  (0) 2022.07.04
[ํฌ๋ฆฝํ†  ์ข€๋น„] Lesson3. ๊ณ ๊ธ‰ ์†”๋ฆฌ๋””ํ‹ฐ ๊ฐœ๋… - Chapter1~3 : ์ปจํŠธ๋ž™ํŠธ ๋ถˆ๋ณ€์„ฑ, ์†Œ์œ  ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋ž™ํŠธ, onlyOwner ํ•จ์ˆ˜ ์ œ์–ด์ž  (0) 2022.07.01
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต : ๋ฆฌ๋ฏน์Šค ์‚ฌ์šฉ๋ฒ•  (0) 2022.06.14
[์†”๋ฆฌ๋””ํ‹ฐ] ์†”๋ฆฌ๋””ํ‹ฐ ๊ธฐ๋ณธ ๊ฐœ๋… ์ •๋ฆฌ(1) - ๋ฌธ๋ฒ•, ํ•จ์ˆ˜, ์œ ํ˜•, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ  (0) 2022.06.10
[์ด๋”๋ฆฌ์›€] ์ด๋”๋ฆฌ์›€ ์ž…๋ฌธ ๋ฐ”์ด๋ธ” - inflearn ๊ฐ•์˜ ์ •๋ฆฌ(2) : ์ด๋”๋ฆฌ์›€ ์šฉ์–ด์ •๋ฆฌ, ๊ฐ€๋‚˜์Šˆ, EVM, Geth, Parity  (0) 2022.06.09

๋Œ“๊ธ€