상속과 ꡬ성은 μ•½κ°„ λ‹€λ₯΄μ§€λ§Œ λΉ„μŠ·ν•œ 역할을 ν•œλ‹€κ³  보면 됨.

λ‘˜λ‹€ 좔상화λ₯Ό ν•˜λ©΄μ„œ 생긴 κ°œλ…μ΄κ³ , κ²Œμž„ λ§Œλ“€λ•Œ μ€‘μš”ν•˜κ²Œ 이용됨.


μƒμ†λ§Œ 써라, κ΅¬μ„±λ§Œ 써라 이런건 μ•„λ‹ˆμ§€λ§Œ μ μ ˆν•˜κ²Œ μ΄μš©ν•˜λŠ”κ²Œ μ€‘μš”ν•˜λ‹€κ³  생각함.


μ•„λž˜ μ˜ˆλŠ” λ‚΄κ°€ 처음으둜 C++ λ°°μ› μ„λ•Œ λ³Έ 상속에 κ΄€ν•œ μ˜ˆμ œμž„.


struct point2

{Β 

Β float x;

Β float y;

}


stuct point3

{

Β float x;

Β float y;

Β float z;

}


μ΄λ ‡κ²Œ 2차원에 λŒ€ν•œ 점 ν΄λž˜μŠ€μ™€, 3차원에 λŒ€ν•œ 점 클래슀있음.Β 

또 λ‹€λ₯΄κ²Œ κ΅¬ν˜„ν•˜λŠ” 방법은 

struct point3_composite

{

Β  point2 xy;

Β  float z;

}


μ΄λ ‡κ²Œ κ΅¬ν˜„ν•¨.


첫번째 방식은 μ„œλ‘œ 연관이 ν•˜λ‚˜λ„ μ—†λŠ” λ³„κ°œμ˜ 클래슀 2개고,Β 

2번째 방식은 μ»΄ν¬μ§€μ…˜μœΌλ‘œ κ΅¬ν˜„ν•œ 3차원 점 ν΄λž˜μŠ€μž„.


μ—¬κΈ°μ„œ μƒκ²¨λ‚œ κ°œλ…μ΄ μƒμ†μ΄λž€ κ°œλ…μž„.Β 

상속을 μ¨μ„œ κ΅¬ν˜„μ„ ν•œλ‹€λ©΄Β μ΄λ ‡κ²Œ κ΅¬ν˜„μ΄ 될수 있음.


struct point3_inherit : public point 2

{

Β float z;

}


C++ λ‚΄λΆ€μ—μ„œ λŒμ•„κ°€λŠ” κ°œλ…μ΄ μ€‘μš”ν•œκ²Œ μ•„λ‹ˆλ‹ˆ ν›„λ”± λ„˜μ–΄κ°€κ³ 

상속과 μ»΄ν¬μ§€μ…˜μ˜ κ°„λ‹¨ν•œ μ°¨μ΄λŠ” ν•˜λ‚˜μž„.


μ»΄ν¬μ§€μ…˜μ€ λ‚΄κ°€ κ°€μ§„ 옷, μ‹œκ³„, νœ΄λŒ€ν° 같은 κ°€μ§ˆμˆ˜ μžˆλŠ”κ²ƒμ΄κ³ ,

상속은 λ‚΄κ°€ μ‚¬λžŒμ΄λ‹€, 동물이닀, λΌλŠ” XX μ΄λ‹€μ˜ κ°œλ…μž„.


κ·Έλž˜μ„œ UML을 보면 상속은 is a λΌλŠ” κ°•ν•œ 묢음이고, μ»΄ν¬μ§€μ…˜μ€ has a λΌλŠ” μ•½ν•œ λ¬ΆμŒμž„.


기본적인 κ°œλ…μ€ 이렇고, κ²Œμž„μ—”μ§„μœΌλ‘œ λ˜λŒμ•„κ°€λ©΄ 상속과 μ»΄ν¬μ§€μ…˜μ€ μ΄λŸ°μ‹μœΌλ‘œ κ΅¬ν˜„λ¨.


