우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»‍πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀

Eager To Learn 🌌

κ°œλ°œμ„œμ /였브젝트 - 쑰영호

Chapter 6. λ©”μ‹œμ§€μ™€ μΈν„°νŽ˜μ΄μŠ€

2023. 10. 17. 22:04

μ‘°μ˜ν˜Έλ‹˜μ˜ μ˜€λΈŒμ νŠΈλ₯Ό 읽고 제 머릿속에 μžˆλŠ” λ‚΄μš©λ“€μ„ μ •λ¦¬ν•˜λ©° μž‘μ„±ν•œ κΈ€μž…λ‹ˆλ‹€.


λ©”μ‹œμ§€μ™€ λ©”μ„œλ“œ

 

πŸ’‘ λ©”μ‹œμ§€λž€, 객체가 λ‹€λ₯Έ κ°μ²΄μ—κ²Œ μœ μΌν•˜κ²Œ μ ‘κ·Όν•  수 μžˆλŠ” 방법이닀.

 

μžλ°” 문법을 예둜 λ“€λ©΄ μ•„λž˜μ™€ 같은 것이 λ©”μ‹œμ§€ 전솑이닀.

μˆ˜μ‹ μž.μ˜€νΌλ ˆμ΄μ…˜λͺ…(인자);

[ ex. condition.isSatisfiedBy(screening) ]

 

❓ 메세지와 λ©”μ„œλ“œλŠ” 그러면 같은거 μ•„λ‹ˆμ•Ό?

λ§Œμ•½, μˆ˜μ‹ μž 객체가 μΈν„°νŽ˜μ΄μŠ€ ν˜•νƒœκ°€ μ•„λ‹Œ κ΅¬ν˜„μ²΄λΌλ©΄ λ§žλŠ” 말이 될 수 μžˆλ‹€.

 

ν•˜μ§€λ§Œ, 🚨 μˆ˜μ‹ μž 객체가 μΈν„°νŽ˜μ΄μŠ€λ‘œ μ •μ˜λ˜μ–΄μžˆλ‹€λ©΄, ν•΄λ‹Ή λ©”μ‹œμ§€λ₯Ό μ–΄λ–»κ²Œ κ΅¬ν˜„ν•˜λŠλƒμ— 따라 μ‹€μ œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ 달라진닀.

 

λ”°λΌμ„œ, πŸ’‘ λ©”μ„œλ“œλŠ” μˆ˜μ‹ μž 객체가 λ©”μ‹œμ§€λ₯Ό λ°›μ•„, μ‹€μ œλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€(ν•¨μˆ˜)λ₯Ό λ©”μ„œλ“œλΌκ³  λΆ€λ₯Έλ‹€.

 

λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜λŠ” κ°μ²΄λŠ”, μˆ˜μ‹ ν•œ 객체가 μ‹€μ œλ‘œ μ–΄λ–€ κ΅¬ν˜„λΆ€λ₯Ό κ°–κ³ μžˆλŠ”μ§€ μ•Œμˆ˜λ„ μ—†κ³ (μΊ‘μŠν™”) κΆκΈˆν•΄ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ‘λ‹΅λ§Œ ν•΄μ€€λ‹€λ©΄ λ§Œμ‘±ν•œλ‹€.

 

μ–΄λ–»κ²Œ(HOW) κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄μ„œ μ‘λ‹΅ν• μ§€λŠ” κ°œλ°œμžκ°€ μ–΄λ–€ κ΅¬ν˜„λΆ€λ₯Ό μ—°κ²°μ‹œμΌœμ„œ λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ν–ˆλŠ”μ§€μ— 따라 λ‹¬λΌμ§ˆ 것이닀.

 

πŸ’‘ 무엇(What)을 ν•˜λŠ”μ§€λ₯Ό λ©”μ„œλ“œ μ΄λ¦„μœΌλ‘œ ν‘œν˜„ν•˜κ³ , μ–΄λ–»κ²Œ(How) μˆ˜ν–‰ν• μ§€λŠ” 각 객체의 λ©”μ„œλ“œ λ‚΄λΆ€ λ‘œμ§μœΌλ‘œμ„œ μ„€λͺ…ν•˜λ„λ‘ ν•˜μž

 

 

 

