[JAVA] ν΄λž˜μŠ€λŠ” 뭐고 객체가 뭐야?

객체?


κ°μ²΄λŠ” μ–΄λ””μ„œλ“  λ³Ό 수 μžˆλ‹€.

μžλ°” 뿐만 μ•„λ‹ˆλΌ 객체 지ν–₯ μ–Έμ–΄μ—μ„œμ˜ 핡심 κ°œλ… 쀑 ν•œκ°€μ§€λ₯Ό 뽑아보라고 ν•˜λ©΄ λŒ€λΆ€λΆ„ '객체'λ₯Ό μ–ΈκΈ‰ν•  κ²ƒμž…λ‹ˆλ‹€. κ°μ²΄λŠ” μ ˆλŒ€λ‘œ μ–΄λ €μš΄ κ°œλ…μ΄ μ•„λ‹™λ‹ˆλ‹€. 싀세계 μ–΄λ””μ„œλ“  λ³Ό 수 μžˆλŠ” 것이 κ°μ²΄μž…λ‹ˆλ‹€. κ·Έλƒ₯ 고개λ₯Ό λŒλ €μ„œ λ³Ό 수 μžˆλŠ” TV, 리λͺ¨μ½˜, 컴퓨터, μ±…, 강아지, μ‚¬λžŒλ“€, μ§€ν•˜μ²  λ“± 이런 것듀이 λ°”λ‘œ 객체의 μ§‘ν•©μž…λ‹ˆλ‹€. μ‹€μ„Έκ³„μ˜ 객체듀은 고유의 νŠΉμ„±μ΄ 있고, 또 행동(ν˜Ήμ€ κΈ°λŠ₯)을 가지며 μ‚¬λžŒμ΄ 리λͺ¨μ½˜μ„ μ΄μš©ν•˜μ—¬ TVλ₯Ό ν‚€λŠ” κ²ƒμ²˜λŸΌ 또 λ‹€λ₯Έ κ°μ²΄μ—κ²Œ 행동을 μš”κ΅¬ν•˜κ±°λ‚˜ 정보λ₯Ό μ£Όκ³ λ°›λŠ” λ“± μƒν˜Έμž‘μš©ν•˜λ©΄μ„œ μ‘΄μž¬ν•©λ‹ˆλ‹€. 

 

 

객체지ν–₯μ–Έμ–΄μ˜ νŠΉμ„±


객체 지ν–₯ μ–Έμ–΄λŠ” μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 싀세계에 μ‘΄μž¬ν•˜λŠ” 객체듀을 ν”„λ‘œκ·Έλž¨ 내에 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ ν΄λž˜μŠ€μ™€ 객체 κ°œλ…μ„ λ„μž…ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 객체 지ν–₯ μ–Έμ–΄μ˜ νŠΉμ„±μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

  • μΊ‘μŠν™” 