κ²Œμž„μ—μ„œ 수 λ§Žμ€ 객체듀이 μžˆλŠ”λ°, κ΅¬ν˜„ν•΄μ•Όν•  객체쀑에

μ’€λΉ„λΌλŠ” 객체와 λ±€νŒŒμ΄λŸ¬λΌλŠ” 객체, μΈκ°„μ΄λΌλŠ” 객체 μ΄λŸ°μ‹μœΌλ‘œ μžˆλ‹€κ³  ν•˜λ©΄


쒀비와 λ±€νŒŒμ΄μ–΄λŠ” λͺ¬μŠ€ν„°λ‹ˆκΉŒ λͺ¬μŠ€ν„°λž€ 클래슀λ₯Ό μƒμ†ν•˜κ³ , 인간은 κ·Έλƒ₯ 인간 클래슀λ₯Ό μƒμ†ν•˜λ©΄ 됨.

κ°„λ‹¨ν•˜κ²Œ κ·Έ κ°œλ…μ„ 그렀보면 μ΄λ ‡κ²Œ 됨.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427bd8277a16fb3dab004c86b6fe89693c9d204aa623474aa35dc5e77b96a6abad95c844ae8a3403b7bcd870ceca4d72e051fad98e24f01

γ…‡γ…‡ μ΄λ ‡κ²Œ 인간과 λͺ¬μŠ€ν„°λŠ” λͺ¨λ‘ μ›€μ§μ΄λ‹ˆκΉŒ μ›€μ§μ΄λŠ”κ±Έ 상속받고,Β 

μ’€λΉ„λŠ” λͺ¬μŠ€ν„°λ₯Ό 상속 λ°›κ³ , λ±€νŒŒμ΄μ–΄λ„ λͺ¬μŠ€ν„°λ₯Ό μƒμ†λ°›μ•˜μŒ.


이제 μƒκ°ν•΄λ³΄λ‹ˆ 인간이 ν•œ μ’…λ₯˜λ§Œ μžˆλŠ”κ²Œ μ•„λ‹ˆκ³ , ν”Œλ ˆμ΄μ–΄λ„ 있고, κ·Έλƒ₯ AIκ°€ μ›€μ§μ΄λŠ” NPC도 μžˆλŠ”κ±°μž„.

κ°„λ‹¨ν•˜κ²Œ μΆ”κ°€ν•΄μ„œ, 인간을 μƒμ†λ°›λŠ” ν”Œλ ˆμ΄μ–΄, NPC 클래슀λ₯Ό λ§Œλ“€λ©΄ λ˜λŠ”κ±°μž„.


그런데 μ—¬κΈ°μ„œ λ””μžμ΄λ„ˆ(기획자)κ°€ 우리 λ„ˆλ¬΄ μ›€μ§μ΄λŠ” λͺ¬μŠ€ν„°λ§Œ μžˆλŠ”λ°, κ±°λŒ€κ±°λ―ΈλΌλ˜μ§€,Β 

μ•„λ‹˜ 미믹같은 λͺ¬μŠ€ν„°λ₯Ό μΆ”κ°€ν•΄λ³ΌκΉŒ? 라고 ν•˜λŠ”κ±°μž„.


??? 이게 λ¬΄μŠ¨μ†Œλ¦¬ ??? 이미 λͺ¬μŠ€ν„°λΌλŠ” κ°μ²΄λŠ” μ›€μ§μ΄λŠ” μ „μ œν•˜μ— μ„€κ³„λœ 클래슀인데,

움직이지 μ•ŠλŠ” λͺ¬μŠ€ν„°λ₯Ό λ„£μžκ³ ?Β 


