DevLog 😢

[객체지ν–₯μ˜μ‚¬μ‹€κ³Όμ˜€ν•΄] 03 - νƒ€μž…κ³Ό 좔상화 λ³Έλ¬Έ

πŸ“–/객체지ν–₯의 사싀과 μ˜€ν•΄

[객체지ν–₯μ˜μ‚¬μ‹€κ³Όμ˜€ν•΄] 03 - νƒ€μž…κ³Ό 좔상화

dolmeng2 2023. 4. 7. 22:24


βœ”οΈ 좔상화

🌱 μΆ”μƒν™”λž€, λͺ…ν™•ν•˜κ²Œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ νŠΉμ • μ ˆμ°¨λ‚˜ 물체λ₯Ό μ˜λ„μ μœΌλ‘œ μƒλž΅ν•˜κ±°λ‚˜ 감좀으둜 λ³΅μž‘λ„λ₯Ό κ·Ήλ³΅ν•˜λŠ” 방법이닀.
λ³΅μž‘μ„±μ„ μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ μˆ˜μ€€μœΌλ‘œ λ‹¨μˆœν™”ν•˜λŠ” 것이 λͺ©μ μ΄λ‹€.

μ§€λ‚œ ν¬μŠ€νŒ…λΆ€ν„° 계속 μ–˜κΈ°ν•˜κ³  μžˆλŠ” '고양이 μŠ€λ‚΅λ°”'λΌλŠ” κ²Œμž„μ΄λ‹€. μœ„ μ΄λ―Έμ§€λŠ” μ‹€μ œλ‘œ κ²Œμž„μ„ ν”Œλ ˆμ΄ν•˜λŠ” μž₯면이닀.

μœ„ κ·Έλ¦Όμ—μ„œ 무엇이 λ³΄μ΄λŠ”κ°€? 각각 μ†λ‹˜λƒ₯, μ•Œλ°”λƒ₯, μ…°ν”„λƒ₯이라고 λͺ…ν™•ν•˜κ²Œ μ‘΄μž¬ν•œλ‹€.

κ·ΈλŸ¬λ‚˜, μ†λ‹˜λƒ₯도, μ•Œλ°”λƒ₯도, μ…°ν”„λƒ₯도 λͺ¨λ‘ 고양이닀. 그리고 λ™μ‹œμ— 객체라고 λ³Ό 수 μžˆλ‹€.

이와 같이 각각의 객체듀을 ‘고양이’라고 ν•œ λ²ˆμ— μ •μ˜λ‚΄λ¦¬λŠ” 것을 '좔상화'라고 ν•œλ‹€.

 

κ³ μ–‘μ΄λŠ”, 곡톡점을 가진 객체듀을 포괄할 수 μžˆλŠ” κ°œλ…μ΄ λœλ‹€.

그리고, μ΄λŸ¬ν•œ ‘고양이’λΌλŠ” κ°œλ…μ„ μ μš©ν•˜μ—¬ λ‹€μ‹œ μ†λ‹˜λƒ₯, μ•Œλ°”λƒ₯, μ…°ν”„λƒ₯으둜 뢄리할 수 있으며, 이λ₯Ό 객체의 μΈμŠ€ν„΄μŠ€λΌκ³  λ³Ό 수 μžˆλ‹€.

 

🌱 κ°μ²΄λŠ” νŠΉμ •ν•œ κ°œλ…μ„ μ μš©ν•  수 μžˆλŠ” ꡬ체적인 사물이며, κ°œλ…μ΄ 객체에 μ μš©λμ„ λ•Œ 객체λ₯Ό κ°œλ…μ˜ μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.

μš°λ¦¬λŠ” μ™œ ‘고양이’라고 좔상화λ₯Ό ν–ˆμ„κΉŒ?

μ΄λŸ¬ν•œ κ°œλ…μ„ symbol, intension, extension의 κ΄€μ μœΌλ‘œ λ‚˜λˆ„μ–΄μ„œ μƒκ°ν•΄λ³΄μž.