μΊ‘μŠν™”λž€ 객체λ₯Ό λΉˆν‹ˆμ—†μ΄ κ°μ‹Έμ„œ λ‚΄λΆ€λ₯Ό λ³΄ν˜Έν•˜κ³  μ™ΈλΆ€μ—μ„œ λ³Ό 수 없도둝 ν•˜λŠ” κ²ƒμœΌλ‘œ 객체의 μ€‘μš”ν•œ νŠΉμ§•μž…λ‹ˆλ‹€. 마치 μΊ‘μŠμ•ˆμ— λ“  μ•½μ²˜λŸΌ λ‚΄λΆ€κ°€ 보이지도 μ•Šκ³  μ™ΈλΆ€μ˜ μ ‘κ·ΌμœΌλ‘œλΆ€ν„° λ³΄ν˜Έν•΄ 캑슐의 λ³Έμ§ˆμ„ 지킀도둝 ν•΄μ€λ‹ˆλ‹€. μ•žμ˜ μ˜ˆμ‹œμ—μ„œ 약은 μΊ‘μŠμ„ μ΄μš©ν•˜μ—¬ λ³΄ν˜Έν•˜μ§€λ§Œ κ°μ²΄λŠ” ν΄λž˜μŠ€λΌλŠ” κ°œλ…μ„ ν†΅ν•˜μ—¬ μžμ‹ μ„ κ΅¬μ„±ν•˜λŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό λ³΄ν˜Έν•˜κ²Œ λ©λ‹ˆλ‹€. λ¬Όλ‘  외뢀와 μ›μ²œμ μœΌλ‘œ 차단할 μˆ˜λ„ μžˆμ§€λ§Œ, λ§Œμ•½ κ·Έλ ‡λ‹€λ©΄ μ‹€μ„Έκ³„λ“€μ˜ κ°μ²΄λ“€μ²˜λŸΌ μ„œλ‘œ μƒν˜Έμž‘μš©μ„ ν•˜μ§€ λͺ»ν•  κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ μΊ‘μŠν™”λŠ” κΈ°λ³Έ μ›μΉ™μ΄μ§€λ§Œ μ™ΈλΆ€μ™€μ˜ 접속을 μœ„ν•΄ μ–΄λŠμ •λ„λŠ” 곡개 λ…ΈμΆœν•˜κ²Œ λ©λ‹ˆλ‹€. 이 뢀뢄은 후에 μžμ„Ένžˆ μ–ΈκΈ‰ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

  • 상속 
μ‹€μ„Έκ³„μ—μ„œ 상속은 λΆ€λͺ¨κ°€ μžμ‹μ—κ²Œ μž¬μ‚°κ³Ό 같은 무엇인가λ₯Ό 물렀쀄 λ•Œ 주둜 μ‚¬μš©ν•˜λŠ” λ‹¨μ–΄μž…λ‹ˆλ‹€.  μ •λ¦¬ν•΄μ„œ λ§ν•΄λ³΄μžλ©΄ μƒμœ„ 개체의 속성이 ν•˜μœ„ κ°œμ²΄μ— λ¬Όλ €μ €μ„œ, ν•˜μœ„ κ°œμ²΄κ°€ μƒμœ„ 개체의 속성을 λͺ¨λ‘ κ°€μ§€λŠ” 관계λ₯Ό λ°”λ‘œ '상속' 이라고 ν•©λ‹ˆλ‹€. μžλ°”μ˜ 상속은 크게 λ‹€λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클래슀의 속성을 λ¬Όλ €λ°›κ³  κΈ°λŠ₯을 ν™•μž₯(extends)ν•  수 μžˆλŠ” 것이 λ°”λ‘œ μžλ°”μ˜ 상속 κ°œλ…μž…λ‹ˆλ‹€. 상속을 μ΄μš©ν•˜λ©΄ μžμ‹ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ λ©”μ†Œλ“œμ™€ ν•„λ“œλ₯Ό λ¬Όλ €λ°›μ•„ μ½”λ“œ μž‘μ„±μ— λ“œλŠ” μ‹œκ°„κ³Ό λΉ„μš©μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

  • λ‹€ν˜•μ„± 
λ‹€ν˜•μ„±μ΄λž€ 같은 μ΄λ¦„μ˜ λ©”μ†Œλ“œκ°€ 클래슀 ν˜Ήμ€ 객체에 따라 λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ„λ‘ κ΅¬ν˜„λ˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. λ‹€ν˜•μ„±μ˜ μ˜ˆμ‹œμ—λŠ” λ‹€μ–‘ν•œ 것이 있죠. κ·Έ μ€‘μ—λŠ” 상속 κ΄€κ³„μ—μ„œμ˜ λ‹€ν˜•μ„±μ˜ μ˜ˆλ‘œλŠ” μžμ‹ κ°μ²΄λ§ˆλ‹€ λΆ€λͺ¨κ°€ 가진 ν•˜λ‚˜μ˜ λ©”μ†Œλ“œλ₯Ό μ—¬λŸ¬ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” μ˜€λ²„λΌμ΄λ”©, 그리고 클래슀 λ‚΄λΆ€μ—μ„œ 이름은 κ°™μ§€λ§Œ μ„œλ‘œ λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ—¬λŸ¬ 개 λ§Œλ“œλŠ” λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©μ΄ μžˆμŠ΅λ‹ˆλ‹€. μžμ„ΈνžˆλŠ” 이후에 재차 μ–ΈκΈ‰ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.
  • 좔상화 
