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

🌈 Chapter 3: νƒ€μž…κ³Ό 좔상화

✌ 좔상화λ₯Ό ν†΅ν•œ λ³΅μž‘μ„± 극볡​

  • μΆ”μƒν™”λž€ ν˜„μ‹€μ—μ„œ μΆœλ°œν•˜λ˜ λΆˆν•„μš”ν•œ 뢀뢄을 λ„λ €λ‚΄κ°€λ©΄μ„œ μ‚¬λ¬Όμ˜ λ†€λΌμš΄ λ³Έμ§ˆμ„ λ“œλŸ¬λ‚˜κ²Œ ν•˜λŠ” 과정이닀.
  • μΆ”μƒν™”μ˜ λͺ©μ μ€ λΆˆν•„μš”ν•œ 뢀뢄을 λ¬΄μ‹œν•¨μœΌλ‘œμ¨ ν˜„μ‹€μ— μ‘΄μž¬ν•˜λŠ” λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•˜λŠ” 것이닀.
  • 이 μ±…μ—μ„œ 좔상화λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•œλ‹€.

좔상화​

μ–΄λ–€ 양상, μ„ΈλΆ€ 사항, ꡬ쑰λ₯Ό μ’€ 더 λͺ…ν™•ν•˜κ²Œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ νŠΉμ • μ ˆμ°¨λ‚˜ 물체λ₯Ό μ˜λ„μ μœΌλ‘œ μƒλž΅ν•˜κ±°λ‚˜ 감좀으둜써 λ³΅μž‘λ„λ₯Ό κ·Ήλ³΅ν•˜λŠ” 방법이닀.
λ³΅μž‘μ„±μ„ 닀루기 μœ„ν•΄ μΆ”μƒν™˜λŠ 두 μ°¨μ›μ—μ„œ 이뀄진닀.

  • 첫 번째 차원은 ꡬ체적인 사물듀 κ°„μ˜ 곡톡점은 μ·¨ν•˜κ³  차이점은 λ²„λ¦¬λŠ” μΌλ°˜ν™”λ₯Ό 톡해 λ‹¨μˆœν•˜κ²Œ λ§Œλ“œλŠ” 것이닀.
  • 두 번째 차원은 μ€‘μš”ν•œ 뢀뢄을 κ°•μ‘°ν•˜κΈ° μœ„ν•΄ λΆˆν•„μš”ν•œ μ„ΈλΆ€ 사항을 μ œκ±°ν•¨μœΌλ‘œμ¨ λ‹¨μˆœν•˜κ²Œ λ§Œλ“œλŠ” 것이닀.

λͺ¨λ“  κ²½μš°μ— μΆ”μƒν™”μ˜ λͺ©μ μ€ λ³΅μž‘μ„±μ„ μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ μˆ˜μ€€μœΌλ‘œ λ‹¨μˆœν™”ν•˜λŠ” κ²ƒμ΄λΌλŠ” 점이닀.

  • 객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ€ κ°μ²΄λΌλŠ” 좔상화λ₯Ό 톡해 ν˜„μ‹€μ˜ λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•œλ‹€.

✌ 객체지ν–₯κ³Ό 좔상화​

🎈 κ°œλ…β€‹

  • 곡톡점을 기반으둜 객체듀을 λ¬ΆκΈ° μœ„ν•œ 그릇을 κ°œλ…(concept)이라고 ν•œλ‹€.
  • κ°œλ…μ΄λž€ 일반적으둜 μš°λ¦¬κ°€ μΈμ‹ν•˜κ³  μžˆλŠ” λ‹€μ–‘ν•œ μ‚¬λ¬Όμ΄λ‚˜ 객체에 μ μš©ν•  수 μžˆλŠ” μ•„μ΄λ””μ–΄λ‚˜ 관념을 λœ»ν•œλ‹€. (ex. ν•˜λŠ˜μ„ λ‚˜λŠ” κ΅ν†΅μˆ˜λ‹¨μ„ μ§€μΉ­ν•˜λŠ” κ°œλ…μ€ 'λΉ„ν–‰κΈ°'이닀.)
  • κ°œλ…μ„ μ΄μš©ν•˜λ©΄ 객체λ₯Ό μ—¬λŸ¬ 그룹으둜 λΆ„λ₯˜(classification)ν•  수 μžˆλ‹€.
  • κ°œλ…μ€ 곡톡점을 기반으둜 객체λ₯Ό λΆ„λ₯˜ν•  수 μžˆλŠ” μΌμ’…μ˜ 체라고 ν•  수 μžˆλ‹€. κ²°κ΅­ 각 κ°μ²΄λŠ” νŠΉμ •ν•œ κ°œλ…μ„ ν‘œν˜„ν•˜λŠ” 그룹의 μΌμ›μœΌλ‘œ ν¬ν•¨ν•œλ‹€.
  • 객체에 μ–΄λ–€ κ°œλ…μ„ μ μš©ν•˜λŠ” 것이 κ°€λŠ₯ν•΄μ„œ κ°œλ… 그룹의 일원이 될 λ•Œ 객체λ₯Ό κ·Έ κ°œλ…μ˜ μΈμŠ€ν„΄μŠ€(instance)라고 ν•œλ‹€.

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

  • κ°œλ…μ€ 객체λ₯Ό λΆ„λ₯˜ν•  수 μžˆλŠ” 틀을 μ œκ³΅ν•œλ‹€.

