Study

[객체지ν–₯의 사싀과 μ˜€ν•΄ - 2] μ΄μƒν•œ λ‚˜λΌμ˜ 객체

youn12 2023. 1. 17. 22:59
πŸ“‹ λͺ©μ°¨.

2. μ΄μƒν•œ λ‚˜λΌμ˜ 객체
    .객체지ν–₯κ³Ό 인지 λŠ₯λ ₯
    .객체, 그리고 μ΄μƒν•œ λ‚˜λΌ

    .객체, 그리고 μ†Œν”„νŠΈμ›¨μ–΄ λ‚˜λΌ
    .κΈ°κ³„λ‘œμ„œμ˜ 객체
    .행동이 μƒνƒœλ₯Ό κ²°μ •ν•œλ‹€
    .μ€μœ μ™€ 객체


βœ”οΈ λ‚΄μš©.

 

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

 

 

객체지ν–₯ νŒ¨λŸ¬λ‹€μž„μ€ 지식을 μΆ”μƒν™”ν•˜κ³  μΆ”μƒν™”ν•œ 지식을 객체 μ•ˆμ— μΊ‘μŠν™”ν•¨μœΌλ‘œμ¨ 싀세계 λ¬Έμ œμ— λ‚΄μž¬λ˜λ‹ˆ λ³΅μž‘μ„±μ„ κ΄€λ¦¬ν•˜λ €κ³  ν•œλ‹€. 객체λ₯Ό λ°œκ²¬ν•˜κ³  μ°½μ‘°ν•˜λŠ” 것은 지식과 행동을 κ΅¬μ‘°ν™”ν•˜λŠ” λ¬Έμ œλ‹€.
- 레베카 μ›Œν”„μŠ€λΈŒλ‘

.객체지ν–₯κ³Ό 인지 λŠ₯λ ₯

 

- 인간이 μ§μ ‘μ μœΌλ‘œ 지각할 수 μžˆλŠ” λŒ€λΆ€λΆ„μ˜ κ°μ²΄λŠ” 물리적인 경계λ₯Ό μ§€λ‹Œ ꡬ체적인 사물이닀.

 


 

.객체, 그리고 μ΄μƒν•œ λ‚˜λΌ

 

- 객체의 νŠΉμ§•

 

1. κ°μ²΄λŠ” μƒνƒœλ₯Ό 가지며 μƒνƒœλŠ” λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.

2. 객체의 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€λŠ” 것은 객체의 행동이닀.

   2-1) ν–‰λ™μ˜ κ²°κ³ΌλŠ” μƒνƒœμ— 의쑴적이며 μƒνƒœλ₯Ό μ΄μš©ν•΄ μ„œμˆ ν•  수 μžˆλ‹€.

   2-2) ν–‰λ™μ˜ μˆœμ„œκ°€ 결과에 영ν–₯을 λ―ΈμΉœλ‹€.

3. κ°μ²΄λŠ” μ–΄λ–€ μƒνƒœμ— μžˆλ”λΌλ„ μœ μΌν•˜κ²Œ 식별 κ°€λŠ₯ν•˜λ‹€.


 

.객체, 그리고 μ†Œν”„νŠΈμ›¨μ–΄ λ‚˜λΌ

 

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

 

- λͺ¨λ“  객체의 μƒνƒœλŠ” λ‹¨μˆœν•œ κ°’κ³Ό 객체의 μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.

 

객체의 μƒνƒœλ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  νŠΉμ§•μ„ 톡틀어 객체의 ν”„λ‘œνΌν‹°(property, 객체의 νƒ€μž…)라고 ν•œλ‹€.

객체와 객체 μ‚¬μ΄μ˜ 의미 μžˆλŠ” 연결을 링크(link)라 ν•œλ‹€.

객체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ‹¨μˆœν•œ 값은 속성(attribute, 객체의 κ°’)이라 ν•œλ‹€.