그럼 뭐 아직 κΉŒμ§€λŠ” OK ν•˜κ³  λ„˜μ–΄κ°ˆμˆ˜ μžˆμ–΄. μ™œλƒλ©΄, μ›€μ§μž„ ν΄λž˜μŠ€μ—μ„œ κ·Έ κ²½μš°μ— 쑰건문을 κ±Έκ³ 

μ•ˆμ›€μ§μ΄κ²Œ ν•˜λ©΄ μ„€κ³„μƒμœΌλ‘  꺼림직해도, κ·Έλƒ₯ 별일 없이 λ„˜μ–΄κ°ˆμˆ˜ μžˆμœΌλ‹ˆκΉŒ.


이제 μ–ΌμΆ” ν”„λ‘œν† νƒ€μž…λ„ 완성이 λ˜μ—ˆκ³ , κ²Œμž„μ„ λŒλ €λ³΄λ‹ˆ μž¬λ°ŒλŠ”κ²ƒμ΄ κ°œλ°œμ„ 진행해도 무리가 μ—†κ² λ‹€ μ‹Άμ–΄μ„œ

ν”„λ‘œκ·Έλž˜λ¨Έμ™€ μ•„ν‹°μŠ€νŠΈ, λ””μžμ΄λ„ˆ λͺ¨λ‘κ°€ μ—΄μ‹¬νžˆ μž‘μ—…μ„ ν–ˆμ–΄.


그리고 이제 μ•ŒνŒŒλ₯Ό μ§€λ‚˜ κ²Œμž„μ„ 쒀더 ν™•μž₯ ν•˜κ³ μž ν•˜λŠ” μƒνƒœμ— λ„λ‹¬ν–ˆλ‹€κ³  보자.

NPC 쀑에 아ꡰ을 νžν•΄μ£ΌλŠ” μ‚¬μ œ, νƒ±ν‚Ήν•΄μ£ΌλŠ” 성기사 등등이 μΆ”κ°€ λ˜μ—ˆκ³  뭐 기타등등 μ—¬λŸ¬κ°€μ§€κ°€ 생겼어.



viewimage.php?id=2abcdd23dad63db0&no=29bcc427bd8277a16fb3dab004c86b6fe89693c9d204aa623474aa35dc5e77b96a6aba9c09d52ce3a3433772cae858ee50acf353eef83c7f23e119758ab7

κ·Έλž˜μ„œ μ΄λŸ°μ‹μœΌλ‘œ 클래슀 상속이 정리 λ˜μ–΄ 있음.

κΈ°μ‘΄ μ•ŒνŒŒ 버젼 κΉŒμ§€λŠ” μ΄λŸ°μ‹μœΌλ‘œ κ²Œμž„μ„ κ΅¬ν˜„ν–ˆκ³ ,Β 

이제 νšŒμ˜μ—μ„œ 좔가적인 κΈ°νšμ„ ꡬ상쀑인 λ‹¨κ³„μΈκ±°μž„.


νŒ€μ›λ“€Β λͺ¨λ‘κ°€ μ‹ λ‚˜μ„œ, 아이디어λ₯Ό μŸμ•„λ‚΄μž 이런 이런 아이디어가 λ‚˜μ™”μ–΄.

λ¦¬μΉ˜λΌλ˜μ§€, λŠ‘λŒ€μΈκ°„ μ΄λΌλ˜μ§€ λ¦¬μΉ˜λŠ” μ‚¬μ œμ²˜λŸΌ λͺ¬μŠ€ν„° μž…μž₯μ—μ„œ νžμ„ ν•΄μ£Όκ³ ,

λŠ‘λŒ€μΈκ°„ 아ꡰ인데, 인간이 μ•„λ‹Œ λŠ‘λŒ€ λͺ¨μŠ΅μœΌλ‘œ λ‹€λ‹μˆ˜ μžˆλŠ”κ±°κ³ 


κ°‘μžκΈ° ν΄λž˜μŠ€μ—μ„œ λΉ¨κ°„λΆˆμ΄ μƒκΈ΄κ±°μž„.


