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

05 μ±…μž„κ³Ό λ©”μ‹œμ§€ (1) λ©”μ‹œμ§€

바쿄리 2022. 1. 12. 17:08

01 자율적인 μ±…μž„

자율적인 κ°μ²΄λž€ 슀슀둜의 μ˜μ§€μ™€ νŒλ‹¨μ— 따라 각자 맑은 μ±…μž„μ„ μˆ˜ν–‰ν•˜λŠ” 객체이닀.

μ μ ˆν•œ μ±…μž„μ΄ 자율적인 객체λ₯Ό λ‚³κ³ , 자율적인 객체듀이 λͺ¨μ—¬ μœ μ—°ν•˜κ³  λ‹¨μˆœν•œ ν˜‘λ ₯을 λ‚³λŠ”λ‹€. λ”°λΌμ„œ ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” 객체가 μ–Όλ§ˆλ‚˜ μžμœ¨μ μΈμ§€κ°€ 전체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν’ˆμ§ˆμ„ κ²°μ •ν•œλ‹€.

 

객체가 μ±…μž„μ„ 자율적으둜 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ°μ²΄μ—κ²Œ ν• λ‹Ήλ˜λŠ” μ±…μž„μ΄ μžμœ¨μ μ΄μ–΄μ•Ό ν•œλ‹€.

μ±…μž„μ΄ μžμœ¨μ μ΄μ§€ μ•Šλ‹€λ©΄ 객체가 자율적으둜 μ±…μž„μ„ μˆ˜ν–‰ν•˜κΈ° μ–΄λ ΅λ‹€.

 

μ‰½κ²Œ μ„€λͺ…ν•˜μžλ©΄

μš”μ²­μ„ ν•  λ•Œ λ„ˆλ¬΄ μƒμ„Έν•˜κ³  ꡬ체적으둜 μš”μ²­μ„ ν•˜λ©΄

응닡을 받은 객체가 μ±…μž„μ„ λ‹€ν•˜κΈ° μœ„ν•΄ μžμ‹ μ˜ μ˜μ§€λ‚˜ νŒλ‹¨λ ₯이 μ•„λ‹Œ μš”μ²­μ— ꡬ체적인 μš”μ²­μ— μ˜μ‘΄ν•  수 밖에 μ—†λ‹€.

이 말은, ꡬ체적인 μš”μ²­μ„ 받은 κ°μ²΄λŠ” 자윑적으둜 μ±…μž„μ„ μˆ˜ν–‰ν•  수 μ—†λ‹€λŠ” μ˜λ―Έκ°€ λœλ‹€.

(일반적인 μš”μ²­ : 점심을 먹어라 → λͺ‡μ‹œμ—, λˆ„κ΅¬μ™€, μ–΄λ–€ 식사을 할지에 λŒ€ν•œ 선택은 μš”μ²­μ„ 받은 객체가 자율적으둜 κ²°μ •ν•œλ‹€.

 κ΅¬μ²΄μ μΈ μš”μ²­ : 12μ‹œμ— μ—„λ§ˆμ™€ λΉ„λΉ”λ°₯을 먹어라 → μš”μ²­μ„ 받은 객체가 λˆ„λ €μ•Όν•˜λŠ” μ„ νƒμ˜ μžμœ λŠ” ν›Όμ†λœλ‹€.(μžμœ¨μ„±μ΄ μ œν•œλ˜μ—ˆλ‹€.))

 

κ·ΈλŸ¬λ‚˜

포괄적이고 좔상적인 μ±…μž„μ„ μ„ νƒν•œλ‹€κ³  ν•΄μ„œ 무쑰건 쒋은 것은 μ•„λ‹ˆλ‹€.

(포괄적이고 좔상적인 μ±…μž„ : 먹어라 → 뭘? λ°₯을? 컀피λ₯Ό? 간식을? κ°œλ…μ„? 뭘?)

 

좔상적이고 포괄적인 μ±…μž„μ€ ν˜‘λ ₯을 μ’€ 더 λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ μœ μ—°μ„±μ„ μ œκ³΅ν•˜μ§€λ§Œ

ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ μ„€λͺ…ν•  수 μžˆλŠ” μˆ˜μ€€ μ•ˆμ—μ„œ 좔상적이야 ν•œλ‹€.

 

μ–΄λ–€ μ±…μž„μ΄ 자율적이고 κ°€μž₯ μ μ ˆν•œκ°€λŠ” 섀계 쀑인 ν˜‘λ ₯이 무엇인가에 따라 달라진닀.

이런 λͺ¨ν˜Έν•¨μ΄ 객체지ν–₯ 섀계λ₯Ό λ‚œν•΄ν•˜λ©΄μ„œλ„ λ§€λ ₯적인 예술(?)둜 λ§Œλ“œλŠ” μ΄μœ λ‹€. πŸ™„  

 

자율적인 μ±…μž„μ˜ νŠΉμ§•μ€ 객체가 'μ–΄λ–»κ²Œ(how)'ν•΄μ•Ό ν•˜λŠ”κ°€κ°€ μ•„λ‹ˆλΌ '무엇(what)'을 ν•΄μ•Ό ν•˜λŠ”κ°€λ₯Ό μ„€λͺ…ν•œλ‹€.

 

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