객체의 ν”„λ‘œνΌν‹°λŠ” λ‹¨μˆœν•œ 값인 속성과 λ‹€λ₯Έ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ§ν¬λΌλŠ” 두 가지 μ’…λ₯˜μ˜ μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.

 

- μƒνƒœμ™€ 행동

 

 κ°μ²΄μ˜ μƒνƒœλŠ” μ €μ ˆλ‘œ λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€. 객체의 μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” 것은 객체의 자발적인 행동뿐이닀.

1. 객체의 행동은 μƒνƒœμ— 영ν–₯을 λ°›λŠ”λ‹€. -> μƒν˜Έμž‘μš©μ΄ ν˜„μž¬μ˜ μƒνƒœμ— μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ˜μ‘΄ν•˜λŠ”κ°€.

2. 객체의 행동은 μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚¨λ‹€. -> μƒν˜Έμž‘μš©μ΄ μ–΄λ–»κ²Œ ν˜„μž¬μ˜ μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€λŠ”κ°€

 

- ν˜‘λ ₯κ³Ό 행동

 

객체가 λ‹€λ₯Έ 객체와 ν˜‘λ ₯ν•˜λŠ” μœ μΌν•œ 방법은 λ‹€λ₯Έ κ°μ²΄μ—κ²Œ μš”μ²­μ„ λ³΄λ‚΄λŠ” 것이닀. μ˜€λ‘œμ§€ λ©”μ‹œμ§€λ₯Ό ν†΅ν•΄μ„œλ§Œ μ˜μ‚¬μ†Œν†΅ν•  수 μžˆλ‹€.

 

- μ‹λ³„μž

 

 κ°μ²΄λž€ μΈκ°„μ˜ 인지 λŠ₯λ ₯을 μ΄μš©ν•΄ 식별 κ°€λŠ₯ν•œ 경계λ₯Ό 가진 λͺ¨λ“  사물을 μ˜λ―Έν•œλ‹€. 객체가 식별 κ°€λŠ₯ν•˜λ‹€λŠ” 것은 객체λ₯Ό μ„œλ‘œ ꡬ별할 수 μžˆλŠ” νŠΉμ •ν•œ ν”„λ‘œνΌν‹°κ°€ 객체 μ•ˆμ— μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 이 ν”„λ‘œνΌν‹°λ₯Ό μ‹λ³„μžλΌκ³  ν•œλ‹€. λͺ¨λ“  κ°μ²΄λŠ” μ‹λ³„μžλ₯Ό 가지며 μ‹λ³„μžλ₯Ό μ΄μš©ν•΄ 객체λ₯Ό ꡬ별할 수 μžˆλ‹€.

 

 λͺ¨λ“  객체가 μ‹λ³„μžλ₯Ό κ°€μ§„λ‹€λŠ” 것과 λ°˜λŒ€λ‘œ 객체가 μ•„λ‹Œ λ‹¨μˆœν•œ 값은 μ‹λ³„μžλ₯Ό 가지지 μ•ŠλŠ”λ‹€.

λ‹¨μˆœν•œ 값은 숫자, λ¬Έμžμ—΄ λ“± λ³€ν•˜μ§€ μ•ŠλŠ” 양을 λͺ¨λΈλ§ν•œλ‹€.

 

 κ°’μ˜ 경우 두 μΈμŠ€ν„΄μŠ€μ˜ μƒνƒœκ°€ κ°™λ‹€λ©΄ 같은 κ²ƒμœΌλ‘œ νŒλ‹¨ν•œλ‹€. 이처럼 μƒνƒœλ₯Ό μ΄μš©ν•΄ 두 값이 같은지 νŒλ‹¨ν•  수 μžˆλŠ” μ„±μ§ˆμ„ λ™λ“±μ„±(equality)이라고 ν•œλ‹€.

 

 κ°μ²΄μ˜ 경우 μ‹œκ°„μ— 따라 λ³€κ²½λ˜λŠ” μƒνƒœλ₯Ό ν¬ν•¨ν•˜λ©°, 행동을 톡해 μƒνƒœλ₯Ό λ³€κ²½ν•œλ‹€. λ”°λΌμ„œ κ°€λ³€ μƒνƒœλ₯Ό 가진닀.