μ‚¬μ œμ˜ νžλ§μ΄λž€ κΈ°λŠ₯을 μ›€μ§μž„μœΌλ‘œ μ˜¬λ¦°λ‹€λ©΄, ν˜„μž¬μ˜ 상속 μ²΄κ³„λ‘œλ„

λͺ¬μŠ€ν„° 쀑에 κ΅¬ν˜„μ΄ κ°€λŠ₯함.


λŠ‘λŒ€μΈκ°„λ„ λͺ¬μŠ€ν„°λž€ 클래슀λ₯Ό μ›€μ§μž„μœΌλ‘œ 올리고, μ•„λž˜μ— μƒˆλ‘œμš΄

μ•„κ΅° ν΄λž˜μŠ€μ™€ 적ꡰ 클래슀λ₯Ό λ„£λŠ”λ‹€λ©΄ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•΄μ§„κ±°μ§€.


λ¬Όλ‘  μ΄λ ‡κ²Œ 클래슀λ₯Ό λ°”κΎΈλ©΄ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ°€μƒˆμ„œ μž‘μ—…μ„ ν•΄μ•Όν•˜κ³ ,

ν˜Ήμ‹œλ‚˜ 이름이 겹쳐버리면 μ˜ˆμƒν•˜μ§€ λͺ»ν•œ 버그가 νŠ€μ–΄λ‚˜μ˜¬μˆ˜λ„ μžˆλŠ”κ²Œ 이런 μƒνƒœμž„.


μ•„λ‹ˆλ©΄ 닀쀑상속을 톡해 인간쀑에 μ•„κ΅° 클래슀λ₯Ό μΆ”κ°€λ‘œ 상속받고,

Β λͺ¬μŠ€ν„°μ€‘μ— μ•„κ΅° 클래슀λ₯Ό 받은 λͺ¬μŠ€ν„°, 적ꡰ 클래슀λ₯Ό 받은 λͺ¬μŠ€ν„° 기타 등등이 되고,

힐링 κΈ°λŠ₯도 μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“  후에 μ‚¬μ œ ν΄λž˜μŠ€μ™€ 리치 ν΄λž˜μŠ€μ— 각각 닀쀑상속을 ν•΄μ£ΌλŠ”κ±°μ§€.


???

λ­”κ°€ 많이 꼬이기 μ‹œμž‘ν–ˆλ‹€λŠ”κ±Έ λŠλ‚„μˆ˜μžˆλŠ”λ°,Β μƒμ†μ˜ κ°€μž₯ 큰 단점이 λ°”λ‘œ μ΄κ±°μž„.

상속을 많이 λ°›κ±°λ‚˜, λ³΅μž‘ν•˜κ²Œ λ°›λŠ” κ²½μš°μ—” 클래슀 UML을 κ·Έλ €κ°€λ©΄μ„œ 확인해야할 μ •λ„λ‘œ λ³΅μž‘ν•΄μ§€κ³ ,

또 예기치 λͺ»ν•œ λ²„κ·Έλ‚˜, 좔후에 기획이 λ°”λ€Œμ—ˆμ„λ•Œ μˆ˜μ •ν•˜κΈ° κ³€λž€ν•˜λ‹€λŠ” 단점이 있음.


μ–΄λ–€ λ””μžμΈλ„ μΆ”κ°€λ˜κ³ , 사라지고, μˆ˜μ •λ˜λ‹€ 보면은 μ²˜μŒμ— μƒκ°ν–ˆλ˜ κ²ƒκ³ΌλŠ” λ‹¬λΌμ§€λŠ”κ²Œ ν˜„μ‹€μΈκ±°μ§€;;


κ·Έλž˜μ„œ λ‹€μ‹œ λŒμ•„λ³΄λŠ”κ²Œ μ»΄ν¬μ§€μ…˜μ˜ κ°œλ…μž„.


μ’€λΉ„λΌλŠ” 클래슀 λŒ€μ‹ μ—, μ’€λΉ„λΌλŠ” μ˜€λΈŒμ νŠΈλŠ”,