λ©”μ‹œμ§€

λ©”μ‹œμ§€λŠ” 객체듀이 μ„œλ‘œ ν˜‘λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλŠ” μœ μΌν•œ μ˜μ‚¬μ†Œν†΅ μˆ˜λ‹¨μ΄λ‹€.

객체가 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  수 μžˆλ‹€λŠ” 것은 객체가 λ©”μ‹œμ§€μ— ν•΄λ‹Ήν•˜λŠ” μ±…μž„μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

객체가 μœ μΌν•˜κ²Œ 이해할 수 μžˆλŠ” μ˜μ‚¬μ†Œν†΅ μˆ˜λ‹¨μ€ λ©”μ‹œμ§€λΏμ΄λ©° κ°μ²΄λŠ” λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 방법을 자율적으둜 선택할 수 μžˆλ‹€.

μ™ΈλΆ€μ˜ κ°μ²΄λŠ” λ©”μ‹œμ§€μ— κ΄€ν•΄μ„œλ§Œ λ³Ό 수 있고 객체 λ‚΄λΆ€λŠ” λ³Ό 수 μ—†κΈ° λ•Œλ¬Έμ— μžμ—°μŠ€λŸ½κ²Œ 객체의 외뢀와 λ‚΄λΆ€κ°€ λΆ„λ¦¬λœλ‹€.

λ©”μ„œλ“œ

λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λ‚΄λΆ€μ μœΌλ‘œ μ„ νƒν•˜λŠ” 방법을 λ©”μ„œλ“œλΌκ³  ν•œλ‹€.

λ‹€ν˜•μ„±

μ„œλ‘œ λ‹€λ₯Έ μœ ν˜•μ˜ 객체가 λ™μΌν•œ λ©”μ‹œμ§€μ— λŒ€ν•΄ μ„œλ‘œ λ‹€λ₯΄κ²Œ λ°˜μ‘ν•˜λŠ” 것을 λ§ν•œλ‹€.

(μ’€ 더 ꡬ체적으둜 λ§ν•˜λ©΄,

μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μ— μ†ν•˜λŠ” 객체듀이 λ™μΌν•œ λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  경우 μ„œλ‘œ λ‹€λ₯Έ λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄ λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” λ©”μ»€λ‹ˆμ¦˜.)

 

λ©”μ‹œμ§€λŠ” '무엇'이 μ‹€ν–‰λ μ§€λŠ” λͺ…μ‹œν•˜μ§€λ§Œ λ©”μ‹œμ§€λ₯Ό 'μ–΄λ–»κ²Œ' μ‹€ν–‰ν•  κ²ƒμΈμ§€λŠ” μˆ˜μ‹ μžκ°€ κ²°μ •ν•  수 μžˆλ‹€.

λ©”μ‹œμ§€ 처리 방법에 κ΄€λ ¨ν•΄μ„œ μ œμ•½μ΄ 없기에, λ™μΌν•œ λ©”μ‹œμ§€λΌκ³  ν•˜λ”λΌλ„ μ„œλ‘œ λ‹€λ₯Έ λ°©μ‹μ˜ λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄ μ²˜λ¦¬ν•  수 μžˆλ‹€.

→ λ‹€ν˜•μ„±μ€ ν•˜λ‚˜μ˜ λ©”μ‹œμ§€μ™€ ν•˜λ‚˜ μ΄μƒμ˜ λ©”μ†Œλ“œ μ‚¬μ΄μ˜ 관계

 

λ‹€ν˜•μ„±μ€ λ™μΌν•œ 역할을 μˆ˜ν–‰ν•  수 μžˆλŠ” 객체듀 μ‚¬μ΄μ˜ λŒ€μ²΄ κ°€λŠ₯성을 μ˜λ―Έν•œλ‹€.

→ λ‹€ν˜•μ„±μ€ μˆ˜μ‹ μžμ˜ μ’…λ₯˜λ₯Ό μΊ‘μŠν™”ν•œλ‹€.

 

객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ΄ κ°•λ ₯ν•œ μ΄μœ λŠ” λ‹€ν˜•μ„±μ„ μ΄μš©ν•΄ ν˜‘λ ₯을 μœ μ—°ν•˜κ²Œ λ§Œλ“€ 수 있기 λ•Œλ¬Έμ΄λ‹€.

 

 

βœ‰οΈ  λ©”μ‹œμ§€λ₯Ό 따라라

객체지ν–₯의 κ°•λ ₯함은 ν΄λž˜μŠ€κ°€ μ•„λ‹ˆλΌ 객체듀이 μ£Όκ³ λ°›λŠ” λ©”μ‹œμ§€λ‘œλΆ€ν„° λ‚˜μ˜¨λ‹€.

ν΄λž˜μŠ€λŠ” 단지 동적인 κ°μ²΄λ“€μ˜ νŠΉμ„±κ³Ό ν–‰μœ„λ₯Ό 정적인 ν…μŠ€νŠΈλ‘œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλŠ” 좔상화 도ꡬ일 뿐이닀.