🎈 κ°œλ…μ˜ μ„Έ 가지 관점​

  • κ°œλ…μ€ νŠΉμ •ν•œ 객체가 μ–΄λ–€ 그룹에 속할 것인지λ₯Ό κ²°μ •ν•œλ‹€.
  • μ–΄λ–€ 객체에 μ–΄λ–€ κ°œλ…μ΄ μ μš©λλ‹€κ³  ν•  λ•ŒλŠ” κ·Έ κ°œλ…μ΄ λΆ€κ°€ν•˜λŠ” 의미λ₯Ό λ§Œμ‘±μ‹œν‚΄μœΌλ‘œμ¨ λ‹€λ₯Έ 객체와 ν•¨κ»˜ ν•΄λ‹Ή κ°œλ…μ˜ 일원이 λλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • 일반적으둜 객체의 λΆ„λ₯˜ μž₯μΉ˜λ‘œμ„œ κ°œλ…μ„ 이야기할 λ•ŒλŠ” μ„Έ 가지 관점을 ν•¨κ»˜ μ–ΈκΈ‰ν•œλ‹€.
  • 심볼(symbol): κ°œλ…μ„ κ°€λ¦¬ν‚€λŠ” κ°„λž΅ν•œ μ΄λ¦„μ΄λ‚˜ λͺ…μΉ­
  • λ‚΄μ—°(intension): κ°œλ…μ˜ μ™„μ „ν•œ μ •μ˜λ₯Ό λ‚˜νƒ€λ‚΄λ©° λ‚΄μ—°μ˜ 의미λ₯Ό μ΄μš©ν•΄ 객체가 κ°œλ…μ— μ†ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό 확인할 수 μžˆλ‹€.
  • μ™Έμ—°(extension): κ°œλ…μ— μ†ν•˜λŠ” λͺ¨λ“  객체의 집합(set)
  • μ‹¬λ³Όμ΄λž€ κ°œλ…μ„ κ°€λ¦¬ν‚€λŠ” 이름
  • λ‚΄μ—°μ΄λž€ κ°œλ…μ˜ 의미λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. 내연은 κ°œλ…μ„ 객체에 μ μš©ν•  수 μžˆγ„΄λŠμ§€ μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜κΈ° μœ„ν•œ 쑰건
  • 외연은 κ°œλ…μ— μ†ν•˜λŠ” 객체듀, 즉 κ°œλ…μ˜ μΈμŠ€ν„΄μŠ€λ“€μ΄ λͺ¨μ—¬ 이뀄진 집합을 가리킨닀.
  • κ°œλ…μ„ μ΄μ˜Ήν•΄ 곡톡점을 가진 객체듀을 λΆ„λ₯˜ν•  수 μžˆλ‹€λŠ” μ•„μ΄λ””μ–΄λŠ” 객체지ν–₯ νŽ˜λŸ¬λ‹€μž„μ΄ λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” κ°€μž₯ 기본적인 인지 μˆ˜λ‹¨μ΄λ‹€.