μΆ”μƒν™”λž€ κ°μ²΄λ“€μ˜ κ³΅ν†΅λœ νŠΉμ§•μ„ νŒŒμ•…ν•΄ μ •μ˜ν•΄ 놓은 섀계 기법이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, λŒ€μƒμ˜ νŠΉμ„± 쀑 λΆˆν•„μš”ν•œ 뢀뢄은 λ¬΄μ‹œν•˜κ³  ν•„μš”ν•œ κ³΅ν†΅μ λ§Œ λ‹€λ£¬λ‹€λŠ” 의미인데 이둜 μΈν•΄μ„œ ν˜„μ‹€μ˜ λ³΅μž‘μ„±μ„ κ·Ήλ³΅ν•˜κ³  λͺ©μ μ— 집쀑할 수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€.  예λ₯Ό λ“€μ–΄μ„œ λ™λ¬Όμ΄λΌλŠ” 클래슀λ₯Ό 섀계할 λ•Œ, 동물듀이 λͺ¨λ‘ κ³΅ν†΅μ μœΌλ‘œ 가지고 μžˆλŠ” 행동과 속성을 λ½‘μ•„λ‚΄λŠ” 과정을 λ°”λ‘œ 좔상화라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 울기, 웃기, λ¨ΉκΈ°, 크기, λͺΈλ¬΄κ²Œ 등이 있겠죠.

 

클래슀 그리고 객체 


μžλ°”λ₯Ό λΉ„λ‘―ν•œ 객체 지ν–₯ μ–Έμ–΄μ—μ„œ ν΄λž˜μŠ€λŠ” 객체λ₯Ό 찍어 λ‚΄κΈ° μœ„ν•œ 섀계도 ν˜Ήμ€ 틀이라고 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 이 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ κ·ΈλŒ€λ‘œ λ§Œλ“€μ–΄λ‚Έ 싀체가 λ°”λ‘œ κ°μ²΄μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ—°μœ λ‘œ 객체λ₯Ό 클래슀의 μΈμŠ€ν„΄μŠ€λΌκ³  λΆ€λ₯΄κΈ°λ„ ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λΆ•μ–΄λΉ΅ 판이 μžˆμ„ λ•Œ λΆ•μ–΄λΉ΅ 판이 클래슀라고 ν•˜λ©΄ κ·Έ λ˜‘κ°™μ€ λΆ•μ–΄λΉ΅ νŒμ—μ„œ λ§Œλ“€μ–΄μ§„ μ‘°κΈˆμ”©μ€ λ‹€λ₯΄κ²Œ 생긴 뢕어빡듀이 객체라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ΄μ§€λ§Œ 객체듀은 수 없이 많이 생성될 수 μžˆμŠ΅λ‹ˆλ‹€. 객체듀은 클래슀 섀계도 λŒ€λ‘œ λͺ¨λ‘ λ™μΌν•œ 속성을 가지고 νƒœμ–΄λ‚˜μ§€λ§Œ, μžμ‹ λ§Œμ˜ κ³ μœ ν•œ 값을 가지며 λ―Έλ¬˜ν•˜κ²Œ λ‹€λ₯Έ 객체듀이 νƒ„μƒν•˜κ²Œ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ‚¬λžŒμ„ 클래슀라고 κ°€μ •ν•˜λ©΄ κΉ€μ² μˆ˜, 홍길동, μ΄μ‚¬λžŒμ€ λͺ¨λ‘ 이름,직업,ν‚€,λ‚˜μ΄ λ“± 속성은 λ™μΌν•˜κ²Œ 가지고 μžˆμ§€λ§Œ 값은 μ„œλ‘œ λ‹€λ₯Έ 객체라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.