객체(Entity)-κ΅¬μ„±μš”μ†Œ(Component) λ””μžμΈ


컴퓨터 과학에선 '관심사 뢄리(μ—­μžμ£Ό: Separation of Concerns,톡칭 SoC라고 뢈림)'둜 μ•Œλ €μ§„ κ°œλ…μ΄ μžˆμŠ΅λ‹ˆλ‹€.

관심사 λΆ„λ¦¬λŠ” μ†Œν”„νŠΈμ›¨μ–΄κ°€ μˆ˜ν–‰ν•˜λŠ” κΈ°λŠ₯에 따라 λͺ¨λ“ˆμ΄ μ–΄λ–»κ²Œ λ‚˜λ‰˜λŠ”μ§€ μ„€λͺ…ν•˜λŠ” 섀계 μ›λ¦¬μž…λ‹ˆλ‹€.


각 λͺ¨λ“ˆμ€ ν•΄λ‹Ή λͺ¨λ“ˆμ— μ™„μ „νžˆ μΊ‘μŠν™”λ˜μ–΄μ•Όν•˜λŠ” 단일 단일 κΈ°λŠ₯인 '관심(Concern)'을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€.

κ΅¬ν˜„κ³Ό κ΄€λ ¨ν•˜μ—¬ μš°λ €λ˜λŠ” 사항은 λ‹€μ†Œ λŠμŠ¨ν•œ 해석학적인 μš©μ–΄(interpretive term)일 수 μžˆμŠ΅λ‹ˆλ‹€, μ΄λŸ¬ν•œ μš°λ €λŠ”Β 

화면에 κ·Έλž˜ν”½μ„ λžœλ”λ§ν•˜λŠ” 것에 λŒ€ν•œ μ‹ λ’°μ„±μ˜ μ›μΉ™λ§ŒνΌ κ΄‘λ²”μœ„ν•˜κ±°λ‚˜ κ³΅κ°„μƒμ˜ μ‚Όκ°ν˜•μ΄ λ‹€λ₯Έ μ‚Όκ°ν˜•κ³Ό κ²ΉμΉ λ•Œ

κ³„μ‚°ν•˜λŠ” κ²ƒλ§ŒνΌ 쒁은 λ²”μœ„μ˜ 문제일 수 μžˆμŠ΅λ‹ˆλ‹€.


μ†Œν”„νŠΈμ›¨μ–΄ 섀계에 μžˆμ–΄, 관심사(Concerns)λ₯Ό λΆ„λ¦¬ν•˜λŠ” 주된 이유 쀑 ν•˜λ‚˜λŠ” κ°œλ°œμžκ°€ μ€‘λ³΅λ˜λŠ” κΈ°λŠ₯을 μž‘μ„±ν•˜λŠ” 개발λ ₯의 λ‚­λΉ„λ₯Ό 쀄이기 μœ„ν•¨μž…λ‹ˆλ‹€.

예λ₯Όλ“€μ–΄ 화면에 이미지λ₯Ό λ Œλ”λ§ν•˜λŠ” μ½”λ“œκ°€ 있으면, ν•΄λ‹Ή μ½”λ“œλ₯Ό 1회만 μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€.


λΉ„λ””μ˜€ κ²Œμž„μ€ κ·Έλž˜ν”½μ„ 화면에 λ Œλ”λ§ν•΄μ•Όν•˜λŠ” μˆ˜μ‹­ λ˜λŠ” μˆ˜λ°±κ°€μ§€μ˜ 상황을 κ°€μ§€κ³  μžˆμœΌλ‚˜, κ°œλ°œμžλŠ” κ·Έ μ½”λ“œλ₯Ό 단 1회만 μž‘μ„±ν•˜λ©΄λ˜κ³ 

μ–΄λ””μ—μ„œλ‚˜ μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


μœ λ‹ˆν‹°λŠ” 개체-κ΅¬μ„±μš”μ†ŒλΌκ³  λΆˆλ¦¬λŠ” κ²Œμž„ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 맀우 μΈκΈ°μžˆλŠ” λ””μžμΈ νŒ¨ν„΄μ„ κ°€μ§€κ³ ,Β 