μ›€μ§μž„ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°€μ§€κ³  있고,

μ’€λΉ„ κΈ°λŠ₯ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°€μ§€κ³  있으면 

μ’€λΉ„κ°€ λ˜λŠ”κ±°μ§€.


λ±€νŒŒμ΄μ–΄λ„ μ›€μ§μž„μ„ κ°€μ§€κ³  있고, λ±€νŒŒμ΄μ–΄ κΈ°λŠ₯을 κ°€μ§€κ³  있으면 

λ±€νŒŒμ΄μ–΄ 인거고,Β 

...

λͺ¨λ“  상속 μ²΄κ³„μ—μ„œ 말단에 μ†ν•˜λŠ” κ²°κ³Όλ¬Όλ“€μ˜ κ΅¬μ„±μš”μ†Œλ“€μ„ λΆ„ν•΄ν•œν›„μ—

ν•˜λ‚˜ν•˜λ‚˜ μ‘°λ¦½ν•˜λ“―μ΄, μΆ”κ°€ν•΄μ£Όλ©΄ 결과물듀이 νŠ€μ–΄ λ‚˜μ˜€λŠ”κ±°μž„.


이게 기쑴에 있던 μ»΄ν¬μ§€μ…˜ κ°œλ…μ΄κ³ , μš”μ¦˜ λ‚˜μ˜€λŠ” κ²Œμž„μ—”μ§„λ“€μ€ 죄닀 μ»΄ν¬λ„ŒνŠΈ 베이슀 κ²Œμž„μ—”μ§„μΈ μ΄μœ κ°€ 여기에 μžˆλŠ”κ±°μž„.

μ΄μ œλŠ” 더 이상 κΈ°νšν•˜λŠ”λ° 상속을 κ³ λ €ν•  ν•„μš”κ°€ μ—†κ³ , κ·Έλƒ₯ ꡬ성 μš”μ†Œλ“€μ„ μ‘°λ¦½ν•˜λ©΄ λ˜λ‹ˆκΉŒ.



그럼 μ΄λ ‡κ²Œ κ΅¬ν˜„μ΄ κ°€λŠ₯함.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427bd8277a16fb3dab004c86b6fe89693c9d204aa623474aa35dc5e77b96a6aba9c09d52ce3a3433772cae858ee50acf101e9fa3e7e77b719758ab7


훨씬 더 보기 νŽΈν•˜κ³ , μƒˆλ‘œμš΄ κ°œλ…μ„ μΆ”κ°€ν•˜κΈ° νŽΈν•΄μ§„κ²Œ μ»΄ν¬μ§€μ…˜μœΌλ‘œ κ΅¬ν˜„ν•œ κ²Œμž„μ—”μ§„μž„.

그리고 결둠적으둜 μ΄λ ‡κ²Œ κ΅¬ν˜„μ„ 해두면 클래슀λ₯Ό 상속받아 λ§Œλ“œλŠ” κ²½μš°μ—”Β 

μΆ”κ°€λ‘œ μ½”λ”©ν•΄μ„œ μ»΄νŒŒμΌμ„ μƒˆλ‘œ ν•΄μ•Όν•˜λŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„ μ΄μ§€λ§Œ,


μ΄λŸ°μ‹μœΌλ‘œ μ •λ ¬λ˜μ–΄μžˆλŠ” 경우라면 μ €μž₯λ˜μ–΄μžˆλŠ” 정보λ₯Ό λ‘œλ“œ ν•˜κΈ°λ§Œ 해도

각각의 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‘°ν•©ν•˜λŠ”κ±΄ 엔진이 μ•Œμ•„μ„œ ν• μˆ˜ 있게 λ˜λŠ”κ±°μž„.


κ°‘μžκΈ° 상속 이야기가 λ‚˜μ™€μ„œ ν•œλ§ˆλ”” ν•΄λ΄€μŒ.