- symbol: λΆ€μ—¬ν•  수 μžˆλŠ” 이름. μ—¬κΈ°μ„œλŠ” ‘고양이’κ°€ λœλ‹€.
- intension: κ°œλ…. κ³ μ–‘μ΄λŠ” 두 개의 λΎ°μ‘±ν•œ κ·€λ₯Ό 가지고, λ‘νˆΌν•œ 꼬리λ₯Ό 흔듀 수 있으며, 두 발둜 μ„œμ„œ 걸어닀닐 수 μžˆλ‹€.
- extension: κ°œλ…μ— μ†ν•˜λŠ” 객체. μ—¬κΈ°μ„œλŠ” μ†λ‹˜λƒ₯, μ•Œλ°”λƒ₯, μ…°ν”„λƒ₯이 λœλ‹€.

 

🌱 λΆ„λ₯˜λž€, 객체에 νŠΉμ •ν•œ κ°œλ…μ„ μ μš©ν•˜λŠ” μž‘μ—…μ΄λ‹€.
객체에 νŠΉμ •ν•œ κ°œλ…μ„ μ μš©ν•˜κΈ°λ‘œ κ²°μ‹¬ν–ˆμ„ λ•Œ, μš°λ¦¬λŠ” κ·Έ 객체λ₯Ό νŠΉμ •ν•œ μ§‘ν•©μ˜ λ©€λ²„λ‘œ λΆ„λ₯˜ν•˜λŠ” 것이닀.

μΆ”μƒν™”λŠ” μ‚¬λ¬Όκ°„μ˜ 곡톡점을 μ·¨ν•˜κ³ , 차이점을 λ²„λ¦¬λŠ” μΌλ°˜ν™”λ₯Ό 톡해 λ‹¨μˆœν™”ν•˜λ©°, λΆˆν•„μš”ν•œ 세뢀사항을 μ œκ±°ν•˜μ—¬ λ‹¨μˆœν™”ν•˜λŠ” 것이닀.

μš°λ¦¬λŠ” μ†λ‹˜λƒ₯, μ•Œλ°”λƒ₯, μ…°ν”„λƒ₯을 ‘고양이’λΌλŠ” κ²ƒμœΌλ‘œ μΆ”μƒν™”ν–ˆλ‹€.

μ†λ‹˜λƒ₯, μ•Œλ°”λƒ₯, μ…°ν”„λƒ₯이 λ™μ‹œμ— 가지고 μžˆλŠ” λΎ°μ‘±ν•œ κ·€λ₯Ό 가지고, λ‘νˆΌν•œ 꼬리λ₯Ό 흔듀 수 있으며, 두 발둜 κ±·λŠ” 것을 ν†΅ν•΄μ„œ μΌλ°˜ν™”μ‹œν‚¨ 것이닀. κ·Έμ™Έμ˜ 사항듀은 μ€‘μš”ν•˜μ§€ μ•Šλ‹€. μ…°ν”„λƒ₯이 두건을 두λ₯΄κ³ , μ†λ‹˜λƒ₯이 ν„±μ‹œλ„λ₯Ό ν•˜λ”λΌλ„ μ‹ κ²½μ“Έ 것은 μ•„λ‹ˆλ‹€. λΆˆν•„μš”ν•œ 세뢀사항을 μ œκ±°ν•˜λŠ” 것이닀.

 


 

βœ”οΈ 객체와 νƒ€μž…

🌱 νƒ€μž…μ΄λž€, μš°λ¦¬κ°€ μΈμ‹ν•˜κ³  μžˆλŠ” λ‹€μ–‘ν•œ μ‚¬λ¬Όμ΄λ‚˜ 객체에 μ μš©ν•  수 μžˆλŠ” μ•„μ΄λ””μ–΄λ‚˜ 관념을 μ˜λ―Έν•œλ‹€. (=κ°œλ…)
μ–΄λ–€ 객체에 νƒ€μž…μ„ μ μš©ν•  수 μžˆμ„ λ•Œ, ν•΄λ‹Ή 객체λ₯Ό νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.

νƒ€μž…μ€, 데이터가 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠλƒμ— λ”°λ₯Έ 것이닀.

νƒ€μž…μ— μ†ν•œ 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ–΄λ–»κ²Œ ν‘œν˜„ν•˜λŠ”μ§€λŠ” μ™ΈλΆ€λ‘œλΆ€ν„° μ² μ €ν•˜κ²Œ 감좰진닀.

 

κ·Έλ ‡λ‹€λ©΄, κ°μ²΄μ—μ„œμ˜ νƒ€μž…μ€ λ¬΄μ—‡μΌκΉŒ?

