본문으둜 κ±΄λ„ˆλ›°κΈ°

🌈 Chapter 2: μ΄μƒν•œ λ‚˜λΌμ˜ 객체

✌ 객체지ν–₯κ³Ό 인지 λŠ₯λ ₯​

  • κ°μ²΄λž€ 인간이 λΆ„λͺ…ν•˜κ²Œ μΈμ§€ν•˜κ³  ꡬ별할 수 μžˆλŠ” 물리적인 λ˜λŠ” κ°œλ…μ μΈ 경계λ₯Ό μ§€λ‹Œ μ–΄λ–€ 것이닀.
  • 객체지ν–₯ νŽ˜λŸ¬λ‹€μž„μ˜ λͺ©μ μ€ ν˜„μ‹€ 세계λ₯Ό λͺ¨λ°©ν•˜λŠ” 것이 μ•„λ‹ˆλΌ ν˜„μ‹€ 세계λ₯Ό 기반으둜 μƒˆλ‘œμš΄ 세계λ₯Ό μ°½μ‘°ν•˜λŠ” 것이닀. λ”°λΌμ„œ μ†Œν”„νŠΈμ›¨μ–΄ μ„Έκ³„μ—μ„œ μ‚΄μ•„κ°€λŠ” κ°μ²΄λŠ” ν˜„μ‹€ 세계에 μ‘΄μž¬ν•˜λŠ” κ°μ²΄μ™€λŠ” μ „ν˜€ λ‹€λ₯Έ λͺ¨μŠ΅μ„ λ³΄μ΄λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

✌ 객체, 그리고 μ†Œν”„νŠΈμ›¨μ–΄ λ‚˜λΌβ€‹

  • ν•˜λ‚˜μ˜ κ°œλ³„μ μΈ μ‹€μ²΄λ‘œ 식별 κ°€λŠ₯ν•œ 물리적인 λ˜λŠ” κ°œλ…μ μΈ 사물은 μ–΄λ–€ 것이라도 객체가 될 수 μžˆλ‹€.
  • 객체의 λ‹€μ–‘ν•œ νŠΉμ„±μ„ 효과적으둜 μ„€λͺ…ν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체λ₯Ό μƒνƒœ(state), 행동(behavior), μ‹λ³„μž(identity)λ₯Ό μ§€λ‹Œ μ‹€μ²΄λ‘œ λ³΄λŠ” 것이 κ°€μž₯ νš¨κ³Όμ μ΄λ‹€.
  • 이 μ±…μ—μ„œλŠ” 객체λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•˜κΈ°λ‘œ ν•œλ‹€.

κ°μ²΄λž€ 식별 κ°€λŠ₯ν•œ κ°œλ… λ˜λŠ” 사물이닀. κ°μ²΄λŠ” μžλ™μ°¨μ²˜λŸΌ 만질 수 μžˆλŠ” ꡬ체적인 사물일 μˆ˜λ„ 있고, μ‹œκ°„μ²˜λŸΌ 좔상적인 κ°œλ…μΌ μˆ˜λ„ μžˆλ‹€.
κ°μ²΄λŠ” ꡬ별 κ°€λŠ₯ν•œ μ‹λ³„μž, νŠΉμ§•μ μΈ 행동, λ³€κ²½ κ°€λŠ₯ν•œ μƒνƒœλ₯Ό 가진닀.
μ†Œν”„νŠΈμ›¨μ–΄ μ•ˆμ—μ„œ κ°μ²΄λŠ” μ €μž₯된 μƒνƒœμ™€ μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό 톡해 κ΅¬ν˜„λœλ‹€.

🎈 μƒνƒœβ€‹

