πŸ“‚ 개발 μ„œμ /객체지ν–₯의 사싀과 μ˜€ν•΄

객체지ν–₯의 사싀과 μ˜€ν•΄(1)

Amenable 2023. 1. 23. 22:42
μ—­ν• , μ±…μž„, ν˜‘λ ₯

 

  λ„ˆλ¬΄λ‚˜λ„ 읽어보고 μ‹Άμ—ˆλ˜ 책이닀. λ¬Όλ‘  μ±… μžμ²΄κ°€ 유λͺ…ν•΄μ„œ 읽어보고 싢기도 ν–ˆμ§€λ§Œ, μ—¬κΈ°μ„œ λ‚˜μ˜€λŠ” μ΄μƒν•œ λ‚˜λΌμ˜ μ•¨λ¦¬μŠ€ 이야기가 특히 κΆκΈˆν•˜μ˜€λ‹€. μΉœκ΅¬λ“€μ΄λž‘ μ–˜κΈ°ν•  λ•Œ λ˜λŠ” κ°•μ˜λ₯Ό 듀을 λ•Œ 객체지ν–₯의 사싀과 μ˜€ν•΄μ˜ 'μ΄μƒν•œ λ‚˜λΌμ˜ μ•¨λ¦¬μŠ€'κ°€ 자주 λ“±μž₯ν•΄ μ™”κΈ° λ•Œλ¬Έμ΄λ‹€.

  이 μ±…μ˜ κ°€μž₯ 큰 μž₯점을 ν•˜λ‚˜ μ •ν•œλ‹€λ©΄ λΉ„μœ λ‹€. '컀피 κ³΅ν™”κ΅­μ˜ μ•„μΉ¨', 'μ΄μƒν•œ λ‚˜λΌμ˜ μ•¨λ¦¬μŠ€', 'μ§€ν•˜μ²  노선도' λ“± λ‹€μ–‘ν•œ λΉ„μœ λ₯Ό 톡해 κ°œλ…λ“€μ„ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ μ „λ‹¬ν•œλ‹€. 이 μž₯점을 ꡳ이 λ‹¨μ μœΌλ‘œ λ³Έλ‹€λ©΄, λΉ„μœ λ‘œ 인해 κ΅¬ν˜„ μ½”λ“œκ°€ 거의 λ‚˜μ˜€μ§€ μ•Šκ²Œ λœλ‹€. κ·Έλž˜μ„œ ν˜Ήμ‹œλ‚˜ κ΅¬ν˜„ μ½”λ“œκΉŒμ§€ κΈ°λŒ€ν–ˆλ˜ μ‚¬λžŒλ“€μ€ μ—¬κΈ°μ„œ κ°œλ…μ„ ν™•μ‹€νžˆ 작고 λ‹€λ₯Έ 책을 읽어보면 쒋을 κ±° κ°™λ‹€. (λ¬Όλ‘  λ‚˜λ„ 객체지ν–₯에 κ΄€λ ¨ν•΄μ„œ λ‹€λ₯Έ 책듀을 μΆ”κ°€μ μœΌλ‘œ 읽을 κ³„νšμ΄λ‹€.) 

  책은 총 8개의 μž₯으둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 'μ—­ν• , μ±…μž„, ν˜‘λ ₯ κ΄€μ μ—μ„œ λ³Έ 객체지ν–₯'을 μ„€λͺ…ν•˜κΈ° μœ„ν•΄ 1μž₯λΆ€ν„° 8μž₯κΉŒμ§€ μ°¨κ·Όμ°¨κ·Ό λ‚΄μš©μ΄ 이어진닀. μ•„λž˜μ˜ 3κ°€μ§€ λ‚΄μš©μ€ 책에 λŒ€ν•œ 전체적인 λ‚˜μ˜ 짧은 생각이닀.

  1. ν›Œλ₯­ν•œ λΉ„μœ λ‘œ 인해 λ‚΄μš©μ„ μ΄ν•΄ν•˜κΈ° 쉽닀.
  2. 객체지ν–₯에 λŒ€ν•œ 지식이 더 λ§Žμ„μˆ˜λ‘ 더 κΉŠμ€ 이해λ₯Ό ν•  수 μžˆλ‹€.
  3. 이 μ±… ν•œ ꢌ으둜 객체지ν–₯을 λ§ˆμŠ€ν„°ν•˜λ €κ³  μƒκ°ν–ˆλ‹€λ©΄ 큰 μ˜€μ‚°μ΄λ‹€. 더 κΉŠμ€ 이해와 λ§Žμ€ μ—°μŠ΅μ΄ ν•„μš”ν•˜λ‹€.

 

  μ΄μ œλΆ€ν„° 책을 μ‚΄νŽ΄λ³΄μž. μ±…μ˜ λ‚΄μš©μ„ λͺ¨λ‘ λ‹€λ£¨μ§€λŠ” μ•Šμ„ 것이닀. ν˜„μž¬ λ‚˜μ—κ²Œ ν•„μš”ν•œ λ‚΄μš©κ³Ό κ³„μ†ν•΄μ„œ μƒκΈ°ν•˜λ©΄ 쒋을 λ‚΄μš©λ“€λ§Œ μΆ”λ €λ‚΄μ„œ λ‹€λ£° 것이닀. 이 점은 μ–‘ν•΄λ₯Ό λΆ€νƒν•œλ‹€. πŸ™πŸ™

 