🎈 객체λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•œ 틀​

  • μ–΄λ–€ 객체와 λ§ˆμ£Όν–ˆμ„ λ•Œ κ°μ²΄μ—κ²Œ μ μš©ν•  κ°œλ…μ„ κ²°μ •ν•˜λŠ” 것은 κ²°κ΅­ ν•΄λ‹Ή 객체λ₯Ό κ°œλ…μ΄ 적용된 객체 μ§‘ν•©μ˜ μΌμ›μœΌλ‘œ λ§žμ•„λ“€μΈλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • λ”°λΌμ„œ λΆ„λ₯˜λž€ νŠΉμ •ν•œ 객체λ₯Ό νŠΉμ •ν•œ κ°œλ…μ˜ 객체 집합에 ν¬ν•¨μ‹œν‚€κ±°λ‚˜ ν¬ν•¨μ‹œν‚€μ§€ μ•ŠλŠ” μž‘μ—…μ„ μ˜λ―Έν•œλ‹€.

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

  • μ–΄λ–€ 객체λ₯Ό μ–΄λ–€ κ°œλ…μœΌλ‘œ λΆ„λ₯˜ν• μ§€κ°€ 객체지ν–₯의 ν’ˆμ§ˆμ„ κ²°μ •ν•œλ‹€. 객체λ₯Ό μ μ ˆν•œ κ°œλ…μ— 따라 λΆ„λ₯˜ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜κ³  변경에 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλ‹€.
  • 더 μ€‘μš”ν•œ 것은 μ μ ˆν•œ λΆ„λ₯˜ μ²΄κ³„λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€λ£¨λŠ” 개발자의 머릿속에 객체λ₯Ό μ‰½κ²Œ μ°Ύκ³  μ‘°μž‘ν•  수 μžˆλŠ” 정신적인 지도λ₯Ό μ œκ³΅ν•œλ‹€λŠ” 것이닀.

🎈 λΆ„λ₯˜λŠ” 좔상화λ₯Ό μœ„ν•œ 도ꡬ닀.​

  • κ°œλ…μ€ μΆ”μƒν™”μ˜ 첫 번째 차원인 μΌλ°˜ν™”λ₯Ό μ μš©ν•œ κ²°κ³Όλ‹€.
  • μΆ”μƒν™”μ˜ 두 번째 차원인 λΆˆν•„μš”ν•œ μ„ΈλΆ€ 사항을 μ œκ±°ν•œλ‹€.
  • κ°œλ…μ€ κ°μ²΄λ“€μ˜ λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•œ 좔상화 도ꡬ닀.

✌ νƒ€μž…β€‹

🎈 νƒ€μž…μ€ κ°œλ…μ΄λ‹€.​

  • νƒ€μž…μ˜ μ •μ˜λŠ” κ°œλ…μ˜ μ •μ˜μ™€ μ™„μ „νžˆ λ™μΌν•˜λ‹€. νƒ€μž…μ€ 곡톡점을 기반으둜 객체듀을 λ¬ΆκΈ° μœ„ν•œ 틀이닀.
  • νƒ€μž…μ€ κ°œλ…κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 심볼, λ‚΄μ—°, 외연을 μ΄μš©ν•΄ μ„œμˆ ν•  수 있으며 νƒ€μž…μ— μ†ν•˜λŠ” 객체 μ—­μ‹œ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.

νƒ€μž…μ€ κ°œλ…κ³Ό λ™μΌν•˜λ‹€. λ”°λΌμ„œ νƒ€μž…μ΄λž€ μš°λ¦¬κ°€ μΈμ‹ν•˜κ³  μžˆλŠ” λ‹€μ–‘ν•œ μ‚¬λ¬Όμ΄λ‚˜ 객체에 μ Ήμš©ν•  수 μžˆλŠ” μ•„μ΄λ””μ–΄λ‚˜ 관념을 μ˜λ―Έν•œλ‹€.
μ–΄λ–€ 객체에 νƒ€μž…μ„ μ μš©ν•  수 μžˆμ„ λ•Œ κ·Έ 객체λ₯Ό νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.
νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λŠ” νƒ€μž…μ„ κ΅¬μ„±ν•˜λŠ” 외연인 객체 μ§‘ν•©μ˜ 일원이 λœλ‹€.