🐣 μ™œ μƒνƒœκ°€ ν•„μš”ν•œκ°€β€‹

  • 객체가 μ£Όλ³€ ν™˜κ²½κ³Όμ˜ μƒν˜Έμž‘μš©μ— μ–΄λ–»κ²Œ λ°˜μ‘ν•˜λŠ”κ°€λŠ” κ·Έ μ‹œμ κΉŒμ§€ 객체에 μ–΄λ–€ 일이 λ°œμƒν–ˆλŠλƒμ— μ’Œμš°λœλ‹€.
  • λͺ¨λ“  μΌλ“€μ˜ 곡톡점은 μ–΄λ–€ ν–‰λ™μ˜ κ²°κ³ΌλŠ” 과거에 μ–΄λ–€ 행동듀이 μΌμ–΄λ‚¬μ—ˆλŠλƒμ— μ˜μ‘΄ν•œλ‹€λŠ” 것이닀.
  • μƒνƒœλ₯Ό μ΄μš©ν•˜λ©΄ 과거의 λͺ¨λ“  행동 이λ ₯을 μ„€λͺ…ν•˜μ§€ μ•Šκ³ λ„ ν–‰λ™μ˜ κ²°κ³Όλ₯Ό μ‰½κ²Œ μ˜ˆμΈ‘ν•˜κ³  μ„€λͺ…ν•  수 μžˆλ‹€.
  • μƒνƒœλ₯Ό μ΄μš©ν•˜λ©΄ 과거에 얽맀이지 μ•Šκ³  ν˜„μž¬λ₯Ό 기반으둜 객체의 행동 방식을 이해할 수 μžˆλ‹€.

🐣 μƒνƒœμ™€ ν”„λ‘œνΌν‹°β€‹

  • 숫자, λ¬Έμžμ—΄, μ–‘, 속도, μ‹œκ°„, λ‚ μ§œ, μ°Έ/거짓과 같은 λ‹¨μˆœν•œ 값듀은 객체가 μ•„λ‹ˆλ‹€.
  • λ‹¨μˆœν•œ 값듀은 κ·Έ 자체둜 독립적인 의미λ₯Ό κ°€μ§€κΈ°λ³΄λ‹€λŠ” λ‹€λ₯Έ 객체의 νŠΉμ„±μ„ ν‘œν˜„ν•˜λŠ” 데 μ‚¬μš©λœλ‹€. λ‹€μ‹œ 말해 λ‹€λ₯Έ 객체의 μƒνƒœλ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
  • λ‹¨μˆœν•œ 값은 객체가 μ•„λ‹ˆμ§€λ§Œ 객체의 μƒνƒœλ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ μˆ˜λ‹¨μ΄λ‹€.
  • λͺ¨λ“  객체의 μƒνƒœλŠ” λ‹¨μˆœν•œ κ°’κ³Ό 객체의 μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.
  • μ΄λ•Œ 객체의 μƒνƒœλ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  νŠΉμ§•μ„ 톡틀어 객체의 ν”„λ‘œνΌν‹°(property)라고 ν•œλ‹€. 일반적으둜 ν”„λ‘œνΌν‹°λŠ” λ³€κ²½λ˜μ§€ μ•Šκ³  κ³ μ •λ˜κΈ° λ•Œλ¬Έμ— 정적이닀.
  • 반면 ν”„λ‘œνΌν‹° κ°’(property value)은 μ‹œκ°„μ΄ 흐름에 따라 λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ— 동적이닀.
  • 객체와 객체 μ‚¬μ΄μ˜ 의미 μžˆλŠ” 연결을 링크(link)라고 ν•œλ‹€. 객체와 객체 μ‚¬μ΄μ—λŠ” 링크가 μ‘΄μž¬ν•΄μ•Όλ§Œ μš”μ²­μ„ 보내고 받을 수 μžˆλ‹€. 즉, 객체의 링크λ₯Ό ν†΅ν•΄μ„œλ§Œ λ©”μ‹œμ§€λ₯Ό 주고받을 수 μžˆλ‹€.
  • λ§ν¬λŠ” 객체가 λ‹€λ₯Έ 객체λ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€λŠ” 것을 μ˜λ―Έν•˜λ©°, 이것은 일반적으둜 ν•œ 객체가 λ‹€λ₯Έ 객체의 μ‹λ³„μžλ₯Ό μ•Œκ³  μžˆλ‹€λŠ” κ²ƒμœΌλ‘œ ν‘œν˜„λœλ‹€.
  • 객체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ‹¨μˆœν•œ 값은 속성(attribute)이라고 ν•œλ‹€.
  • 객체의 ν”„λ‘œνΌν‹°λŠ” λ‹¨μˆœν•œ 값인 속성과 λ‹€λ₯Έ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ§ν¬λΌλŠ” 두 가지 μ’…λ₯˜μ˜ μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.
  • 이 μ±…μ—μ„œ 객체의 μƒνƒœλ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•œλ‹€.