관심사λ₯Ό λΆ„λ¦¬ν•˜λŠ” 철학을 기반으둜 ν•©λ‹ˆλ‹€.(μ—­μž μ£Ό: μœ λ‹ˆν‹° 개발 μ² ν•™ μžμ²΄κ°€ 개체-μ»΄ν¬λ„ŒνŠΈ 철학을 기반으둜 ν•˜κ³  μžˆλ‹€λŠ” 말)


객체-κ΅¬μ„±μš”μ†Œ μ„€κ³„λŠ” '상속(inheritance)보닀도 ꡬ성(Coposition)"을 μ„ ν˜Έν•©λ‹ˆλ‹€. 이것은 개체(Object)λ‚˜ 객체가 νŠΉμ • κΈ°λŠ₯을 μΊ‘μŠν™”ν•˜λŠ”

클래슀의 μΈμŠ€ν„΄μŠ€(instances)λ₯Ό ν¬ν•¨ν•¨μœΌλ‘œμ¨, μ½”λ“œμ˜ μž¬μ‚¬μš©μ„ μž₯λ €ν•œλ‹€λŠ” κ°œλ…μž…λ‹ˆλ‹€.


κ°μ²΄λŠ” μ΄λŸ¬ν•œ κ΅¬μ„±μš”μ†Œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό ν†΅ν•˜μ—¬ κΈ°λŠ₯에 μ•‘μ„ΈμŠ€(μ ‘κ·Ό) ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ μ ˆν•˜κ²Œλ§Œ μ‚¬μš©ν•œλ‹€λ©΄ ꡬ성(Composition)을 더 적은 μ–‘μ˜ μ½”λ“œλ‘œ 얻을 수 있고,Β 

(μ½”λ“œμ— λŒ€ν•œ) 이해와 μœ μ§€ λ³΄μˆ˜κ°€ 더 μ‰¬μ›Œμ§ˆκ²ƒμž…λ‹ˆλ‹€.


μ΄λŠ” 객체가 μƒμœ„ν΄λž˜μŠ€λ‘œλΆ€ν„° κΈ°λŠ₯을 μƒμ†λ°›λŠ” 일반적인 섀계 μ ‘κ·Όλ²•κ³ΌλŠ” μ—„μ—°νžˆ λ‹€λ¦…λ‹ˆλ‹€.

상속을 μ‚¬μš©ν•˜λŠ” κ²ƒμ˜ 단점은 κΉŠμœΌλ©΄μ„œλ„ 넓은 상속 트리둜 μ΄μ–΄μ§ˆ 수 μžˆλ‹€λŠ”κ²λ‹ˆλ‹€.

λΆ€λͺ¨ ν΄λž˜μŠ€μ—μ„œ μž‘μ€ ν•œ κ°€μ§€λ₯Ό λ°”κΎΈλŠ” 것은 μ˜λ„ν•˜μ§€ μ•Šμ€ κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•˜λŠ” νŒŒκΈ‰ 효과λ₯Ό 지닐 μˆ˜λ„ μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.


μœ λ‹ˆν‹°μ˜ 객체-κ΅¬μ„±μš”μ†Œ λ””μžμΈμ—μ„œ κ²Œμž„μ˜€λΈŒμ νŠΈλΌκ³  λΆˆλ¦¬λŠ” 것듀은 객체(μ—”ν„°ν‹°,Entity)이며, μ»΄ν¬λ„ŒνŠΈλŠ” μ»΄ν¬λ„ŒνŠΈλΌκ³  λΆ€λ¦…λ‹ˆλ‹€.

Unity Scnene의 λͺ¨λ“  것은 κ²Œμž„ 였브젝트둜 κ°„μ£Όλ©λ‹ˆλ‹€λ§Œ, κ²Œμž„ 였브젝트 μžμ²΄λ‘œλŠ” μ•„λ¬΄λŸ° 것도 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ»΄ν¬λ„ŒνŠΈμ—μ„œ λͺ¨λ“  κΈ°λŠ₯을 κ΅¬ν˜„ν•œ λ‹€μŒ μ΄λŸ¬ν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ²Œμž„ μ˜€λΈŒμ νŠΈμ— μΆ”κ°€ν•˜μ—¬μ•Ό μš°λ¦¬κ°€ μ›ν•˜λŠ” 것을 ν•©λ‹ˆλ‹€.