λ‹€λ₯Έ 객체 λ‚΄λΆ€ μƒνƒœλ₯Ό 묻지말고 μ‹œμΌœλΌ (Tell, Don't Ask)

 

ν•œ 객체가 λ‹€λ₯Έ 객체의 λ‚΄λΆ€ μƒνƒœλ₯Ό μ•Œκ³  μ‚¬μš©ν•˜λŠ” μˆœκ°„, 변화에 μ˜ˆλ―Όν•΄μ§„λ‹€.

 

κ·Έμ €, μ–΄λ–€ 결과물을 μ›ν•˜λŠ”μ§€λ§Œ κ°μ²΄μ—κ²Œ λ©”μ„Έμ§€λ‘œμ„œ μ „λ‹¬ν•˜κ³ ,

 

객체 λ‚΄λΆ€μ˜ μƒνƒœλŠ” λ©”μ‹œμ§€λ₯Ό 받은 객체 자기 μžμ‹ μ΄ μ±…μž„μ§€λŠ” 자율적인 μ‘΄μž¬μ—¬μ•Όν•œλ‹€.

 

🚨 객체 λ‚΄λΆ€μ˜ μƒνƒœλ₯Ό μ΄μš©ν•΄ μ–΄λ–€ 결정을 λ‚΄λ¦¬λŠ” 둜직이 객체 외뢀에 μ‘΄μž¬ν•œλ‹€λ©΄ μ•ˆλœλ‹€.

 

사싀, μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•΄μ„œ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•œλ‹€κ³  κ°€μ •λ§Œν•΄λ΄λ„

 

λ‚΄λΆ€ κ΅¬ν˜„μ€ μ–΄λ–»κ²Œ λ‹¬λΌμ§ˆμ§€ λͺ¨λ₯΄λŠ” 상황이기 λ•Œλ¬Έμ—, 객체가 κ°–λŠ” μ–΄λ–€ μƒνƒœλ₯Ό μš”κ΅¬ν•˜λŠ” 것은 λͺ¨μˆœμ΄ λ˜λ―€λ‘œ 

 

μΈν„°νŽ˜μ΄μŠ€λ₯Ό 객체 λ‚΄λΆ€ μƒνƒœλ₯Ό λ…ΈμΆœμ‹œν‚€μ§€ μ•Šλ„λ‘ 잘 κ²°μ •ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•œλ‹€.

 

 

λ˜ν•œ, 객체 λ‚΄λΆ€ μƒνƒœλŠ” λ‚΄λΆ€ κ΅¬ν˜„μ˜ 일뢀인데, λ‚΄λΆ€ κ΅¬ν˜„μ„ κ·Έλƒ₯ μ‚¬μš©ν•˜κ²Œ 되면 

 

결합도가 κ°•ν•΄μ§€λ―€λ‘œ, λ‚΄λΆ€ κ΅¬ν˜„μ΄ λ³€κ²½λ˜μ—ˆμ„ λ•Œ λ³€ν™”κ°€ μ „νŒŒλ˜λ―€λ‘œ μ’‹μ§€ λͺ»ν•˜λ‹€.

 

 

 

λͺ…λ Ή - 쿼리 뢄리 원칙

λͺ…λ Ήμ΄λž€, 객체의 μƒνƒœλ₯Ό μˆ˜μ •ν•˜λŠ” μ˜€νΌλ ˆμ΄μ…˜μ΄λ‹€.

 

μΏΌλ¦¬λž€, 객체와 κ΄€λ ¨λœ 정보λ₯Ό λ°˜ν™˜ν•˜λŠ” μ˜€νΌλ ˆμ΄μ…˜μ΄λ‹€.

 

πŸ’‘ λͺ…λ Ή - 쿼리 뢄리 원칙은, λͺ…λ Ήμ΄λ©΄μ„œ 쿼리인 μ˜€νΌλ ˆμ΄μ…˜μ΄ μ‘΄μž¬ν•΄μ„œλŠ” μ•ˆλœλ‹€λŠ” 원칙이닀.

 

λͺ…λ Ήκ³Ό 쿼리의 역할을 λ™μ‹œμ— μˆ˜ν–‰ν•˜λŠ” λ©”μ„œλ“œλŠ”,

 

🚨 νŒŒλΌλ―Έν„°κ°€ 같은 λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬λ²ˆ μ‹€ν–‰ν–ˆμ„λ•Œ λ‹€λ₯Έ κ²°κ³Όλ₯Ό 응닡할 수 μžˆλ‹€.

 

객체 λ‚΄λΆ€μ˜ μƒνƒœλ₯Ό κ±΄λ“œλ¦¬μ§€ μ•ŠλŠ” μΏΌλ¦¬λ‘œμ„œμ˜ μ—­ν• λ§Œ μˆ˜ν–‰ν–ˆλ‹€λ©΄, 같은 λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬λ²ˆ λ°˜λ³΅ν•΄λ„ 같은 κ²°κ³Όλ₯Ό μ‘λ‹΅ν–ˆμ„ 것이닀.

 

 

 

    'κ°œλ°œμ„œμ /였브젝트 - 쑰영호' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • Chapter 7. 객체 λΆ„ν•΄
    • Chapter 5. μ±…μž„ ν• λ‹Ήν•˜κΈ°
    • Chapter 4. 섀계 ν’ˆμ§ˆκ³Ό νŠΈλ ˆμ΄λ“œμ˜€ν”„
    • Chapter 3. μ—­ν• , μ±…μž„, ν˜‘λ ₯
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”