🎈 데이터 νƒ€μž…β€‹

  • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ μ•ˆμ—μ„œ νƒ€μž… μ‹œμŠ€ν…œμ˜ λͺ©μ μ€ λ©”λͺ¨λ¦¬ μ•ˆμ˜ λͺ¨λ“  데이터가 λΉ„νŠΈμ—΄λ‘œ λ³΄μž„μœΌλ‘œμ¨ μ•ΌκΈ°λ˜λŠ” ν˜Όλž€μ„ λ°©μ§€ν•˜λŠ” 것이닀.
  • 결과적으둜 νƒ€μž… μ‹œμŠ€ν…œμ˜ λͺ©μ μ€ 데이터가 잘λͺ» μ‚¬μš©λ˜μ§€ μ•Šλ„λ‘ μ œμ•½μ‚¬ν•­μ„ λΆ€κ³Όν•˜λŠ” 것이닀.

νƒ€μž…μ— κ΄€λ ¨λœ 두 가지 μ€‘μš”ν•œ 사싀​

  1. νƒ€μž…μ€ 데이터가 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠλƒμ— κ΄€ν•œ 것이닀. (μˆ«μžν˜•, λ¬Έμžν˜•... λ“±)
  2. νƒ€μž…μ— μ†ν•œ 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ–΄λ–»κ²Œ ν‘œν˜„ν•˜λŠ”μ§€λŠ” μ™ΈλΆ€λ‘œλΆ€ν„° μ² μ €ν•˜κ²Œ 감좰진닀.
  • 이 μ±…μ—μ„œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ κ΄€μ μ—μ„œ 데이터 νƒ€μž…μ„ λ‹€μŒκ³Ό 같이 μ •μ˜ν•œλ‹€.

데이터 νƒ€μž…μ€ λ©”λͺ¨λ¦¬ μ•ˆμ— μ €μž₯된 λ°μ΄ν„°μ˜ μ’…λ₯˜λ₯Ό λΆ„λ₯˜ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬ 집합에 κ΄€ν•œ 메타데이터닀.
데이터에 λŒ€ν•œ λΆ„λ₯˜λŠ” μ•”μ‹œμ μœΌλ‘œ μ–΄λ–€ μ’…λ₯˜μ˜ 연산이 ν•΄λ‹Ή 데이터에 λŒ€ν•΄ μˆ˜ν–‰λ  수 μžˆλŠ”μ§€λ₯Ό κ²°μ •ν•œλ‹€.

🎈 객체와 νƒ€μž…β€‹

  • 객체λ₯Ό νƒ€μž…μ— 따라 λΆ„λ₯˜ν•˜κ³  κ·Έ νƒ€μž…μ— 이름을 λΆ™μ΄λŠ” 것은 κ²°κ΅­ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ„ μ„ μ–Έν•˜λŠ” 것과 κ°™λ‹€.
  • κ°μ²΄μ—μ„œ μ€‘μš”ν•œ 것은 객체의 행동이닀. μƒνƒœλŠ” ν–‰λ™μ˜ 결과둜 초래된 λΆ€μˆ˜νš¨κ³Όλ₯Ό μ‰½κ²Œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ λ„μž…ν•œ 좔상적인 κ°œλ…μΌ 뿐이닀.
  • 객체가 ν˜‘λ ₯을 μœ„ν•΄ μ–΄λ–€ μ±…μž„μ„ 지녀야 ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” 것이 객체지ν–₯ μ„€κ³„μ˜ 핡심이닀.
  • λ”°λΌμ„œ μ•žμ—μ„œ 데이터 νƒ€μž…μ— κ΄€ν•΄ μ–ΈκΈ‰ν–ˆλ˜ 두 가지 쑰언은 객체의 νƒ€μž…μ„ 이야기할 λ•Œλ„ λ™μΌν•˜κ²Œ μ μš©λœλ‹€.
  1. μ–΄λ–€ 객체가 μ–΄λ–€ νƒ€μž…μ— μ†ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” 것은 객체가 μˆ˜ν–‰ν•˜λŠ” 행동이닀. μ–΄λ–€ 객체듀이 λ™μΌν•œ 행동을 μˆ˜ν–‰ν•  수 μžˆλ‹€λ©΄ κ·Έ 객체듀은 λ™μΌν•œ νƒ€μž…μœΌλ‘œ λΆ„λ₯˜λ  수 μžˆλ‹€.
  2. 객체의 내뢀적인 ν‘œν˜„μ€ μ™ΈλΆ€λ‘œλΆ€ν„° μ² μ €ν•˜κ²Œ 감좰진닀.

