λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μŠ€ν„°λ””/였브젝트

[였브젝트] 3μž₯ 'μ—­ν• , μ±…μž„, ν˜‘λ ₯'

by moon101 2022. 10. 27.

 

3μž₯μ—μ„œλŠ” 객체지ν–₯ μ„€κ³„μ˜ 핡심인 μ—­ν• , μ±…μž„, ν˜‘λ ₯에 λŒ€ν•΄ μ„€λͺ…ν•œλ‹€. 

 

 

 

객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ˜ 핡심은?

  • μ—­ν• (role) : 객체듀이 ν˜‘λ ₯ μ•ˆμ—μ„œ μˆ˜ν–‰ν•˜λŠ” μ±…μž„λ“€μ΄ λͺ¨μ—¬ 객체가 μˆ˜ν–‰ν•˜λŠ” μ—­ν•  ꡬ성
  • μ±…μž„(responsibility) : 객체가 ν˜‘λ ₯에 μ°Έμ—¬ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” 둜직(행동)
    • λ©”μ‹œμ§€κ°€ 객체λ₯Ό κ²°μ •ν•˜κ³ , 행동이 μƒνƒœλ₯Ό 결정함
  • ν˜‘λ ₯(collaboration) : 객체듀이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ λ©”μ‹œμ§€λ₯Ό μ£Όκ³ λ°›μœΌλ©΄μ„œ μƒν˜Έμž‘μš©ν•˜λŠ” 것

 

μ±…μž„μ΄λž€?

  • 객체가 '무엇을 μ•Œκ³  μžˆλŠ”κ°€' + 무엇을 ν•  수 μžˆλŠ”κ°€'둜 ꡬ성됨
  • 즉  'ν•˜λŠ” 것' + 'μ•„λŠ” 것'으둜 λ‚˜λˆŒ 수 있음

 

역할을 κ΅¬ν˜„ν•˜λŠ” 방법은?

  • 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€ -> ꡬ체 ν΄λž˜μŠ€λ“€μ΄ 따라야 ν•˜λŠ” μ±…μž„μ˜ 집합을 μ„œμˆ ν•¨

 

CRC μΉ΄λ“œ (Candidate, Resposibility, Collaborator)

CRC μΉ΄λ“œ

 

λΆ„λͺ… μ˜ν™”μ˜ˆλ§€μ— κ΅¬ν˜„ 클래슀λ₯Ό μ œμ™Έν•˜κ³  7개 ν΄λž˜μŠ€κ°€ μžˆμ—ˆλ˜ 것 같은데... Money, Reservation, Customer은 후보가 될 수 μžˆλŠ” 건가? ν•˜λ‚˜μ˜ CRC μΉ΄λ“œλŠ” ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” ν•˜λ‚˜μ˜ 후보(candidate)λ₯Ό ν‘œν˜„ν•œλ‹€κ³  ν•œλ‹€. ν›„λ³΄λŠ” μ—­ν• , 객체, 클래슀 μ–΄λ–€ 것이라도 될 수 μžˆλ‹€(p.80) 그럼 μ € 였λ₯Έμͺ½ 3κ°œλ„ ν΄λž˜μŠ€λ‹ˆκΉŒ 후보가 될 수 μžˆλŠ” 것 κ°™κΈ΄ ν•œλ° μ±…μž„μ΄ 없어도 넣어도 λ˜λŠ” 건가? μ±…μ—λŠ” Screening, Movie, DiscountPolicy, DiscountCondition μ΄λ ‡κ²Œ 4κ°œκ°€ μ˜ˆμ‹œλ‘œ λ‚˜μ™€μžˆλ‹€. μ±…μž„μ΄ ν˜‘λ ₯에 μ°Έμ—¬ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” 둜직이면 customerλ‚˜ reservation은 μ±…μž„λ„ μ—†κ³  λ©”μ‹œμ§€λ₯Ό 전달할 ν˜‘λ ₯μžλ„ μ—†λ‹€. 

 

 

μ˜ν™” 예맀 μ‹œμŠ€ν…œμ€ 'μ˜ˆλ§€ν•˜λΌ' λΌλŠ” λ©”μ‹œμ§€λ₯Ό μ„ νƒν•˜λŠ” κ²ƒμœΌλ‘œ 섀계가 μ‹œμž‘λλ‹€. -> 이 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  객체둜 Screening 선택 -> Screening이 '가격을 κ³„μ‚°ν•˜λΌ'λΌλŠ” λ©”μ‹œμ§€ 전솑을 ν•΄μ•Ό ν•˜κ³  -> 이 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•  객체둜 Movieλ₯Ό 선택함(p.85).

 

 

'였브젝트'λ₯Ό 읽기 이전에 '객체지ν–₯의 사싀과 μ˜€ν•΄'λ₯Ό 읽고 μ—­ν• , μ±…μž„, ν˜‘λ ₯에 λŒ€ν•΄μ„œλŠ” μ΄ν•΄ν–ˆλ‹€κ³  μƒκ°ν–ˆλŠ”λ°, 아직은 객체지ν–₯적으둜 μ‚¬κ³ ν•˜κ³  μ„€κ³„ν•˜λŠ” 것이 μ΅μˆ™ν•˜μ§€ μ•Šλ‹€.

λŒ“κΈ€