μƒνƒœλŠ” νŠΉμ • μ‹œμ μ— 객체가 가지고 μžˆλŠ” μ •λ³΄μ˜ μ§‘ν•©μœΌλ‘œ 객체의 ꡬ쑰적 νŠΉμ§•μ„ ν‘œν˜„ν•œλ‹€.
객체의 μƒνƒœλŠ” 객체에 μ‘΄μž¬ν•˜λŠ” 정적인 ν”„λ‘œνΌν‹°μ™€ 동적인 ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ΅¬μ„±λœλ‹€.
객체의 ν”„λ‘œνΌν‹°λŠ” λ‹¨μˆœν•œ κ°’κ³Ό λ‹€λ₯Έ 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” 링크둜 ꡬ뢄할 수 μžˆλ‹€.

  • κ°μ²΄λŠ” 자율적인 μ‘΄μž¬λ‘œμ„œ 객체지ν–₯의 μ„Έκ³„μ—μ„œ κ°μ²΄λŠ” λ‹€λ₯Έ 객체의 μƒνƒœμ— μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  μˆ˜λ„, μƒνƒœλ₯Ό λ³€κ²½ν•  μˆ˜λ„ μ—†λ‹€. 자율적인 κ°μ²΄λŠ” 슀슀둜 μžμ‹ μ˜ μƒνƒœλ₯Ό μ±…μž„μ Έμ•Ό ν•œλ‹€.
  • 객체지ν–₯의 κΈ°λ³Έ 사상은 μƒνƒœμ™€ μƒνƒœλ₯Ό μ‘°μ§ν•˜κΈ° μœ„ν•œ 행동을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬ΆλŠ” κ²ƒμ΄λΌλŠ” 점을 κΈ°μ–΅ν•˜λΌ. κ°μ²΄λŠ” 슀슀둜의 행동에 μ˜ν•΄μ„œλ§Œ μƒνƒœκ°€ λ³€κ²½λ˜λŠ” 것을 보μž₯ν•¨μœΌλ‘œμ¨ 객체의 μžμœ¨μ„±μ„ μœ μ§€ν•œλ‹€.

🎈 행동​

🐣 μƒνƒœμ™€ 행동​

  • 객체의 μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” 것은 객체의 자발적인 행동뿐이닀.
  • 객체의 행동에 μ˜ν•΄ 객체의 μƒνƒœκ°€ λ³€κ²½λœλ‹€λŠ” 것은 행동이 λΆ€μˆ˜ 효과(side effect)λ₯Ό μ΄ˆλž˜ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • 객체의 행동은 객체의 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€μ§€λ§Œ ν–‰λ™μ˜ κ²°κ³ΌλŠ” 객체의 μƒνƒœμ— μ˜μ‘΄μ μ΄λ‹€. λ”°λΌμ„œ μƒνƒœμ™€ 행동 μ‚¬μ΄μ—λŠ” λ‹€μŒκ³Ό 같은 관계가 μžˆμŒμ„ μ•Œ 수 μžˆλ‹€.
  • 객체의 행동은 μƒνƒœμ— 영ν–₯을 λ°›λŠ”λ‹€.
  • 객체의 행동은 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚¨λ‹€.