🎈 행동이 μš°μ„ μ΄λ‹€.​

  • 객체의 λ‚΄λΆ€ ν‘œν˜„ 방식이 λ‹€λ₯΄λ”라도 μ–΄λ–€ 객체듀이 λ™μΌν•˜κ²Œ ν–‰λ™ν•œλ‹€λ©΄ κ·Έ 객체듀은 λ™μΌν•œ νƒ€μž…μ— μ†ν•œλ‹€. 결과적으둜 λ™μ΄ν•œ μ±…μž„μ„ μˆ˜ν–‰ν•˜λŠ” 일련의 κ°μ²΄λŠ” λ™μΌν•œ νƒ€μž…μ— μ†ν•œλ‹€κ³  말할 수 μžˆλ‹€.
  • 객체가 λ™μΌν•œ 데이터λ₯Ό 가지고 μžˆλ”λΌκ³  λ‹€λ₯Έ 행동을 ν•œλ‹€λ©΄ κ·Έ 객체듀은 μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λΆ„λ₯˜λΌμ•Ό ν•œλ‹€.
  • 결둠적으둜 객체의 νƒ€μž…μ„ κ²°μ •ν•˜λŠ” 것은 객체의 행동뿐이닀.
  • 같은 νƒ€μž…μ— μ†ν•œ κ°μ²΄λŠ” ν–‰λ™λ§Œ λ™μΌν•˜λ‹€λ©΄ μ„œλ‘œ λ‹€λ₯Έ 데이터λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. μ—¬κΈ°μ„œ λ™μΌν•œ ν–‰λ™μ΄λž€ λ™μΌν•œ μ±…μž„μ„ μ˜λ―Έν•˜λ©°, λ™μΌν•œ μ±…μž„μ΄λž€ λ™μΌν•œ λ©”μ‹œμ§€ μˆ˜μ‹ μ„ μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ λ™μΈν•œ νƒ€μž…μ— μ†ν•œ κ°μ²΄λŠ” λ‚΄λΆ€ 데이터 ν‘œν˜„ 방식이 λ‹€λ₯΄λ”라도 λ™μΌν•œ λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜κ³  이λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.
  • 이것은 λ‹€ν˜•μ„±μ— 의미λ₯Ό λΆ€μ—¬ν•œλ‹€. λ‹€ν˜•μ„±μ΄λž€ λ™μΌν•œ μš”μ²­μ— λŒ€ν•΄ μ„œλ‘œ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ 응닡할 수 μžˆλŠ” λŠ₯λ ₯을 λœ»ν•œλ‹€. 결과적으둜 λ‹€ν˜•μ μΈ 객체듀은 λ™μΌν•œ νƒ€μž…μ— μ†ν•œλ‹€.
  • λ°μ΄ν„°μ˜ λ‚΄λΆ€ ν‘œν˜„ 방식과 λ¬΄κ΄€ν•˜κ²Œ ν–‰λ™λ§Œμ΄ κ³ λ € λŒ€μƒμ΄λΌλŠ” 사싀은 외뢀에 데이터λ₯Ό 감좰야 ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ ν›Œλ₯­ν•œ 객체지ν–₯ μ„€κ³„λŠ” 외뢀에 ν–‰λ™λ§Œμ„ μ œκ³΅ν•˜κ³  λ°μ΄ν„°λŠ” 행동 λ’€λ‘œ 감좰야 ν•œλ‹€. 이 원칙을 μΊ‘μŠν™”λΌκ³  ν•œλ‹€.
  • 객체λ₯Ό κ²°μ •ν•˜λŠ” 것은 행동이닀. λ°μ΄ν„°λŠ” 단지 행동을 λ”°λ₯Ό 뿐이닀. 이것이 객체λ₯Ό κ°μ²΄λ‹΅κ²Œ λ§Œλ“œλŠ” κ°€μž₯ 핡심적인 원칙이닀.

✌ νƒ€μž…μ˜ 계측​