이 λ•ŒλŠ” 두 객체의 μ‹λ³„μžλ₯Ό 가지고 νŒλ‹¨ν•˜κ²Œ λ˜λŠ”λ° 두 객체의 μƒνƒœκ°€ λ‹€λ₯΄λ”라도 객체의 μ‹λ³„μžκ°€ κ°™λ‹€λ©΄ 같은 객체둜 νŒλ‹¨ν•  수 μžˆλ‹€. 이처럼 μ‹λ³„μžλ₯Ό 기반으둜 객체가 같은지λ₯Ό νŒλ‹¨ν•  수 μžˆλŠ” μ„±μ§ˆμ„ λ™μΌμ„±(identical)이라고 ν•œλ‹€.


.κΈ°κ³„λ‘œμ„œμ˜ 객체

 

 κ°μ²΄λ₯Ό κΈ°κ³„λ‘œμ„œ λ°”λΌλ³΄λŠ” 관점은 μƒνƒœ, 행동, μ‹λ³„μžμ— λŒ€ν•œ μ‹œκ°μ μΈ 이미지λ₯Ό μ œκ³΅ν•˜κ³  μΊ‘μŠν™”μ™€ λ©”μ‹œμ§€λ₯Ό ν†΅ν•œ ν˜‘λ ₯ 관계λ₯Ό 맀우 효과적으둜 μ„€λͺ…ν•œλ‹€.


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

 

 κ°μ²΄μ§€ν–₯에 κ°“ μž…λ¬Έν•œ μ‚¬λžŒλ“€μ΄ κ°€μž₯ μ‰½κ²Œ λΉ μ§€λŠ” 함정은 μƒνƒœλ₯Ό μ€‘μ‹¬μœΌλ‘œ 객체λ₯Ό λ°”λΌλ³΄λŠ” 것이닀. μ΄ˆλ³΄μž 듀은 λ¨Όμ € 객체에 ν•„μš”ν•œ μƒνƒœκ°€ 무엇인지λ₯Ό κ²°μ •ν•˜κ³  κ·Έ μƒνƒœμ— ν•„μš”ν•œ 행동을 κ²°μ •ν•œλ‹€. μ•ˆνƒ€κΉκ²Œλ„ μ΄λŸ¬ν•œ 방법은 섀계에 λ‚˜μœ 영ν–₯을 λΌμΉœλ‹€.

 

1. μƒνƒœλ₯Ό λ¨Όμ € κ²°μ •ν•  경우 μΊ‘μŠν™”κ°€ μ €ν•΄λœλ‹€.

 μƒνƒœμ— μ΄ˆμ μ„ 맞좜 경우 μƒνƒœκ°€ 객체 λ‚΄λΆ€λ‘œ κΉ”λ”ν•˜κ²Œ μΊ‘μŠν™”λ˜μ§€ λͺ»ν•˜κ³  곡용 μΈν„°νŽ˜μ΄μŠ€μ— κ·ΈλŒ€λ‘œ λ…ΈμΆœλΌλ²„λ¦΄ ν™•λ₯ μ΄ 높아진닀.

 