🐣 ν˜‘λ ₯κ³Ό 행동​

  • 객체가 λ‹€λ₯Έ 객체와 ν˜‘λ ₯ν•˜λŠ” μœ μΌν•œ 방법은 λ‹€λ₯Έ κ°μ²΄μ—κ²Œ μš”μ²­μ„ λ³΄λ‚΄λŠ” 것이닀.
  • 객체가 λ‹€λ₯Έ 객체와 λ©”μ‹œμ§€λ₯Ό ν†΅ν•΄μ„œλ§Œ μ˜μ‚¬μ†Œν†΅ν•  수 μžˆλ‹€λŠ” 것을 κΈ°μ–΅ν•˜λΌ. κ°μ²΄λŠ” μˆ˜μ‹ λœ λ©”μ‹œμ§€μ— 따라 적절히 ν–‰λ™ν•˜λ©΄μ„œ ν˜‘λ ₯에 μ°Έμ—¬ν•˜κ³  κ·Έ 결과둜 μžμ‹ μ˜ μƒνƒœλ₯Ό λ³€κ²½ν•œλ‹€.
  • κ°μ²΄λŠ” ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” κ³Όμ •μ—μ„œ 자기 μžμ‹ μ˜ μƒνƒœλΏλ§Œ μ•„λ‹ˆλΌ λ‹€λ₯Έ 객체의 μƒνƒœ 변경을 μœ λ°œν•  μˆ˜λ„ μžˆλ‹€.(λ‚˜λŠ” 물을 λ§ˆμ‹œλ©΄ 물은 λ§ˆμ‹ λ§ŒνΌ 양이 쀄어야 ν•œλ‹€.)
  • 객체의 ν–‰λ™μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” κ²°κ³ΌλŠ” 두 가지 κ΄€μ μ—μ„œ μ„€λͺ…ν•  수 이싿. 객체의 행동은 이 두 가지 κ΄€μ μ˜ λΆ€μˆ˜νš¨κ³Όλ₯Ό λͺ…ν™•ν•˜κ²Œ μ„œμˆ ν•΄μ•Ό ν•œλ‹€.
  • 객체 μžμ‹ μ˜ μƒνƒœ λ³€κ²½
  • 행동 λ‚΄μ—μ„œ ν˜‘λ ₯ν•˜λŠ” λ‹€λ₯Έ 객체에 λŒ€ν•œ λ©”μ‹œμ§€ 전솑
  • 이 μ±…μ—μ„œλŠ” 행동을 λ‹€μŒκ³Ό 같이 μ •μ˜ν•œλ‹€.

ν–‰λ™μ΄λž€ μ™ΈλΆ€μ˜ μš”μ³₯ λ˜λŠ” μˆ˜μ‹ λœ λ©”μ‹œμ§€μ— μ‘λ‹΅ν•˜κΈ° μœ„ν•΄ λ™μž‘ν•˜κ³  λ°˜μ‘ν•˜λŠ” ν™œλ™μ΄λ‹€.
ν–‰λ™μ˜ 결과둜 κ°μ²΄λŠ” μžμ‹ μ˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ λ‹€λ₯Έ κ°μ²΄μ—κ²Œ λ©”μ‹œμ§€λ₯Ό 전달할 수 μžˆλ‹€.
κ°μ²΄λŠ” 행동을 톡해 λ‹€λ₯Έ κ°μ²΄μ™€μ˜ ν˜‘λ ₯에 μ°Έμ—¬ν•˜λ―€λ‘œ 항동은 외뢀에 κ°€μ‹œμ μ΄μ–΄μ•Ό ν•œλ‹€.

🐣 μƒνƒœ μΊ‘μŠν™”β€‹

  • κ°μ²΄λŠ” μƒνƒœλ₯Ό 캑슐 μ•ˆμ— 감좰둔 채 μ™ΈλΆ€λ‘œ λ…ΈμΆœν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 객체가 외뢀에 λ…ΈμΆœν•˜λŠ” 것은 행동뿐이며, μ™ΈλΆ€μ—μ„œ 객체에 μ ‘κ·Όν•  수 μžˆλŠ” μœ μΌν•œ 방법 μ—­μ‹œ 행동뿐이닀.
  • 객체의 행동을 μœ λ°œν•˜λŠ” 것은 μ™ΈλΆ€λ‘œλΆ€ν„° μ „λ‹¬λœ λ©”μ‹œμ§€μ§€λ§Œ 객체의 μƒνƒœλ₯Ό 변경할지 μ—¬λΆ€λŠ” 객체 슀슀둜 κ²°μ •ν•œλ‹€. κ°μ²΄μ—κ²Œ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜λŠ” μ™ΈλΆ€ κ°μ²΄λŠ” λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜λŠ” 객체의 μƒνƒœκ°€ λ³€κ²½λœλ‹€λŠ” 사싀쑰차 μ•Œμ§€ λͺ»ν•œλ‹€.
  • μƒνƒœλ₯Ό 외뢀에 λ…ΈμΆœμ‹œν‚€μ§€ μ•Šκ³  행동을 κ²½κ³„λ‘œ μΊ‘μŠν™”ν•˜λŠ” 것은 결과적으둜 객체의 μžμœ¨μ„±μ„ 높인닀. 자율적인 κ°μ²΄λŠ” 슀슀둜 νŒλ‹¨ν•˜κ³  슀슀둜 κ²°μ •ν•˜κΈ° λ•Œλ¬Έμ— 객체의 μžμœ¨μ„±μ΄ λ†’μ•„μ§ˆμˆ˜λ‘ 객체의 지λŠ₯도 높아진닀. ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” κ°μ²΄λ“€μ˜ 지λŠ₯이 λ†’μ•„μ§ˆμˆ˜λ‘ ν˜‘λ ₯은 μœ μ—°ν•˜κ³  간결해진닀.
  • 결둠적으둜 μƒνƒœλ₯Ό 잘 μ •μ˜λœ 행동 집합 λ’€λ‘œ μΊ‘μŠν™”ν•˜λŠ” 것은 객체의 μžμœ¨μ„±μ„ 높이고 ν˜‘λ ₯을 λ‹¨μˆœν™”ν•˜κ³  μœ μ—°ν•˜κ²Œ λ§Œλ“ λ‹€. 이것이 μƒνƒœλ₯Ό μΊ‘μŠν™”ν•΄μ•Ό ν•˜λŠ” μ΄μœ λ‹€.