🎈 μΌλ°˜ν™”/νŠΉμˆ˜ν™” 관계​

  • μΌλ°˜ν™”(generalization)와 νŠΉμˆ˜ν™”(specialization)은 λ™μ‹œμ— μΌμ–΄λ‚œλ‹€.
  • 객체지ν–₯μ—μ„œ μΌλ°˜ν™”/νŠΉμˆ˜ν™” 관계λ₯Ό κ²°μ •ν•˜λŠ” 것은 객체의 μƒνƒœλ₯Ό ν‘œν˜„ν•˜λŠ” 데이터가 μ•„λ‹ˆλΌ ν–‰λ™μ΄λΌλŠ” 것이닀.
  • 두 νƒ€μž… 간에 μΌλ°˜ν™”/νŠΉμˆ˜ν™” 관계가 μ„±λ¦½ν•˜λ €λ©΄ ν•œ νƒ€μž…μ΄ λ‹€λ₯Έ νƒ€μž…λ³΄λ‹€ 더 νŠΉμˆ˜ν•˜κ²Œ 행동해야 ν•˜κ³  λ°˜λŒ€λ‘œ ν•œ νƒ€μž…μ€ λ‹€λ₯Έ νƒ€μž…λ³΄λ‹€ 더 일반적으둜 행동해야 ν•œλ‹€.
  • κ²°κ΅­ 객체의 μΌλ°˜ν™”/νŠΉμˆ˜ν™” 관계에 μžˆμ–΄μ„œλ„ μ€‘μš”ν•œ 것은 객체가 내뢀에 λ³΄κ΄€ν•œ 데이터가 μ•„λ‹ˆλΌ 객체가 외뢀에 μ œκ³΅ν•˜λŠ” 행동이닀.
  • ν–‰λ™μ˜ κ΄€μ μ—μ„œ 일반적인 νƒ€μž…μ΄λž€ νŠΉμˆ˜ν•œ νƒ€μž…μ΄ 가진 λͺ¨λ“  행동듀 μ€‘μ—μ„œ 일뢀 ν–‰λ™λ§Œμ„ κ°€μ§€λŠ” νƒ€μž…μ„ 가리킨닀.
  • νŠΉμˆ˜ν•œ νƒ€μž…μ΄λž€ 일반적인 νƒ€μž…μ΄ 가진 λͺ¨λ“  νƒ€μž…μ„ ν¬ν•¨ν•˜μ§€λ§Œ 거기에 더해 μžμ‹ λ§Œμ˜ 행동을 μΆ”κ°€ν•˜λŠ” νƒ€μž…μ„ 가리킨닀.
  • μΌλ°˜ν™”/νŠΉμˆ˜ν™”λŠ” 행동에 κ΄€ν•œ 것이닀. 일반적인 νƒ€μž…μ€ νŠΉμˆ˜ν•œ νƒ€μž…μ— λΉ„ν•΄ 더 적은 수의 행동을 가지며 νŠΉμˆ˜ν•œ νƒ€μž…μ€ 일반적인 νƒ€μž…μ— λΉ„ν•΄ 더 λ§Žμ€ 행동을 가진닀. 단, νŠΉμˆ˜ν•œ νƒ€μž…μ€ 일반적인 νƒ€μž…μ΄ ν•  수 μžˆλŠ” λͺ¨λ“  행동을 λ™μΌν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • μ—¬κΈ°μ„œ μ£Όμ˜ν•΄μ•Ό ν•  점은 νƒ€μž…μ˜ 내연을 μ˜λ―Έν•˜λŠ” ν–‰λ™μ˜ κ°€μ§“μˆ˜μ™€ 외연을 μ˜λ―Έν•˜λŠ” μ§‘ν•©μ˜ ν¬κΈ°λŠ” μ„œλ‘œ λ°˜λŒ€λΌλŠ” 사싀이닀.

🎈 μŠˆνΌνƒ€μž…κ³Ό μ„œλΈŒνƒ€μž…β€‹

  • μΌλ°˜ν™”/νŠΉμˆ˜ν™” κ΄€κ³„λŠ” μ’€ 더 일반적인 ν•œ νƒ€μž…κ³Ό μ’€ 더 νŠΉμˆ˜ν•œ ν•œ νƒ€μž… κ°„μ˜ 관계닀.
  • μ’€ 더 일반적인 νƒ€μž…μ„ μŠˆνΌνƒ€μž…(Supertype)이라고 ν•˜κ³  μ’€ 더 νŠΉμˆ˜ν•œ νƒ€μž…μ„ μ„œλΈŒνƒ€μž…(Subtype)이라고 ν•œλ‹€.
  • μŠˆνΌνƒ€μž…κ³Ό μ„œλΈŒνƒ€μž…μ—μ„œ μ€‘μš”ν•œ 것은 두 νƒ€μž… κ°„μ˜ 관계가 행동에 μ˜ν•΄ κ²°μ‘λœλ‹€λŠ” 점이닀. 즉, μ–΄λ–€ νƒ€μž…μ΄ λ‹€λ₯Έ νƒ€μž…μ˜ μ„œλΈŒνƒ€μž…μ΄ 되기 μœ„ν•΄μ„œλŠ” ν–‰μœ„μ  ν˜Έν™˜μ„±μ„ λ§Œμ‘±μ‹œμΌœμ•Ό ν•œλ‹€.
  • 일반적으둜 μ„œλΈŒνƒ€μž…μ€ μŠˆνΌνƒ€μž…μ˜ ν–‰μœ„μ™€ ν˜Έν™˜λ˜κΈ° λ•Œλ¬Έμ— μ„œλΈŒνƒ€μž…μ€ μŠˆνΌνƒ€μž…μ„ λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. μ„œλΈŒνƒ€μž…μ—μ„œλŠ” μŠˆνΌνƒ€μž…κ³Ό μ€‘λ³΅λœ ν–‰μœ„λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.