1μž₯. ν˜‘λ ₯ν•˜λŠ” κ°μ²΄λ“€μ˜ 곡동체 πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦

객체지ν–₯의 본질

  1. 객체지ν–₯μ΄λž€ μ‹œμŠ€ν…œμ„ μƒν˜Έμž‘μš©ν•˜λŠ” 자율적인 κ°μ²΄λ“€μ˜ κ³΅λ™μ²΄λ‘œ 바라보고 객체λ₯Ό μ΄μš©ν•΄ μ‹œμŠ€ν…œμ„ λΆ„ν• ν•˜λŠ” 방법이닀.
  2. 자율적인 κ°μ²΄λž€ μƒνƒœμ™€ ν–‰μœ„λ₯Ό ν•¨κ»˜ μ§€λ‹ˆλ©° 슀슀둜 자기 μžμ‹ μ„ μ±…μž„μ§€λŠ” 객체λ₯Ό μ˜λ―Έν•œλ‹€.
  3. κ°μ²΄λŠ” μ‹œμŠ€ν…œμ˜ ν–‰μœ„λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ 객체와 ν˜‘λ ₯ν•œλ‹€. 각 κ°μ²΄λŠ” ν˜‘λ ₯ λ‚΄μ—μ„œ μ •ν•΄μ§„ 역할을 μˆ˜ν–‰ν•˜λ©° 역할은 κ΄€λ ¨λœ μ±…μž„μ˜ 집합이닀.
  4. κ°μ²΄λŠ” λ‹€λ₯Έ 객체와 ν˜‘λ ₯ν•˜κΈ° μœ„ν•΄ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜κ³ , λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•œ κ°μ²΄λŠ” λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜λŠ” 데 μ ν•©ν•œ λ©”μ„œλ“œλ₯Ό 자율적으둜 μ„ νƒν•œλ‹€.

ν΄λž˜μŠ€κ°€ μ•„λ‹ˆλ‹€.

  μ½”λ“œλ₯Ό λ‹΄λŠ” 클래슀의 κ΄€μ μ—μ„œ λ©”μ‹œμ§€λ₯Ό μ£Όκ³ λ°›λŠ” 객체의 κ΄€μ μœΌλ‘œ μ‚¬κ³ μ˜ 쀑심을 μ „ν™˜ν•˜μž. 클래슀의 ꡬ쑰와 λ©”μ„œλ“œκ°€ μ•„λ‹ˆλΌ 객체의 μ—­ν• , μ±…μž„, ν˜‘λ ₯에 μ§‘μ€‘ν•˜μž. 객체지ν–₯은 객체λ₯Ό μ§€ν–₯ν•˜λŠ” 것이지 클래슀λ₯Ό μ§€ν–₯ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€.

 

2μž₯. μ΄μƒν•œ λ‚˜λΌμ˜ 객체 🏰

  κ°μ²΄μ§€ν–₯을 처음 μ ‘ν•˜λŠ” μ‚¬λžŒλ“€μ€ 이 μž₯이 μ•„μ£Ό 큰 도움이 될 거라고 μƒκ°ν•œλ‹€. μ΄μƒν•œ λ‚˜λΌμ˜ μ•¨λ¦¬μŠ€ 덕뢄에 λ„ˆλ¬΄λ‚˜λ„ λ§Žμ€ 도움을 λ°›μ•˜λ‹€.πŸ‘πŸ‘ 그리고 이 λ‚΄μš©μ΄ λ’€μ—μ„œ 계속 μ΄μ–΄μ§€λ―€λ‘œ μ™„λ²½ν•˜κ²Œ μ΄ν•΄ν•˜κΈ°λ₯Ό λ°”λž€λ‹€.