🐣 μ‹λ³„μžβ€‹

  • 객체가 식별 κ°€λŠ₯ν•˜λ‹€λŠ” 것은 객체λ₯Ό μ„œλ‘œ ꡬ별할 수 μžˆλŠ” νŠΉμ •ν•œ ν”„λ‘œνΌν‹°κ°€ 객체 μ•ˆμ— μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 이 ν”„λ‘œνΌν‹°λ₯Ό μ‹λ³„μžλΌκ³  ν•œλ‹€. λͺ¨λ“  κ°μ²΄λŠ” μ‹λ³„μžλ₯Ό 가지며 μ‹λ³„μžλ₯Ό μ΄μš©ν•΄ 객체λ₯Ό ꡬ별할 수 μžˆλ‹€.
  • 객체가 μ•„λ‹Œ λ‹¨μˆœν•œ 값은 μ‹λ³„μžλ₯Ό 가지지 μ•ŠλŠ”λ‹€. κ°’κ³Ό 객체의 κ°€μž₯ 큰 차이점은 값은 μ‹λ³„μžλ₯Ό 가지지 μ•Šμ§€λ§Œ κ°μ²΄λŠ” μ‹λ³„μžλ₯Ό κ°€μ§„λ‹€λŠ” 점이닀.
  • κ°’(value)은 숫자, λ¬Έμžμ—΄, λ‚ μ§œ, μ‹œκ°„, κΈˆμ•‘ λ“±κ³Ό 같이 λ³€ν•˜μ§€ μ•ŠλŠ” 양을 λͺ¨λΈλ§ν•œλ‹€.
  • 값이 같은지 μ—¬λΆ€λŠ” μƒνƒœκ°€ 같은지λ₯Ό μ΄μš©ν•΄ νŒλ‹¨ν•œλ‹€. 이처럼 μƒνƒœλ₯Ό μ΄μš©ν•΄ 두 값이 같은지 νŒλ‹¨ν•  수 μžˆλŠ” μ„±μ§ˆμ„ 동등성(equality)이라고 ν•œλ‹€.
  • μƒνƒœλ₯Ό μ΄μš©ν•΄ 동등성을 νŒλ‹¨ν•  수 μžˆλŠ” μ΄μœ λŠ” κ°’μ˜ μƒνƒœκ°€ λ³€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
  • κ°μ²΄λŠ” μ‹œκ°„μ— 따라 λ³€κ²½λ˜λŠ” μƒνƒœλ₯Ό ν¬ν•¨ν•˜λ©°, 행동을 톡해 μƒνƒœλ₯Ό λ³€κ²½ν•˜κΈ° λ•Œλ¬Έμ— κ°μ²΄λŠ” κ°€λ³€ μƒνƒœλ₯Ό 가진닀고 λ§ν•œλ‹€. νƒ€μž…μ΄ 같은 두 객체의 μƒνƒœκ°€ μ™„μ „νžˆ λ˜‘κ°™λ”λΌλ„ 두 κ°μ²΄λŠ” 독립적인 λ³„κ°œμ˜ 객체둜 닀뀄야 ν•œλ‹€.
  • 두 객체의 μƒνƒœκ°€ λ‹€λ₯΄λ”라도 μ‹λ³„μžκ°€ κ°™λ‹€λ©΄ 두 객체λ₯Ό 같은 객체둜 νŒλ‹¨ν•  수 μžˆλ‹€.(μ–΄λ¦° μ‹œμ ˆ λ‚˜μ™€ ν˜„μž¬μ˜ λ‚˜λŠ” 동일 인물이닀.) 이처럼 μ‹λ³„μžλ₯Ό 기반으둜 객체가 같은지λ₯Ό νŒλ‹¨ν•  수 μžˆλŠ” μ„±μ§ˆμ„ 동일성(identical)이라고 ν•œλ‹€.
  • μƒνƒœλ₯Ό 기반으둜 객체의 동일성을 νŒλ‹¨ν•  수 μ—†λŠ” μ΄μœ λŠ” μ‹œκ°„μ΄ 흐름에 따라 객체의 μƒνƒœκ°€ λ³€ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. λ”°λΌμ„œ μƒνƒœκ°€ 가변적인 두 객체의 동일성을 νŒλ‹¨ν•˜κΈ° μœ„ν•΄μ„œλŠ” μƒνƒœ 변경에 독립적인 λ³„λ„μ˜ μ‹λ³„μžλ₯Ό μ΄μš©ν•  μˆ˜λ°–μ— μ—†λ‹€.