🎈 μΌλ°˜ν™”λŠ” 좔상화λ₯Ό μœ„ν•œ 도ꡬ닀​

  • μΌλ°˜ν™”/νŠΉμˆ˜ν™” 계측은 객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ—μ„œ μΆ”μƒν™”μ˜ 두 번쨰 차원인 μ€‘μš”ν•œ 뢀뢄을 κ°•μ‘°ν•˜κΈ° μœ„ν•΄ λΆˆν•„μš”ν•œ μ„ΈλΆ€ 사항을 μ œκ±°μ‹œμΌœ λ‹¨μˆœν•˜κ²Œ λ§Œλ“œλŠ” 것을 μ μ ˆν•˜κ²Œ ν™œμš©ν•˜λŠ” λŒ€ν‘œμ μΈ μ˜ˆλ‹€.

✌ 정적 λͺ¨λΈβ€‹

🎈 νƒ€μž…μ˜ λͺ©μ β€‹

  • νƒ€μž…μ„ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” μΈκ°„μ˜ 인지 λŠ₯λ ₯μœΌλ‘œλŠ” μ‹œκ°„μ— 따라 λ™μ μœΌλ‘œ λ³€ν•˜λŠ” 객체의 λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•˜κΈ°κ°€ λ„ˆλ¬΄ μ–΄λ ΅κΈ° λ•Œλ¬Έμ΄λ‹€.
  • νƒ€μž…μ€ μ‹œκ°„μ— 따라 λ™μ μœΌλ‘œ λ³€ν•˜λŠ” 객체의 μƒνƒœλ₯Ό μ‹œκ°„κ³Ό λ¬΄κ΄€ν•œ 정적인 λͺ¨μŠ΅μœΌλ‘œ λ‹€λ£° 수 있게 ν•΄μ€€λ‹€.
  • 객체의 μƒνƒœμ— λ³΅μž‘μ„±μ„ λΆ€κ³Όν•˜λŠ” μ‹œκ°„μ΄λΌλŠ” μš”μ†Œλ₯Ό μ œκ±°ν•¨μœΌλ‘œμ¨ μ‹œκ°„μ— 독립적인 정적인 λͺ¨μŠ΅μœΌλ‘œ 객체λ₯Ό 생각할 수 있게 ν•΄μ€€λ‹€.

🎈 κ·Έλž˜μ„œ κ²°κ΅­ νƒ€μž…μ€ 좔상화닀​

  • 이런 κ΄€μ μ—μ„œ νƒ€μž…μ€ 좔상화닀.
  • μ–΄λ–€ μ‹œμ μ— 객체에 κ΄€ν•΄ 생각할 λ•Œ λΆˆν•„μš”ν•œ μ‹œκ°„μ΄λΌλŠ” μš”μ†Œμ™€ μƒνƒœ λ³€ν™”λΌλŠ” μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  μ² μ €ν•˜κ²Œ 정적인 κ΄€μ μ—μ„œ 객체의 λͺ¨μŠ΅μ„ λ¬˜μ‚¬ν•˜λŠ” 것을 κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€.
  • νƒ€μž…μ€ 좔상화닀. νƒ€μž…μ„ μ΄μš©ν•˜λ©΄ 객체의 동적인 νŠΉμ„±μ„ 좔상화할 수 μžˆλ‹€. κ²°κ΅­ νƒ€μž…μ€ μ‹œκ°„μ— λ”°λ₯Έ 객체의 μƒνƒœ λ³€κ²½μ΄λΌλŠ” λ³΅μž‘μ„±μ„ λ‹¨μˆœν™”ν•  수 μžˆλŠ” 효과적인 방법인 것이닀.