κ°μ²΄λŠ” μƒνƒœ(state), 행동(behavior), μ‹λ³„μž(identity)λ₯Ό μ§€λ‹Œ 싀체이닀.

  • 객체가 μ£Όλ³€ ν™˜κ²½κ³Όμ˜ μƒν˜Έμž‘μš©μ— μ–΄λ–»κ²Œ λ°˜μ‘ν•˜λŠ”κ°€λŠ” κ·Έ μ‹œμ κΉŒμ§€ 객체에 μ–΄λ–€ 일이 λ°œμƒν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μƒνƒœμ— μ˜ν•΄ μ’Œμš°λœλ‹€.
  • 객체의 행동은 객체의 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€μ§€λ§Œ ν–‰λ™μ˜ κ²°κ³ΌλŠ” 객체의 μƒνƒœμ— μ˜μ‘΄μ μ΄λ‹€.
  • 객체의 행동을 μœ λ°œν•˜λŠ” 것은 μ™ΈλΆ€λ‘œλΆ€ν„° μ „λ‹¬λœ λ©”μ‹œμ§€μ§€λ§Œ 객체의 μƒνƒœλ₯Ό λ³€κ²½ν• μ§€ μ—¬λΆ€λŠ” 객체 슀슀둜 κ²°μ •ν•œλ‹€. 
  • μƒνƒœλ₯Ό 잘 μ •μ˜λœ 행동 μ§‘ν•© λ’€λ‘œ μΊ‘μŠν™”ν•˜λŠ” 것은 객체의 μžμœ¨μ„±μ„ 높이고 ν˜‘λ ₯을 λ‹¨μˆœν•˜κ³  μœ μ—°ν•˜κ²Œ λ§Œλ“ λ‹€. 이것이 μƒνƒœλ₯Ό μΊ‘μŠν™”ν•΄μ•Ό ν•˜λŠ” μ΄μœ λ‹€.

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

μƒνƒœλ₯Ό λ¨Όμ € κ²°μ •ν•˜κ³  행동을 λ‚˜μ€‘μ— κ²°μ •ν•˜λŠ” 방법은 섀계에 λ‚˜μœ 영ν–₯을 λΌμΉœλ‹€.

  1. μƒνƒœλ₯Ό λ¨Όμ € κ²°μ •ν•  경우 μΊ‘μŠν™”κ°€ μ €ν•΄λœλ‹€.
    μƒνƒœμ— μ΄ˆμ μ„ 맞좜 경우 μƒνƒœκ°€ 객체 내뢀에 κΉ”λ”ν•˜κ²Œ μΊ‘μŠν™”λ˜μ§€ λͺ»ν•˜κ³  곡용 μΈν„°νŽ˜μ΄μŠ€μ— κ·ΈλŒ€λ‘œ λ…ΈμΆœ 돼버릴 ν™•λ₯ μ΄ λ†’μ•„μ§„λ‹€.
  2. 객체λ₯Ό ν˜‘λ ₯μžκ°€ μ•„λ‹Œ 고립된 μ„¬μœΌλ‘œ λ§Œλ“ λ‹€.
    μƒνƒœλ₯Ό λ¨Όμ € κ³ λ €ν•˜λ©΄ ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯μ—μ„œ 멀리 λ²—μ–΄λ‚œ 채 객체λ₯Ό μ„€κ³„ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ ν˜‘λ ₯에 μ ν•©ν•˜μ§€ λͺ»ν•œ 객체λ₯Ό μ°½μ‘°ν•œλ‹€.
  3. 객체의 μž¬μ‚¬μš©μ„±μ΄ μ €ν•΄λœλ‹€
    객체의 μž¬μ‚¬μš©μ„±μ€ λ‹€μ–‘ν•œ ν˜‘λ ₯μ—μ„œ λ‚˜μ˜¨λ‹€. 2λ²ˆμ—μ„œ μ‚΄νŽ΄λ³Έ κ²ƒμ²˜λŸΌ ν˜‘λ ₯이 μ–΄λ €μ›Œμ§€κΈ° λ•Œλ¬Έμ— μž¬μ‚¬μš©μ„± λ˜ν•œ μžμ—°μŠ€λŸ½κ²Œ μ €ν•΄λœλ‹€. 

 

3μž₯. νƒ€μž…κ³Ό 좔상화 πŸ‘―β€β™‚οΈ

객체의 νƒ€μž…μ„ κ²°μ •ν•˜λŠ” 것은 객체의 행동뿐이닀.

  1. μ–΄λ–€ 객체가 μ–΄λ–€ νƒ€μž…μ— μ†ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” 것은 객체가 μˆ˜ν–‰ν•˜λŠ” 행동이닀.
    μ–΄λ–€ 객체듀이 λ™μΌν•œ 행동을 μˆ˜ν–‰ν•  수 μžˆλ‹€λ©΄ κ·Έ 객체듀은 λ™μΌν•œ νƒ€μž…μœΌλ‘œ λΆ„λ₯˜λ  수 μžˆλ‹€. - λ‹€ν˜•μ„±
  2. 객체의 내뢀적인 ν‘œν˜„μ€ μ™ΈλΆ€λ‘œλΆ€ν„° μ² μ €ν•˜κ²Œ 감좰진닀.
    객체의 행동을 κ°€μž₯ 효과적으둜 μˆ˜ν–‰ν•  수만 μžˆλ‹€λ©΄ 객체 λ‚΄λΆ€μ˜ μƒνƒœλ₯Ό μ–΄λ–€ λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ”λΌλ„ λ¬΄λ°©ν•˜λ‹€. - μΊ‘μŠν™”

 

 

ν•΄λ‹Ή 글은 '객체지ν–₯의 사싀과 μ˜€ν•΄ - 쑰영호 (μœ„ν‚€λΆμŠ€)'λ₯Ό 읽고 μž‘μ„±ν•œ κ²ƒμž…λ‹ˆλ‹€.