μ‹λ³„μžλž€ μ–΄λ–€ 객체λ₯Ό λ‹€λ₯Έ 객체와 κ΅¬λΆ„ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” 객체의 ν”„λ‘œνΌν‹°λ‹€.
값은 μ‹λ²Œμžλ₯Ό 가지지 μ•ˆνž‰ λ•Œλ¬Έμ— μƒνƒœλ₯Ό μ΄μš©ν•œ 동등성 검사λ₯Ό 톡해 두 μΈμŠ€ν„΄μŠ€λ₯Ό 비ꡐ해야 ν•œλ‹€.
κ°μ²΄λŠ” μƒνƒœκ°€ 변경될 수 있기 λ•Œλ¬Έμ— μ‹λ³„μžλ₯Ό μ΄μš©ν•œ 동일성 검사λ₯Ό 톡해 두 μΈμŠ€ν„΄μŠ€λ₯Ό 비ꡐ할 수 μžˆλ‹€.

  • 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” 객체와 값을 μ§€μΉ­ν•˜λŠ” λ³„λ„μ˜ μš©μ–΄λ₯Ό μ‚¬μš©ν•˜κΈ°λ„ ν•˜λŠ”λ° μ°Έμ‘° 객체(reference object), λ˜λŠ” μ—”ν‹°ν‹°(entity)λŠ” μ‹λ³„μžλ₯Ό μ§€λ‹Œ 의미의 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μš©μ–΄κ³  κ°’ 객체(value object)λŠ” μ‹λ³„μžλ₯Ό 가지지 μ•ŠλŠ” 값을 κ°€λ¦¬ν‚€λŠ” μš©μ–΄λ‹€.
  • κ°μ²΄λŠ” μƒνƒœλ₯Ό 가지며 μƒνƒœλŠ” λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.
  • 객체의 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€λŠ” 것은 객체의 행동이닀.
    • ν–‰λ™μ˜ κ²°κ³ΌλŠ” μƒνƒœμ— 의쑴적이며 μƒνƒœλ₯Ό μ΄μš©ν•΄ μ„œμˆ ν•  수 μžˆλ‹€.
    • ν–‰λ™μ˜ μˆœμ„œκ°€ μ‹€ν–‰ 결과에 따라 영ν–₯을 λ―ΈμΉœλ‹€.
  • κ°μ²΄λŠ” μ–΄λ–€ μƒν…Œ μžˆλ”λΌλ„ μœ μΌν•˜κ²Œ 식별 κ°€λŠ₯ν•˜λ‹€.

