ํ˜„์žฌ ์บ๋ฆญํ„ฐ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ


๋ฐœ์‚ฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž


if๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ


fire() {

if(this.state == A) { // ํ™”์‚ด ๋ฐœ์‚ฌ }

else if(this.state == B) { // ํ‘œ์ฐฝ ๋ฐœ์‚ฌ }

else if(this.sate == C) { // ๋˜ฅ ๋ฐœ์‚ฌ }

}


์ด๋Ÿฐ ํ˜•ํƒœ๋ฅผ ๋„๊ฒ ์ง€


์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ ˆ์ด์ € ๋ฐœ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„๋•Œ


๋ ˆ์ด์ € ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ 


๋‹ค์‹œ ์บ๋ฆญํ„ฐ ์ฝ”๋“œ๋กœ ๋“ค์–ด๊ฐ€์„œ


else if(this.state == D) { // ๋ ˆ์ด์ € ๋ฐœ์‚ฌ }


๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ์ง€


๋ญ ๊ทธ ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด ์ƒ๊ด€์—†์ง€๋งŒ ๋ฐœ์‚ฌํ•  ๊ฐ์ฒด๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก


ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋„ˆ๋ฌด๋งŽ์€ ์ฝ”๋“œ(ํ™”์‚ด ๋ฐœ์‚ฌ ์ฝ”๋“œ, ํ‘œ์ฐฝ ๋ฐœ์‚ฌ ์ฝ”๋“œ, ๋˜ฅ ๋ฐœ์‚ฌ ์ฝ”๋“œ, ๋ ˆ์ด์ € ๋ฐœ์‚ฌ ์ฝ”๋“œ)๊ฐ€ ๋‹ด๊ธฐ๊ฒŒ ๋˜๊ณ 


์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค์–ด์ ธ.


์ด ๊ฒฝ์šฐ์—๋Š” Projectile ์ด๋ž€ ๊ฐ€์ƒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ ,


๊ทธ ์•ˆ์— fire(์ ๋‹นํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ)๋ž€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์ง€.


์บ๋ฆญํ„ฐ๋Š” ์ž๊ธฐ๋งŒ์˜ Projectile ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ ,


Projectile์„ ์ƒ์†๋ฐ›์€ ํ™œ, ํ‘œ์ฐฝ, ๋˜ฅ, ๋ ˆ์ด์ € ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ 


๊ฐ๊ฐ์˜ fire()๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๋Š” ๊ฑฐ์ง€.


๊ฒฐ๊ตญ ์บ๋ฆญํ„ฐ์˜ fire์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜๊ณ 


fire() { myProjectile.fire(์ ๋‹นํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ); }


๊ฐ๊ฐ์˜ ๋ฐœ์‚ฌ ์ฝ”๋“œ๋Š” ๊ฐ๊ฐ์˜ ์ฝ”๋“œ ํŒŒ์ผ์—์„œ ์ •์˜๋˜๋Š” ๊ฑฐ์•ผ


์บ๋ฆญํ„ฐ์˜ myProjectile๋งŒ setProjectile() ๋“ฑ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ


ํ™”์‚ด, ํ‘œ์ฐฝ, ๋˜ฅ, ๋ ˆ์ด์ € ๋“ฑ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ณ ,


C#์—์„œ ์ง€์›ํ•˜๋Š” polymorphism์„ ์ตœ๋Œ€ํ•œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์ง€.


์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์บ๋ฆญํ„ฐ์˜ fire()์—๋Š” if๊ฐ€ ์ „๋ถ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์ง€. ์ฝ”๋“œ๋„ ์งง์•„์ง€๊ณ ,


๋ฌผ๋ก  ํ™œ, ํ‘œ์ฐฝ, ๋˜ฅ, ๋ ˆ์ด์ € ๊ตฌํ˜„ ๋ถ€์—๋Š” ์“ฐ์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€.


๋” ์ข‹์€ ์ ์€ ์ƒˆ๋กœ์šด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์บ๋ฆญํ„ฐ์˜ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ์ด์•ผ.


์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ๋‹ค์Œ์— ์™ธ๋ถ€์—์„œ ์บ๋ฆญํ„ฐ์˜ setProjectile(์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ํˆฌ์‚ฌ์ฒด) ๋งŒ ์ง‘์–ด๋„ฃ์œผ๋ฉด ๋˜๋‹ˆ๊นŒ.


if๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅ ํ•˜์ง€๋งŒ


๊ตฌํ˜„๋ถ€๊ฐ€ ์•„๋‹Œ ๊ตฌ์กฐ์ ์ธ ๋ถ€๋ถ„์—์„œ๋Š” ์ตœ๋Œ€ํ•œ ์ค„์ด๋Š”๊ฒŒ ๋งž์•„