μ–΄λ–€ 객체가 μ–΄λ–€ νƒ€μž…μ— μ†ν•˜λŠ”μ§€λŠ” 객체가 μˆ˜ν–‰ν•˜λŠ” 행동에 따라 κ²°μ •ν•œλ‹€.

객체가 λ™μΌν•œ 행동을 μˆ˜ν–‰ν•  수 μžˆλ‹€λ©΄, λ™μΌν•œ νƒ€μž…μœΌλ‘œ λΆ„λ₯˜λ  수 μžˆλ‹€.

객체가 가지고 μžˆλŠ” λ°μ΄ν„°λŠ” 상관없닀. λ™μΌν•œ 데이터λ₯Ό 가지더라도, λ‹€λ₯Έ 행동을 ν•œλ‹€λ©΄ λ‹€λ₯Έ νƒ€μž…μ΄λ‹€!

 

μš°λ¦¬λŠ” μ•žμ„œ 객체의 내뢀적인 ν‘œν˜„μ€ μ™ΈλΆ€λ‘œλΆ€ν„° μ² μ €ν•˜κ²Œ 감좰진닀고 λ§ν–ˆλ‹€.

즉, μ™ΈλΆ€μ—μ„œ λ³΄μ•˜μ„ λ•Œ 객체의 νƒ€μž…μ€ 객체의 λ‚΄λΆ€ ν‘œν˜„κ³Ό 관련이 μ—†κ²Œ λ˜λŠ” 것이닀.

 

자, λ‹€μ‹œ μ •λ¦¬ν•΄λ³΄μž.

🌱 같은 νƒ€μž…μ— μ†ν•œ κ°μ²΄λŠ”, ν–‰λ™λ§Œ λ™μΌν•˜λ‹€λ©΄ μ„œλ‘œ λ‹€λ₯Έ 데이터λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

λ™μΌν•œ ν–‰λ™μ΄λž€, λ™μΌν•œ μ±…μž„μ΄κ³ , μ΄λŠ” λ™μΌν•œ λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

객체 λ‚΄λΆ€μ˜ 데이터 ν‘œν˜„ 방식이 λ‹€λ₯΄λ‹€λ©΄, μΌν•œ λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식은 μ„œλ‘œ λ‹€λ₯Ό μˆ˜λ°–μ— μ—†λ‹€.

μ΄λŠ” ‘λ‹€ν˜•μ„±’κ³Ό μœ μ‚¬ν•˜λ‹€. λ™μΌν•œ μš”μ²­μ— λŒ€ν•΄ μ„œλ‘œ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ 응닡할 수 μžˆλŠ” λŠ₯λ ₯이닀.

 

🌱 λ‚΄λΆ€ ν‘œν˜„ 방식과 상관없이, ν–‰λ™λ§Œμ„ κ³ λ €ν•΄μ•Ό ν•œλ‹€. 외뢀에 λ‚΄λΆ€ ν‘œν˜„μ€ μ•Œλ €μ§€μ§€ μ•ŠλŠ”λ‹€.

μ΄λŠ” 'μΊ‘μŠν™”'에 λŒ€ν•œ λ‚΄μš©μ΄λ‹€. λ‚΄λΆ€ 데이터가 μ˜€μ—Όλ˜λ©΄, λΆ„λ₯˜ μ²΄κ³„λŠ” μœ„ν—˜ν•΄μ§€κ³ , μœ μ—°μ„±μ΄ κ°μ†Œλœλ‹€.

κ²°κ΅­, 행동에 따라 λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄μ„œλŠ”, 객체가 λ‚΄λΆ€μ μœΌλ‘œ 관리해야 ν•˜λŠ” 데이터가 μ•„λ‹ˆλΌ, 객체가 외뢀에 μ–΄λ–€ 행동을 μ œκ³΅ν•΄μ•Ό ν•˜λŠ”μ§€ λ¨Όμ € 생각해야 ν•œλ‹€. 외뢀에 μ œκ³΅ν•΄μ•Ό ν•˜λŠ” μ±…μž„μ„ λ¨Όμ € κ²°μ •ν•˜κ³ , κ·Έ μ±…μž„μ„ μˆ˜ν–‰ν•˜λŠ”μ œ μ ν•©ν•œ 데이터λ₯Ό κ²°μ •ν•˜κ³ , μ±…μž„μ„ μˆ˜ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ μ™ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€ λ’€λ‘œ μΊ‘μŠν™”λ₯Ό ν•΄μ•Ό ν•œλ‹€.

 