✌ 행동이 μƒνƒœλ₯Ό κ²°μ •ν•œλ‹€β€‹

  • μƒνƒœλ₯Ό λ¨Όμ € κ²°μ •ν•˜κ³  행동을 λ‚˜μ€‘μ— κ²°μ •ν•˜λŠ” 방법은 섀계에 λ‚˜μœ 영ν–₯을 λΌμΉœλ‹€.
  1. μƒνƒœλ₯Ό λ¨Όμ € κ²°μ •ν•  경우 μΊ‘μŠν™”κ°€ μ €ν•΄λœλ‹€.
    μƒνƒœμ— μ΄ˆμ μ„ 맞좜 경우 μƒνƒœκ°€ 객체 λ‚΄λΆ€λ‘œ κΉ”λ”ν•˜κ²Œ μΊ‘μŠν™”λ˜μ§€ λͺ»ν•˜κ³  곡용 μΈν„°νŽ˜μ΄μŠ€μ— κ·ΈλŒ€λ‘œ λ…ΈμΆœλ˜λ²„λ¦΄ ν™•λ₯ μ΄ 높아진닀.
  2. 객체λ₯Ό ν˜‘λ ₯μžκ°€ μ•„λ‹Œ 고립된 μ„¬μœΌλ‘œ λ§Œλ“ λ‹€.
    μƒνƒœλ₯Ό λ¨Όμ € κ³ λ €ν•˜λŠ” 방식은 ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯μ—μ„œ 멀리 λ²—μ–΄λ‚œ 채 객체λ₯Ό μ„€κ³„ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ ν˜‘λ ₯에 μ ν•©ν•˜μ§€ λͺ»ν•œ 객체λ₯Ό μ°½μ‘°ν•˜κ²Œ λœλ‹€.
  3. 객체의 μž¬μ‚¬μš©μ„±μ΄ μ €ν•˜λœλ‹€.
    μƒνƒœμ— μ΄ˆμ μ„ 맞좘 κ°μ²΄λŠ” λ‹€μ–‘ν•œ ν˜‘λ ₯에 μ°Έμ—¬ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— μž¬μ‚¬μš©μ„±μ΄ μ €ν•˜λ  μˆ˜λ°–μ— μ—†λ‹€.
  • 객체의 접합성을 κ²°μ •ν•˜λŠ” 것은 μƒνƒœκ°€ μ•„λ‹ˆλΌ 객체의 행동이닀.
  • 객체지ν–₯ μ„€κ³„λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ ν˜‘λ ₯을 μƒκ°ν•˜κ³  ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” 데 ν•„μš”ν•œ 행동을 μƒκ°ν•œ ν›„ 행동을 μˆ˜ν–‰ν•  객체λ₯Ό μ„ νƒν•˜λŠ” λ°©μ‹μœΌλ‘œ μˆ˜ν–‰λœλ‹€.
  • 행동을 κ²°μ •ν•œν›„μ—μ•Ό 행동에 ν•„μš”ν•œ 정보가 무엇인지λ₯Ό κ³ λ €ν•˜κ²Œ 되며 이 κ³Όμ •μ—μ„œ ν•„μš”ν•œ μƒνƒœκ°€ κ²°μ •λœλ‹€.
  • λ”°λΌμ„œ λ¨Όμ € 객체의 행동을 κ²°μ •ν•˜κ³  κ·Έ 후에 행동에 μ μ ˆν•œ μƒνƒœλ₯Ό μ„ νƒν•˜κ²Œ λœλ‹€.
  • μ–΄λ–€ μ±…μž„μ΄ ν•„μš”ν•œκ°€λ₯Ό κ²°μ •ν•˜λŠ” 과정이 전체 섀계λ₯Ό 주도해야 ν•œλ‹€.
  • μ±…μž„-주도 섀계(Responsibility-Driven Design, RDD)λŠ” ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯ μ•ˆμ—μ„œ 객체의 행동을 μƒκ°ν•˜λ„λ‘ λ„μ›€μœΌλ‘œμ¨ 응집도 λ†’κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ 객체λ₯Ό λ§Œλ“€ 수 있게 ν•œλ‹€.

✌ μ€μœ μ™€ 객체​