(ν΄λž˜μŠ€λŠ” 객체의 속성과 ν–‰μœ„λ₯Ό λ‹΄λŠ” 틀일 뿐이닀.)

클래슀λ₯Ό μ •μ˜ν•˜λŠ” 것이 λ¨Όμ €κ°€ μ•„λ‹ˆλΌ κ°μ²΄λ“€μ˜ 속성과 ν–‰μœ„λ₯Ό μ‹λ³„ν•˜λŠ” 것이 λ¨Όμ €λ‹€!

 

클래슀λ₯Ό 쀑심에 λ‘λŠ” μ„€κ³„λŠ” μœ μ—°ν•˜μ§€ λͺ»ν•˜κ³  ν™•μž₯ν•˜κΈ° μ–΄λ ΅λ‹€.

ν΄λž˜μŠ€μ— λ‹΄κΈΈ κ°μ²΄λ“€μ˜ 곡톡적인 ν–‰μœ„μ™€ 속성을 ν¬μ°©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € ν˜‘λ ₯ν•˜λŠ” κ°μ²΄λ“€μ˜ κ΄€μ μ—μ„œ μ‹œμŠ€ν…œμ„ 바라봐야 ν•œλ‹€.

 

λ§Žμ€ μ‚¬λžŒλ“€μ€ μ‹œμŠ€ν…œμ— ν•„μš”ν•œ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ 객체가 μ‘΄μž¬ν•œλ‹€λŠ” μ„ μž…κ²¬μ„ κ°€μ§€κ³  μžˆλ‹€.

ν•˜μ§€λ§Œ λ°μ΄ν„°λŠ” 객체가 ν–‰μœ„λ₯Ό μˆ˜ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ μž¬λ£Œμ΄λ‹€.

데이터에 λŒ€ν•œ 결정을 λ’€λ‘œ 미루고 객체의 ν–‰μœ„λ₯Ό κ³ λ €ν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체λ₯Ό λ…λ¦½λœ λ‹¨μœ„κ°€ μ•„λ‹ˆλΌ ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯ μ•ˆμ—μ„œ 생각해야 ν•œλ‹€.

κ²°κ΅­ 객체λ₯Ό μ΄μš©ν•˜λŠ” μ€‘μš”ν•œ μ΄μœ λŠ” 객체가 λ‹€λ₯Έ 객체가 ν•„μš”λ‘œ ν•˜λŠ” ν–‰μœ„λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ…λ¦½λœ 객체의 μƒνƒœμ™€ ν–‰μœ„μ— λŒ€ν•΄ κ³ λ―Όν•˜μ§€ 말고 μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 객체가 λ‹€λ₯Έ κ°μ²΄μ—κ²Œ μ œκ³΅ν•΄μ•Ό ν•˜λŠ” λ©”μ‹œμ§€μ— λŒ€ν•΄ κ³ λ―Όν•΄μ•Ό ν•œλ‹€.

객체가 λ©”μ‹œμ§€λ₯Ό μ„ νƒν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ©”μ‹œμ§€κ°€ 객체λ₯Ό μ„ νƒν•˜κ²Œ ν•΄μ•Ό ν•œλ‹€.

 

μ •λ¦¬ν•˜λ©΄ ν˜‘λ ₯에 ν•„μš”ν•œ λ©”μ‹œμ§€λ₯Ό λ¨Όμ € κ²°μ •ν•˜κ³  λ©”μ‹œμ§€κ°€ κ²°μ •λœ 후에 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  객체λ₯Ό μ„ νƒν•œλ‹€.

(μˆ˜μ‹  κ°€λŠ₯ν•œ λ©”μ‹œμ§€κ°€ λͺ¨μ—¬ 객체의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ²°μ •ν•œλ‹€. → 이건 λ’€μ—μ„œ λ‹€λ£¨μž)

 

λ©”μ‹œμ§€λ₯Ό κ²°μ •ν•˜λŠ” μ‹œμ μ—μ„œ μ–΄λ–€ 객체가 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  것인지λ₯Ό μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— λ‹Ήμ—°νžˆ λ©”μ‹œμ§€ μ†‘μ‹ μžλŠ” λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  객체의 λ‚΄λΆ€ μƒνƒœλ₯Ό λ³Ό 수 μ—†λ‹€.

→ λ©”μ‹œμ§€ μ€‘μ‹¬μ˜ μ„€κ³„λŠ” λ©”μ‹œμ§€ μˆ˜μ‹ μžμ˜ μΊ‘μŠν™”λ₯Ό μ¦μ§„μ‹œν‚¨λ‹€.

→ μ†‘μ‹ μžκ°€ μˆ˜μ‹ μžμ˜ λ‚΄λΆ€ μƒνƒœλ₯Ό 미리 μ•Œ 수 없기에 μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžμ˜ 관계가 λŠμŠ¨ν•˜κ²Œ κ²°ν•©λœλ‹€. (결합도 ↓)

 

πŸ‘Š  λ©”μ‹œμ§€λ₯Ό 믿어라. 그러면 자율적인 μ±…μž„μ€ μ €μ ˆλ‘œ λ”°λΌμ˜¬ 것이닀 !