μ΄λž˜μ„œ κΈ°λŠ₯을 λ¨Όμ € 섀계해야 ν•˜λŠ” 것 κ°™λ‹€. ν•΄λ‹Ή 객체가 ν•΄μ•Ό ν•˜λŠ” ν–‰μœ„λ“€μ— λŒ€ν•΄μ„œ λ¨Όμ € λ‚˜μ—΄ν•˜κ³ , κ·Έ λ’€λ‘œ ν•΄λ‹Ή 객체가 μ–΄λ– ν•œ μƒνƒœλ₯Ό κ°€μ§ˆ 수 μžˆλŠ”μ§€ λΆ„λ₯˜ν•˜λŠ” 게 객체지ν–₯적 섀계가 μ•„λ‹Œκ°€ μ‹Άλ‹€.

🌱 객체λ₯Ό κ²°μ •ν•˜λŠ” 것은 μƒνƒœκ°€ μ•„λ‹Œ, 행동이닀!

 


 

βœ”οΈ 고양이 μŠ€λ‚΅λ°”μ˜ λ“±μž₯인물듀은 λͺ¨λ‘ κ³ μ–‘μ΄μΌκΉŒ? 

사싀 κ³ μ–‘μ΄λ³΄λ‹€λŠ”, 고양이 인간에 가깝닀.

μ‹€μ œ κ³ μ–‘μ΄λŠ” 두 발둜 μ„œμ„œ 걸어닀닐 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

ν•˜μ§€λ§Œ, 고양이 인간은 고양이와 같은 νŠΉμ§•μ„ κ°€μ§€λ©΄μ„œ (λΎ°μ‘±ν•œ κ·€… etc) 걸어닀닐 수 μžˆλ‹€.

= 고양이가 ν•  수 μžˆλŠ” 일을 ν•  수 μžˆμ§€λ§Œ, 고양이보닀 쑰금 더 νŠΉν™”λœ 행동을 ν•  수 μžˆλ‹€.

 

μ—¬κΈ°μ„œ κ³ μ–‘μ΄λŠ”, 고양이 인간을 ν¬κ΄„ν•˜λŠ” 더 큰 κ°œλ…μ΄λΌκ³  λ³Ό 수 있으며,

고양이λ₯Ό μΌλ°˜ν™” ↔ 고양이 인간을 νŠΉμˆ˜ν™”λΌλŠ” κ΄€κ³„λ‘œ 포함할 수 μžˆλ‹€.

μ—¬κΈ°μ„œ μš°λ¦¬κ°€ 고양이와 고양이 인간을 λ¬΄μ—‡μœΌλ‘œ λ‚˜λˆ„μ—ˆλŠ”κ°€?

‘두 발둜 걸을 수 μžˆλ‹€’ λΌλŠ” 행동을 κΈ°μ€€μœΌλ‘œ λ‚˜λˆ„μ—ˆλ‹€.

즉, 객체가 μ™ΈλΆ€λ‘œ μ œκ³΅ν•˜λŠ” 행동을 ν†΅ν•΄μ„œ λ‚˜λˆŒ 수 μžˆλŠ” 것이닀.

 

🌱 일반적인 νƒ€μž…μ€ νŠΉμˆ˜ν•œ νƒ€μž…μ— λΉ„ν•΄ 더 적은 수의 행동을 가지며,
νŠΉμˆ˜ν•œ νƒ€μž…μ€ 일반적인 νƒ€μž…μ΄ ν•  수 μžˆλŠ” λͺ¨λ“  행동을 λ™μΌν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

μ„œλΈŒνƒ€μž…μ€ μŠˆνΌνƒ€μž…μ˜ ν–‰μœ„μ™€ ν˜Έν™˜λ˜κΈ° λ•Œλ¬Έμ—, μ„œλΈŒνƒ€μž…μ€ μŠˆνΌνƒ€μž…μ„ λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

고양이 인간은 고양이λ₯Ό λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 것이닀.

 