🐣 μ˜μΈν™”β€‹

  • ν˜„μ‹€ μ†μ˜ 객체와 μ†Œν”„νŠΈμ›¨μ–΄ 객체 μ‚¬μ΄μ˜ κ°€μž₯ 큰 차이점은 ν˜„μ‹€ μ†μ—μ„œλŠ” μˆ˜λ™μ μΈ μ‘΄μž¬κ°€ μ†Œν”„νŠΈμ›¨μ–΄ 객체둜 κ΅¬ν˜„λ  λ•ŒλŠ” λŠ₯λ™μ μœΌλ‘œ λ³€ν•œλ‹€λŠ” 것이닀.
  • ν˜„μ‹€μ˜ 객체보닀 더 λ§Žμ€ 일을 ν•  수 μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 객체의 νŠΉμ§•μ„ μ˜μΈν™”(anthropomorphism)
  • μ†Œν”„νŠΈμ›¨μ–΄ μ•ˆμ— κ΅¬μΆ•λ˜λŠ” 객체지ν–₯ μ„Έκ³„λŠ” ν˜„μ‹€μ„ λͺ¨λ°©ν•œ 것이 μ•„λ‹ˆλ‹€.
  • κ°μ²΄μ§€ν–‰μ˜ μ„Έκ³„λŠ” ν˜„μ‹€μ˜ 좔상화가 μ•„λ‹ˆλ‹€.

🐣 μ€μœ β€‹

  • 객체지ν–₯의 세계와 ν˜„μ‹€ 세계 μ‚¬μ΄μ—λŠ” μ „ν˜€ 상관이 μ—†λŠ” κ²ƒμΌκΉŒ? κ·Έλ ‡μ§€λŠ” μ•Šκ³  λ‹€λ§Œ λͺ¨λ°©μ΄λ‚˜ μΆ”μƒν™”μ˜ μˆ˜μ€€μ΄ μ•„λ‹Œ λ‹€λ₯Έ κ΄€μ μ—μ„œ μœ μ‚¬μ„±μ„ 가지고 μžˆμ„ 뿐이닀.
  • ν˜„μ‹€ 세계와 객체지ν–₯ 세계 μ‚¬μ΄μ˜ 관계λ₯Ό μ’€ 더 μ •ν™•ν•˜κ²Œ μ„€λͺ…ν•  수 μžˆλŠ” λ‹¨μ–΄λŠ” μ€μœ (metaphor)λ‹€.
  • μ€μœ λž€ μ‹€μ œλ‘œλŠ” μ μš©λ˜μ§€ μ•ŠλŠ” ν•œ 가지 κ°œλ…μ„ μ΄μš©ν•΄ λ‹€λ₯Έ κ°œλ…μ„ μ„œμˆ ν•˜λŠ” λŒ€ν™”μ˜ ν•œ ν˜•νƒœλ‹€.
  • ν˜„μ‹€ μ†μ˜ 객체의 의미 일뢀가 μ†Œν”„νŠΈμ›¨μ–΄ 객체둜 μ „λ‹¬λ˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ κ°μ²΄λŠ” ν˜„μ‹€ μ†μ˜ 객체에 λŒ€ν•œ μ€μœ λ‹€.
  • μ€μœ λŠ” ν‘œν˜„μ  차이(representational gap) λ˜λŠ” 의미적 차이(semantic gap)λΌλŠ” 논점과 관련성이 κΉŠλ‹€. μ—¬κΈ°μ„œ μ°¨μ΄λž€ μ†Œν”„νŠΈμ›¨μ–΄μ— λŒ€ν•΄ μ‚¬λžŒλ“€μ΄ μƒκ°ν•˜λŠ” λͺ¨μŠ΅κ³Ό μ‹€μ œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν‘œν˜„ μ‚¬μ΄μ˜ 차이λ₯Ό μ˜λ―Έν•œλ‹€.
  • μ†Œν”„νŠΈμ›¨μ–΄ 객체에 λŒ€ν•œ ν˜„μ‹€ 객체의 μ€μœ λ₯Ό 효과적으둜 μ‚¬μš©ν•  경우 ν‘œν˜„μ  차이λ₯Ό 쀄일 수 있으며, μ΄ν•΄ν•˜κΈ° 쉽고 μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•œ μ‡Όν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.