🎈 동적 λͺ¨λΈκ³Ό 정적 λͺ¨λΈβ€‹

  • μ§€κΈˆκΉŒμ§€μ˜ λ…Όμ˜λ₯Ό 톡해 객체λ₯Ό 생각할 λ•Œ μš°λ¦¬λŠ” 두 가지 λͺ¨λΈμ„ λ™μ‹œμ— κ³ λ €ν•œλ‹€λŠ” 사싀을 μ•Œ 수 μžˆλ‹€.
  • ν•˜λ‚˜λŠ” 객체가 νŠΉμ • μ‹œμ μ— ꡬ체적으둜 μ–΄λ–€ μƒνƒœλ₯Ό κ°€μ§€λŠλƒλ‹€. 이λ₯Ό 객체의 μŠ€λƒ…μƒ·(snapshot)이라고 ν•œλ‹€.
  • 객체지ν–₯ λͺ¨λΈλ§μ„ μœ„ν•œ ν‘œμ€€ 언어인 UMLμ—μ„œ μŠ€λƒ…μƒ·μ€ 객체 λ‹€μ΄μ–΄κ·Έλž¨μ΄λΌκ³ λ„ λΆˆλ¦°λ‹€. μŠ€λƒ…μƒ·μ²˜λŸΌ μ‹€μ œλ‘œ 객체가 μ‚΄μ•„ μ›€μ§μ΄λŠ” λ™μ•ˆ μƒνƒœκ°€ μ–΄λ–»κ²Œ λ³€ν•˜κ³  μ–΄λ–»κ²Œ ν–‰λ™ν•˜λŠ”μ§€λ₯Ό ν¬μ°©ν•˜λŠ” 것을 동적 λͺ¨λΈ(dynamic model)이라고 ν•œλ‹€.
  • λ‹€λ₯Έ ν•˜λ‚˜λŠ” 객체가 κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  μƒνƒœμ™€ λͺ¨λ“  행동을 μ‹œκ°„μ— λ…λ¦½μ μœΌλ‘œ ν‘œν˜„ν•˜λŠ” 것이닀. 일반적으둜 이런 λͺ¨λΈμ„ νƒ€μž… λͺ¨λΈ(type diagram)이라고 ν•œλ‹€.
  • 이 λͺ¨λΈμ€ λ™μ μœΌλ‘œ λ³€ν•˜λŠ” 객체의 μƒνƒœκ°€ μ•„λ‹ˆλΌ 객체가 μ†ν•œ νƒ€μž…μ˜ 정적인 λͺ¨μŠ΅μ„ ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— 정적 λͺ¨λΈ(static model)이라고도 ν•œλ‹€.

🎈 ν΄λž˜μŠ€β€‹

  • 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 정적인 λͺ¨λΈμ€ 클래슀λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„λœλ‹€. λ”°λΌμ„œ νƒ€μž…μ„ κ΅¬ν˜„ν•œ κ°€μž₯ 보편적인 방법은 클래슀λ₯Ό μ΄μš©ν•˜λŠ” 것이닀.
  • νƒ€μž…μ„ κ΅¬ν˜„ν•œλ‹€μ΄μ§€ ν΄λž˜μŠ€μ™€ νƒ€μž…μ€ λ™μΌν•œ 것이 μ•„λ‹ˆλ‹€.
  • νƒ€μž…μ€ 객체λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κ°œλ…μ΄λ‹€. 반면 ν΄λž˜μŠ€λŠ” 단지 νƒ€μž…μ„ κ΅¬ν˜„ν•  수 μžˆλŠ” κ΅¬ν˜„ λ©”μ»€λ‹ˆμ¦˜ 쀑 ν•˜λ‚˜μΌ 뿐이닀.
  • κ²°κ΅­ 객체지ν–₯μ—μ„œ μ€‘μš”ν•œ 것은 λ™μ μœΌλ‘œ λ³€ν•˜λŠ” 객체의 μƒνƒœμ™€ μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” ν–‰μœ„λ‹€.
  • ν΄λž˜μŠ€λŠ” νƒ€μž…μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ œκ³΅ν•˜λŠ” κ΅¬ν˜„ λ©”μ»€λ‹ˆμ¦˜μΌ 뿐이닀.