λ‹€μ‹œ μΆ”μƒν™”μ˜ κ΄€μ μœΌλ‘œ λŒμ•„κ°€λ³΄μž.

고양이 인간이 ν•  수 μžˆλŠ” 두 발둜 κ±Έμ–΄κ°ˆ 수 μžˆλ‹€λŠ” νŠΉμˆ˜ν•œ 행동은 λΆˆν•„μš”ν–ˆλ‹€.

μš°λ¦¬λŠ” κ·Έμ € λ‘νˆΌν•œ 꼬리λ₯Ό 흔듀 수 μžˆλ‹€λŠ” κ³ μ–‘μ΄μ˜ νŠΉμ„±μ— μ§‘μ€‘ν•˜μ—¬ λ‹¨μˆœν™”μ‹œμΌ°λ‹€.

 


 

βœ”οΈ 고양이와 νƒ€μž…

μ…°ν”„λƒ₯이 μ•„κΉŒ 컀피λ₯Ό λ§ˆμ‹œλ˜ μ˜ˆμ œκ°€ κΈ°μ–΅λ‚˜λŠ”κ°€?

μ…°ν”„λƒ₯이 컀피λ₯Ό λ§ˆμ‹€ λ•Œλ§ˆλ‹€ ν”Όκ³€ν•¨μ˜ μ •λ„λŠ” λ³€ν™”ν•œλ‹€. μ…°ν”„λƒ₯의 μƒνƒœκ°€ λ³€ν™”ν•˜λŠ” 것이닀.

μ…°ν”„λƒ₯의 피곀함이 100, 50, 10이든 관심이 μ—†λ‹€. λ‹¨μˆœνžˆ μ…°ν”„λƒ₯의 피곀함이 λ³€ν™”ν•œλ‹€λŠ” κ²ƒμ—λ§Œ μ§‘μ€‘ν•˜λŠ” 것이닀.

 

νƒ€μž…μ€ κ²°κ΅­, λ™μ μœΌλ‘œ λ³€ν™”ν•˜λŠ” μƒνƒœλ₯Ό 정적인 λͺ¨μŠ΅μœΌλ‘œ λ‹€λ£° 수 μžˆλ„λ‘ λ§Œλ“œλŠ” 것이닀.

그렇기에 ‘컀피λ₯Ό λ§ˆμ‹ λ‹€’, ‘일을 ν•œλ‹€’λΌλŠ” ν–‰μœ„λ₯Ό 톡해 ν”Όκ³€ν•¨μ˜ 정도가 λ³€ν™”ν•  수 μžˆλ‹€λŠ” κ°€λŠ₯성에 μ§‘μ€‘ν•˜λŠ” 것이닀.

ν•΄λ‹Ή 행동을 ν•  λ•Œ ν˜„μž¬μ˜ 피곀함이 μ–΄λŠ μ •λ„μΈμ§€λŠ” μ€‘μš”ν•˜μ§€ μ•Šλ‹€.

 

μ§€κΈˆκΉŒμ§€ 배운 λ‚΄μš©μ„ μ•„λž˜μ™€ 같이 정리할 수 μžˆλ‹€.

- 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 정적인 λͺ¨λΈμ€, 클래슀λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„λœλ‹€.
- νƒ€μž…μ„ κ΅¬ν˜„ν•˜λŠ” κ°€μž₯ 보편적인 방법은 클래슀λ₯Ό μ΄μš©ν•˜λŠ” 것이며, ν΄λž˜μŠ€μ™€ νƒ€μž…μ€ λ‹€λ₯Έ κ°œλ…μ΄λ‹€.
- νƒ€μž…μ€ 객체λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•œ κ°œλ…μ΄λ©°, ν΄λž˜μŠ€λŠ” νƒ€μž…μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ λ§€μ»€λ‹ˆμ¦˜ 쀑 ν•˜λ‚˜μ΄λ‹€.
- νƒ€μž…μ„ λ‚˜λˆ„λŠ” 기쀀은 객체가 μˆ˜ν–‰ν•˜λŠ” 행동이닀!

κ²°κ΅­, 객체λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄ νƒ€μž…μ„ κ²°μ •ν•œ λ‹€μŒ, νƒ€μž…μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ 클래슀λ₯Ό ν™œμš©ν•˜λŠ” 것이닀.

Comments