2. 객체λ₯Ό ν˜‘λ ₯μžκ°€ μ•„λ‹Œ 고립된 μ„¬μœΌλ‘œ λ§Œλ“ λ‹€.

 κ°μ²΄κ°€  ν•„μš”ν•œ μ΄μœ λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ¬Έλ§₯ λ‚΄μ—μ„œ λ‹€λ₯Έ 객체와 ν˜‘λ ₯ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. λΆˆν–‰ν•˜κ²Œλ„ μƒνƒœλ₯Ό λ¨Όμ € κ³ λ €ν•˜λŠ” 방식은 ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯μ—μ„œ 멀리 λ²—μ–΄λ‚œ 채 객체λ₯Ό μ„€κ³„ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ μžμ—°μŠ€λŸ½κ²Œ ν˜‘λ ₯에 μ ν•©ν•˜μ§€ λͺ»ν•œ 객체λ₯Ό μ°½μ‘°ν•˜κ²Œ λœλ‹€.

 

3. 객체의 μž¬μ‚¬μš©μ„±μ΄ μ €ν•˜λœλ‹€. 객체의 μž¬μ‚¬μš©μ„±μ€ λ‹€μ–‘ν•œ ν˜‘λ ₯에 μ°Έμ—¬ν•  수 μžˆλŠ” λŠ₯λ ₯μ—μ„œ λ‚˜μ˜¨λ‹€. μƒνƒœμ— μ΄ˆμ μ„ 맞좘 κ°μ²΄λŠ” λ‹€μ–‘ν•œ ν˜‘λ ₯에 μ°Έμ—¬ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— μž¬μ‚¬μš©μ„±μ΄ μ €ν•˜λ  μˆ˜λ°–μ— μ—†λ‹€.

 

 ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” ν›Œλ₯­ν•œ 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ κ°€μž₯ μ€‘μš”ν•œ 덕λͺ©μ€ μƒνƒœκ°€ μ•„λ‹ˆλΌ 행동에 μ΄ˆμ μ„ λ§žμΆ”λŠ” 것이닀.

객체의 적합성을 κ²°μ •ν•˜λŠ” 것은 객체의 행동이닀.

 

ν˜‘λ ₯ μ•ˆμ—μ„œ 객체의 행동은 κ²°κ΅­ 객체가 ν˜‘λ ₯에 μ°Έμ—¬ν•˜λ©΄μ„œ μ™„μˆ˜ν•΄μ•Ό ν•˜λŠ” μ±…μž„μ„ μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ μ–΄λ–€ μ±…μž„μ΄ ν•„μš”ν•œκ°€λ₯Ό κ²°μ •ν•˜λŠ” 과정이 전체 섀계λ₯Ό 주도해야 ν•œλ‹€. μ±…μž„-주도 섀계(Responsibility-Driven Design, RDD)λŠ” ν˜‘λ ₯μ΄λΌλŠ” λ¬Έλ§₯ μ•ˆμ—μ„œ 객체의 행동을 μƒκ°ν•˜λ„λ‘ λ„μ›€μœΌλ‘œμ¨ 응집도 λ†’κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ 객체λ₯Ό λ§Œλ“€ 수 있게 ν•œλ‹€.

 

행동이 μƒνƒœλ₯Ό κ²°μ •ν•œλ‹€.  이 μž₯μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ λ¬Έμž₯이닀.

 


.μ€μœ μ™€ 객체

 

객체지ν–₯μ΄λž€ ν˜„μ‹€μ„Έκ³„μ˜ λͺ¨λ°©μ΄ μ•„λ‹ˆλ‹€. 전지전λŠ₯ν•œ μ‘΄μž¬λ‘œμ„œ ν˜„μ‹€μ˜ 객체보닀 더 λ§Žμ€ 일을 ν•  수 μžˆλ‹€. 이 νŠΉμ§•μ„ μ˜μΈν™”λΌκ³  λΆ€λ₯Έλ‹€.

 

ν˜„μ‹€ 세계와 객체지ν–₯ 세계 μ‚¬μ΄μ˜ 관계λ₯Ό μ’€ 더 μ •ν™•ν•˜κ²Œ μ„€λͺ…ν•  수 μžˆλŠ” λ‹¨μ–΄λŠ” μ€μœ μ΄λ‹€.

 



πŸ“ λŠλ‚€μ .

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