객체에 κΈ°λŠ₯κ³Ό 행동(benhavior)λ₯Ό μΆ”κ°€ν•˜λŠ” 것은 그 객체에 κ΅¬μ„±μš”μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒλ§ŒνΌ κ°„λ‹¨ν•©λ‹ˆλ‹€.


μ»΄ν¬λ„ŒνŠΈ μžμ²΄λŠ” ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ—λ§Œ μ΄ˆμ μ„ λ§žμΆ”κ³  λ‹€λ₯Έ 문제 및 μ½”λ“œμ™€ λΆ„λ¦¬λ˜λŠ” λ³„κ°œ λͺ¨λ“ˆμ΄λΌκ³  생각할 순 μžˆμŠ΅λ‹ˆλ‹€.


λ‹€μŒ 닀이어 κ·Έλž¨μ„ μ°Έμ‘°ν•˜μ—¬ κ°€μƒμ˜ κ²Œμž„ μ„€μ •μ—μ„œ 객체-ꡬ성 μš”μ†Œ 섀계가 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€ μ•Œμ•„λ³΄μ„Έμš”!


λ™μž‘μ„ μ œκ³΅ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” Top X-axis(상단 XμΆ•)에 있고, κ²Œμž„λ‚΄ κ°μ²΄λŠ” 쒌츑의 yμ—΄(Column)에 μžˆμŠ΅λ‹ˆλ‹€.



3dad8268f5dc3f8650bbd58b36807068da92


λ³΄μ‹œλ‹€μ‹œν”Ό ν”Œλ ˆμ΄μ–΄μ™€ μ μ—κ²ŒλŠ” 4κ°€μ§€ κ΅¬μ„±μš”μ†Œμ™€ κΈ°λŠ₯이 λͺ¨λ‘ ν•„μš”ν•©λ‹ˆλ‹€.Β 

μ°½(wepaon)은 λŒ€λΆ€λΆ„μ˜ κΈ°λŠ₯,특히 λ˜μ§ˆλ•Œ 물리학이 ν•„μš”ν•©λ‹ˆλ‹€λ§Œ μ˜€λ””μ˜€λŠ” ν•„μš”μΉ˜ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λ¬΄μ—λŠ” 물리적 μƒν˜Έμž‘μš©μ΄λ‚˜ μ˜€λ””μ˜€κ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚˜λ¬΄μ— λΆ€λ”ͺ히면 톡과할 수 μ—†λ„λ‘ν•˜λŠ” κ·Έλž˜ν”½ λ Œλ”λ§ 및 좩돌 κ°μ§€λ§Œ 있으면 λ©λ‹ˆλ‹€.


μ•žμ˜ μ˜ˆμ—μ„œ μ£Όλ―Ό(Villager)은 κ·Έλž˜ν”½κ³Ό 좩돌 감지가 ν•„μš”ν•˜μ§€λ§Œ 씬(Scene)μ—μ„œ μ£Όμœ„λ₯Ό κ·Έμ € μ–΄μŠ¬λ  거리기 λ•Œλ¬Έμ— 물리학이 ν•„μš”μΉ˜ μ•ŠμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ κ²Œμž„μ—μ„œ ν”Œλ ˆμ΄μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” 주민의 μ˜€λ””μ˜€ νŠΈλž™μ„ μž¬μƒν• λ €λ©΄ μ˜€λ””μ˜€κ°€ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


객체-κ΅¬μ„±μš”μ†Œ μ„€κ³„λŠ” 특히 λŒ€ν˜• ν”„λ‘œμ νŠΈμ—μ„œ μ œν•œ(Limitations)이 μžˆμ—ˆκ³ , μˆ˜λ…„μ΄ μ§€λ‚œ 후에야 λΉ„λ‘œμ†Œ μ „μ„±κΈ°κ°€ μ™”μŠ΅λ‹ˆλ‹€.

ν–₯ν›„, μ§€κΈˆλ³΄λ‹€ 더 데이터 μ§€ν–₯적(data-oriented) 섀계(λ””μžμΈ)으둜 λŒ€μ²΄λ  μ˜ˆμ •μž…λ‹ˆλ‹€. 이제 이 μƒˆλ‘œμš΄ 지식을 ν™œμš©ν•˜μ—¬ λ΄…μ‹œλ‹€.