μƒˆμ†Œμ‹

Languages/Java Script

[Js] 객체지ν–₯ | javascript 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° | 문법

  • -
λ°˜μ‘ν˜•

ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ "μƒν™œμ½”λ”©"의 μ΄κ³ μž‰ λ‹˜μ˜ κ°•μ˜λ₯Ό 기반으둜 올린 κ²Œμ‹œκΈ€ μž…λ‹ˆλ‹€.

상업적인 μš©λ„κ°€ μ•„λ‹Œ, 개인 곡뢀 정리 λͺ©μ μœΌλ‘œ μ˜¬λ¦¬λŠ” κΈ€μž„μ„ 미리 μ•Œλ¦½λ‹ˆλ‹€.

 

 

 

 


객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object-Oriented Programming)은 μ’€ 더 λ‚˜μ€ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ λ‘œμ§μ„ μƒνƒœ(state)와 ν–‰μœ„(behave)둜 이루어진 객체둜 λ§Œλ“œλŠ” 것이닀.

 

이 객체듀을 마치 레고 λΈ”λŸ­μ²˜λŸΌ μ‘°λ¦½ν•΄μ„œ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 것이 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λΌκ³  ν•  수 μžˆλ‹€.

λ‹€μ‹œ λ§ν•΄μ„œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ 객체λ₯Ό λ§Œλ“œλŠ” 것이닀.

 

λ”°λΌμ„œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ μ‹œμž‘μ€ κ°μ²΄λž€ 무엇인가λ₯Ό μ΄ν•΄ν•˜λŠ” 것이라고 ν•  수 μžˆλ‹€.

 

말이 μ–΄λ ΅κ²Œ λŠκ»΄μ§€μ§€ μ•ŠλŠ”κ°€?

 

그것은 아직 객체 지ν–₯에 λŒ€ν•œ μ²΄ν—˜μ΄ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

λ³Έ μˆ˜μ—…μ—μ„œλŠ” 객체 지ν–₯에 λŒ€ν•΄μ„œ μ½”λ“œ 없이 이야기 ν•  수 μžˆλŠ” 것듀에 λŒ€ν•΄μ„œλ§Œ 이야기 ν•  생각이닀.

객체 지ν–₯에 λŒ€ν•œ μ˜€λ¦¬μ—”ν…Œμ΄μ…˜μ΄λΌκ³  μƒκ°ν•˜κ³  κ°€λ²Όμš΄ 마음으둜 λ‚˜λ¨Έμ§€ λ‚΄μš©μ„ μ½μ–΄λ³΄μž.

 

 

β–Ό μ‰½κ²Œ μƒκ°ν•΄λ³ΌκΉŒ?

더보기

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•™μŠ΅ν•˜λŠ”λ° μž₯μ•  μ€‘μ˜ ν•˜λ‚˜λŠ” λ²ˆμ—­μ΄λ‹€.

Objectλ₯Ό λ²ˆμ—­ν•œ κ°μ²΄λŠ” ν˜„μ‹€μ—μ„œλŠ” 거의 쓰지 μ•ŠλŠ” 말이고, λ¨Έλž„κΉŒ 철학적인 λŠλ‚Œμ„ μžμ•„λ‚Έλ‹€.

 

κ·Έλž˜μ„œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ 처음 μ ‘ν•˜λŠ” μž…λ¬Έμžλ“€μ€ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ 철학적인 νƒκ΅¬μ˜ λŒ€μƒμœΌλ‘œ νŒŒμ•…ν•˜λŠ” κ²½ν–₯을 λ³΄μ΄λŠ”λ°, ν•„μžμ˜ 생각에 이것은 곡뢀λ₯Ό μ–΄λ ΅κ²Œ ν•  뿐 도움이 λ˜μ§€ μ•ŠλŠ”λ‹€.

 

μ‰½κ²Œ μƒκ°ν•˜μž. κ°μ²΄λŠ” λ³€μˆ˜μ™€ λ©”μ†Œλ“œλ₯Ό κ·Έλ£Ήν•‘ν•œ 것이닀.

 

 

문법과 섀계

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° κ΅μœ‘μ€ 크게 두 κ°€μ§€λ‘œ κ΅¬λΆ„λœλ‹€.

 

문법

ν•˜λ‚˜λŠ” 객체지ν–₯을 νŽΈν•˜κ²Œ ν•  수 μžˆλ„λ‘ μ–Έμ–΄κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ΅νžˆλŠ” 것이닀. μ΄λŸ¬ν•œ κΈ°λŠ₯듀은 if, for문처럼 문법적인 ꡬ성을 가지고 μžˆλ‹€. 이 문법을 μ΄ν•΄ν•˜κ³ , μˆ™μ§€ν•΄μ•Ό 객체λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 객체λ₯Ό λ§Œλ“œλŠ” 법에 λŒ€ν•œ ν•™μŠ΅μ΄λΌκ³  ν•  수 μžˆλ‹€. 우리 μˆ˜μ—…μ€ 여기에 초점이 맞좰져 μžˆλ‹€.

 

섀계

λ‘λ²ˆμ§ΈλŠ” 쒋은 객체λ₯Ό λ§Œλ“œλŠ” 법이닀. 이것을 λ‹€λ₯Έ λ§λ‘œλŠ” 섀계λ₯Ό μž˜ν•˜λŠ” 법이라고 ν•  수 μžˆλ‹€. 쒋은 μ„€κ³„λŠ” ν˜„μ‹€μ„ 잘 λ°˜μ˜ν•΄μ•Ό ν•œλ‹€. ν˜„μ‹€μ€ λ³΅μž‘ν•˜λ‹€. ν•˜μ§€λ§Œ κ·Έ λ³΅μž‘ν•¨ 전체가 ν•„μš”ν•œ 것은 μ•„λ‹ˆλ‹€. μ•„λž˜μ˜ 그림을 보자.

 

https://opentutorials.org/course/743/6553

μœ„μ˜ 그림은 런던의 지도닀.

 

μ—¬λŸ¬λΆ„μ΄ μ§€ν•˜μ² μ„ μ΄μš©ν•œλ‹€λ©΄ μ–΄λ–€ 지도λ₯Ό μ„ ν˜Έν• κΉŒ?

 

였λ₯Έμͺ½ ν•˜λ‹¨μ˜ 지도λ₯Ό μ„ ν˜Έν•  것이닀. μ™Όμͺ½ μƒλ‹¨μ˜ μ§€λ„λŠ” ν˜„μ‹€μ˜ λ³΅μž‘ν•¨μ„ λ‚˜νƒ€λ‚Έλ‹€.

였λ₯Έμͺ½ ν•˜λ‹¨μ˜ μ§€λ„λŠ” μ§€ν•˜μ²  νƒ‘μŠΉμžμ˜ κ΄€μ‹¬μ‚¬λ§Œμ„ λ°˜μ˜ν•˜κ³  μžˆλ‹€.

 

β–Ό μžμ„Ένžˆ ν•œλ²ˆ μ‚΄νŽ΄λ³΄μž.

더보기

μ—­ κ°„μ˜ κ±°λ¦¬λ‚˜ μ‹€μ œ μœ„μΉ˜μ™€ 같은 μš”μ†Œλ“€μ€ λͺ¨λ‘ λ°°μ œν•˜κ³  μžˆλ‹€. λ³΅μž‘함 μ†μ—μ„œ ν•„μš”ν•œ κ΄€μ λ§Œμ„ μΆ”μΆœν•˜λŠ” ν–‰μœ„λ₯Ό 좔상화라고 ν•œλ‹€.

 

μ§€ν•˜μ²  노선도가 λ””μžμΈμ˜ 좔상화라고 ν•œλ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“ λ‹€λŠ” 것은 μ†Œν”„νŠΈμ›¨μ–΄μ˜ 좔상화라고 ν•  수 μžˆλ‹€.

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ μ’€ 더 ν˜„μ‹€μ„ 잘 λ°˜μ˜ν•˜κΈ° μœ„ν•œ λ…Έλ ₯의 산물이닀.

 

이것은 λ‹¨μˆœνžˆ 객체 지ν–₯의 문법을 μ΄μš©ν•΄μ„œ 객체λ₯Ό λ§Œλ“ λ‹€κ³  λ‹¬μ„±λ˜λŠ” 것이 μ•„λ‹ˆλ‹€. κ³ λ„μ˜ 좔상화 λŠ₯λ ₯이 ν•„μš”ν•˜λ‹€.

쒋은 μ„€κ³„λŠ” 문법을 λ°°μš°λŠ” 것보닀 훨씬 μ–΄λ €μš΄ 일이닀. 심지어 이것은 지식을 λ„˜μ–΄μ„œ μ§€ν˜œμ˜ μ˜μ—­μ΄λ‹€.

 

쒋은 섀계λ₯Ό μœ„ν•œ 쑰언듀은 λ§Žμ§€λ§Œ μ΄λŸ¬ν•œ 쑰언듀은 μ‘°μ–Έμžμ˜ μž…μ„ λ– λ‚˜λŠ” μˆœκ°„ 생λͺ…λ ₯을 μžƒμ–΄λ²„λ¦°λ‹€.

지식은 μ „μˆ˜λ˜μ§€λ§Œ μ§€ν˜œλŠ” μ „μˆ˜λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€. 슀슀둜 κ²½ν—˜ν•˜κ³  κΉ¨μš°μ³μ„œ μžκΈ°ν™”μ‹œμΌœμ•Ό ν•œλ‹€.

ν•„μžλ„ κ·Έ κΈ΄ 여정을 따라가고 μžˆλŠ” κ²¬μŠ΅μƒμ— λΆˆκ³Όν•˜λ‹€.

 

객체지ν–₯의 섀계 μ›μΉ™μ΄λ‚˜ 객체 지ν–₯의 철학적인 μ˜λ―ΈλŠ” λŒ€λ‹¨νžˆ μ€‘μš”ν•˜λ‹€.

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 것듀을 μ§€κΈˆ μ–ΈκΈ‰ν•œλ‹€λ©΄ μ—¬λŸ¬λΆ„μ€ 미ꢁ 속에 λΉ μ§€κ²Œ 될 것이닀. κ·Έλž˜μ„œ ν•„μžκ°€ μ œμ•ˆν•˜λŠ” 것은 일단은 지식뢀터 μ΅νžˆμžλŠ” 것이닀.

 

μ–Έμ–΄κ°€ μ§€μ›ν•˜λŠ” 객체지ν–₯ 문법을 배우고, 이것듀이 μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€λ₯Ό μΆ©λΆ„νžˆ μ΄ν•΄ν•œ λ‹€μŒμ— λΉ„λ‘œμ†Œ 섀계 원칙도 이야기할 수 있고, 객체와 μ‚¬λ¬Όμ˜ λΉ„μœ λ„ μ‹œλ„ν•΄ λ³Ό 수 μžˆμ„ 것이닀. μ—¬κΈ°μ„œλŠ” λͺ‡ 가지 객체지ν–₯이 μΆ”κ΅¬ν•˜λŠ” 지ν–₯점을 κ°€λ³κ²Œ μ΄μ•ΌκΈ°ν•˜κ³  λ‹€μŒ ν† ν”½λΆ€ν„° ꡬ체적인 문법을 μ•Œμ•„λ³Ό 것이닀.

 

λΆ€ν’ˆν™”

 

ν”„λ‘œκ·Έλž˜λ°μ€ 정신적인 ν™œλ™μ΄λ‹€. 정신적인 것은 싀체가 μ—†κ³ , λ¬΄ν•œν•˜κ³ , μœ μ—°ν•˜λ‹€.

μ΄λŸ¬ν•œ νŠΉμ„±μ€ 정신이 가진 μž₯μ μ΄λ©΄μ„œ  μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ·ΉμΉ˜λ‹€. ν•˜μ§€λ§Œ μ •μ‹ μ˜ μ΄λŸ¬ν•œ νŠΉμ„±μ€ λ•Œλ‘œ μ˜€ν•΄λ‚˜ λͺ¨μˆœ 같은 λ¬Έμ œμ μ„ μœ λ°œν•œλ‹€.

 

μ†Œν”„νŠΈμ›¨μ–΄λ„ μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ κ·ΈλŒ€λ‘œ μƒμ†λ°›λŠ”λ‹€.

μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•œ λ…Έλ ₯ μ€‘μ˜ ν•˜λ‚˜κ°€ λΆ€ν’ˆν™”λΌκ³  ν•  수 μžˆλ‹€. 객체 지ν–₯κ³Ό λΆ€ν’ˆν™”λ₯Ό λ™μΌμ‹œ ν•  μˆ˜λŠ” μ—†μ§€λ§Œ λΆ€ν’ˆν™”λΌκ³  ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ 큰 흐름은 객체 지ν–₯이 λ§Œλ“€μ–΄μ§€λŠ”λ° μ§€λŒ€ν•œ κ³΅ν—Œμ„ ν–ˆλ‹€κ³  ν•  수 μžˆλ‹€.

 

ν•˜λ“œμ›¨μ–΄μ—μ„œ μ΄λ£¨μ–΄μ§€λŠ” λΆ€ν’ˆν™”μ˜ 예λ₯Ό 보자.

μ•„λž˜μ˜ μ»΄ν“¨ν„°λŠ” 초창기의 컴퓨터닀.

 

 

본체와 λͺ¨λ‹ˆν„°μ™€ ν‚€λ³΄λ“œκ°€ ν•˜λ‚˜λ‘œ λ‹¨μΌν™”λ˜μ–΄ μžˆλ‹€.  μ΄κ²ƒμ˜ λ¬Έμ œμ μ€ λΆ„λͺ…ν•˜λ‹€.

λͺ¨λ‹ˆν„°κ°€ κ³ μž₯ λ‚˜λ©΄ 컴퓨터λ₯Ό λ°”κΏ”μ•Ό ν•œλ‹€.

ν‚€λ³΄λ“œκ°€ κ³ μž₯ λ‚˜λ„ 컴퓨터λ₯Ό ꡐ체해야 ν•œλ‹€.

 

 

 

κ·Έλž˜μ„œ μœ„μ™€ 같이 λͺ¨λ‹ˆν„°μ™€ 본체와 컴퓨터λ₯Ό λΆ„λ¦¬ν–ˆλ‹€.

λ‹€μ‹œ λ§ν•΄μ„œ λΆ€ν’ˆν™” μ‹œν‚¨ 것이닀. κΈ°λŠ₯듀을 λΆ€ν’ˆν™” μ‹œν‚¨ 덕뢄에 μ†ŒλΉ„μžλ“€μ€ 더 쒋은 ν‚€λ³΄λ“œλ‚˜ μ €λ ΄ν•œ λͺ¨λ‹ˆν„°λ₯Ό 선택할 수 있게 λ˜μ—ˆλ‹€. 또 λ¬Έμ œκ°€ 생겼을 λ•Œ κ·Έ λ¬Έμ œκ°€ μ–΄λ””μ—μ„œ λ°œμƒν•œ 것인지 νŒŒμ•…ν•˜κ³  ν•΄κ²°ν•˜κΈ°κ°€ 훨씬 μ‰¬μ›Œμ§„λ‹€.

 

μœ„μ˜ κ·Έλ¦Όμ—μ„œ λͺ¨λ‹ˆν„°μ™€ ν‚€λ³΄λ“œ 그리고 본체λ₯Ό λΆ„λ¦¬ν•˜λŠ” 기쀀은 λ¬΄μ—‡μΌκΉŒ?

κ·Έ 기쀀을 μ„Έμš°λŠ” 것이 좔상화일 것이닀.

 

μœ„ μ œν’ˆμ˜ κΈ°νšμžλŠ” 컴퓨터λ₯Ό μž…λ ₯κ³Ό 좜λ ₯ 그리고 μ—°μ‚° & μ €μž₯으둜 λΆ„λ₯˜ν•˜κ³  μžˆλ‹€. 이 λΆ„λ₯˜μ— λ”°λΌμ„œ λΆ€ν’ˆλ“€μ„ λͺ¨μœΌκ³  λΆ„λ¦¬ν•΄μ„œ λͺ¨λ‹ˆν„°, ν‚€λ³΄λ“œ, 본체와 λ§ˆμš°μŠ€λΌλŠ” κ°œλ³„μ μΈ μ™„μ œν’ˆμ„ λ§Œλ“€κ³  μžˆλ‹€.

 

이 μ™„μ œν’ˆλ“€μ„ λΆ€ν’ˆμœΌλ‘œ μ‘°ν•©ν•˜λ©΄ μ»΄ν“¨ν„°λΌλŠ” ν•˜λ‚˜μ˜ μ™„μ œν’ˆμ΄ λ§Œλ“€μ–΄μ§„λ‹€. λ¬Όλ‘  정해진 닡이 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€. μ•„λž˜ μ»΄ν“¨ν„°λŠ” μ €μž₯ μž₯치λ₯Ό λΆ€ν’ˆν™”μ‹œν‚€κ³  μžˆλ‹€.

 

 

또 μ•„λž˜ μž₯μΉ˜λŠ” ν˜„μ‹œμ μ—μ„œ μ΅œμ‹  λ°μŠ€ν¬νƒ‘μ΄λ‹€.  그런데 λΆ€ν’ˆν™”λ₯Ό μ œκ±°ν•˜κ³  μžˆλ‹€.

기술이 κ²½λŸ‰ν™”λ˜λ©΄μ„œ μ»΄ν“¨ν„°λŠ” λ”μš± μž‘μ•„μ§€κ²Œ λ˜μ—ˆκ³ , κ·Έ κ²°κ³Ό 컴퓨터λ₯Ό λΆ€ν’ˆν™”ν•˜λŠ” κ²ƒμ˜ 맀λ ₯이 반감되고 있기 λ•Œλ¬Έμ΄ μ•„λ‹κΉŒ?

 

λΆ€ν’ˆν™”κ°€ μ€‘μš”ν•œ κ²ƒμž„μ—λŠ” λΆ„λͺ…ν•˜μ§€λ§Œ κ·Έ 보닀 μ€‘μš”ν•œ 것은 μ μ ˆν•¨μ΄λ‹€.

 

κ·Έλž˜μ„œ 섀계가 μ–΄λ €μš΄ 것이닀.

 

 

 

객체 지ν–₯은 λΆ€ν’ˆν™”μ˜ 정점이라고 ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ μš°λ¦¬λŠ” 아직 객체 지ν–₯을 λ°°μš°μ§€ μ•Šμ•˜λ‹€.

κ·Έλž˜μ„œ μš°λ¦¬κ°€ 배운 것 μ€‘μ—μ„œ λΆ€ν’ˆν™”μ˜ νŠΉμ„±μ„ 보여쀄 수 μžˆλŠ” κΈ°λŠ₯을 생각해보면 쒋을 것 κ°™λ‹€.

 

λ©”μ†Œλ“œλŠ” λΆ€ν’ˆν™”μ˜ 예라고 ν•  수 μžˆλ‹€. λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κΈ°λ³Έ μ·¨μ§€λŠ” μ—°κ΄€λ˜μ–΄ μžˆλŠ” λ‘œμ§λ“€μ„ κ²°ν•©ν•΄μ„œ λ©”μ†Œλ“œλΌλŠ” μ™„μ œν’ˆμ„ λ§Œλ“œλŠ” 것이닀. 그리고 이 λ©”μ†Œλ“œλ“€μ„ λΆ€ν’ˆμœΌλ‘œ ν•΄μ„œ ν•˜λ‚˜μ˜ μ™„μ œν’ˆμΈ λ…λ¦½λœ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 것이닀. λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 양을 극적으둜 쀄일 수 있고, λ©”μ†Œλ“œ λ³„λ‘œ κΈ°λŠ₯이 λΆ„λ₯˜λ˜μ–΄ 있기 λ•Œλ¬Έμ— ν•„μš”ν•œ μ½”λ“œλ₯Ό 찾기도 쉽고 문제의 진단도 빨라진닀.

 

 

그런데 ν”„λ‘œκ·Έλž¨μ΄ 컀지면 μ—„μ²­λ‚˜κ²Œ λ§Žμ€ λ©”μ†Œλ“œλ“€μ΄ μƒκ²¨λ‚˜κ²Œ λœλ‹€. λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것은 점점 μ–΄λ €μš΄ 일이 되기 μ‹œμž‘ν•œλ‹€. κΈ‰κΈ°μ•ΌλŠ” λ©”μ†Œλ“œκ°€ 없을 λ•Œμ™€ 같은 상황에 λ΄‰μ°©ν•˜κ²Œ λœλ‹€. λ©”μ†Œλ“œλŠ” ν”„λ‘œκ·Έλž˜λ°μ˜ μ—­μ‚¬μ—μ„œ μ€‘μš”ν•œ λ„μ•½μ΄μ—ˆμ§€λ§Œ, 이 도약이 μ„±μˆ™ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ 도약지점이 보이기 μ‹œμž‘ν•œ 것이닀.

 

 

κ·Έ 도약 μ€‘μ˜ ν•˜λ‚˜κ°€ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€.

μ΄κ²ƒμ˜ 핡심은 μ—°κ΄€λœ λ©”μ†Œλ“œμ™€ κ·Έ λ©”μ†Œλ“œκ°€ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λ“€μ„ λΆ„λ₯˜ν•˜κ³  κ·Έλ£Ήν•‘ν•˜λŠ” 것이닀. λ°”λ‘œ κ·Έλ ‡κ²Œ κ·Έλ£Ήν•‘ ν•œ λŒ€μƒμ΄ 객체(Object)λ‹€.

 

λΉ„μœ ν•˜μžλ©΄ 파일과 디렉토리가 μžˆμ„ λ•Œ λ©”μ†Œλ“œλ‚˜ λ³€μˆ˜κ°€ 파일이라면 이 νŒŒμΌμ„ κ·Έλ£Ήν•‘ν•˜λŠ” 디렉토리가 객체라고 ν•  수 μžˆλ‹€. 이λ₯Ό ν†΅ν•΄μ„œ 더 큰 λ‹¨μœ„μ˜ λΆ€ν’ˆμ„ λ§Œλ“€ 수 있게 λ˜μ—ˆλ‹€.

 

은닉화, μΊ‘μŠν™”

 

그런데 λΆ€ν’ˆν™”λΌκ³  ν•˜λŠ” λͺ©ν‘œλŠ” λ‹¨μˆœνžˆ λ™μΌν•œ κΈ°λŠ₯을 ν•˜λŠ” λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ₯Ό κ·Έλ£Ήν•‘ν•œλ‹€κ³  λ‹¬μ„±λ˜λŠ” 것은 μ•„λ‹ˆλ‹€.

μ œλŒ€λ‘œλœ λΆ€ν’ˆμ΄λΌλ©΄ 그것이 μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ‘ŒλŠ”μ§€ λͺ¨λ₯΄λŠ” μ‚¬λžŒλ„ κ·Έ λΆ€ν’ˆμ„ μ‚¬μš©ν•˜λŠ” λ°©λ²•λ§Œ μ•Œλ©΄ μ“Έ 수 μžˆμ–΄μ•Ό ν•œλ‹€.

 

이λ₯Όν…Œλ©΄ λͺ¨λ‹ˆν„°κ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ λͺ°λΌλ„ 컴퓨터와 λͺ¨λ‹ˆν„°λ₯Ό μ—°κ²°ν•˜λŠ” λ°©λ²•λ§Œ μ•Œλ©΄ 화면을 ν‘œμ‹œ ν•  수 μžˆλŠ” 것과 같은 μ΄μΉ˜λ‹€.

 

즉 λ‚΄λΆ€μ˜ λ™μž‘ 방법을 λ‹¨λ‹¨ν•œ μΌ€μ΄μŠ€(λΉ„μœ ν•˜μžλ©΄ 객체) μ•ˆμœΌλ‘œ 숨기고 μ‚¬μš©μžμ—κ²ŒλŠ” κ·Έ λΆ€ν’ˆμ˜ μ‚¬μš©λ°©λ²•(λ©”μ†Œλ“œ)λ§Œμ„ λ…ΈμΆœν•˜κ³  μžˆλŠ” 것이닀.

 

μ΄λŸ¬ν•œ 컨셉을 μ •λ³΄μ˜ 은닉화(Information Hiding), λ˜λŠ” μΊ‘μŠν™”(Encapsulation)라고 λΆ€λ₯Έλ‹€. μžμ—°μŠ€λŸ½κ²Œ μ‚¬μš©μžμ—κ²ŒλŠ” κ·Έ λΆ€ν’ˆμ„ μ‚¬μš©ν•˜λŠ” 방법이 μ€‘μš”ν•œ 것이 λœλ‹€.  

 

μΈν„°νŽ˜μ΄μŠ€

잘 λ§Œλ“€μ–΄μ§„ λΆ€ν’ˆμ΄λΌλ©΄ λΆ€ν’ˆκ³Ό λΆ€ν’ˆμ„ μ„œλ‘œ κ΅ν™˜ ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

예λ₯Όλ“€μ–΄λ³΄μž. 집에 μžˆλŠ” 컴퓨터에 Aμ‚¬μ˜ λͺ¨λ‹ˆν„°λ₯Ό μ—°κ²°ν•˜λ‹€κ°€ Bμ‚¬μ˜ λͺ¨λ‹ˆν„°λ₯Ό μ—°κ²° ν•  수 μžˆλ‹€.

 

또 집에 있던 λͺ¨λ‹ˆν„°μ— Aμ‚¬μ˜ 컴퓨터λ₯Ό μ—°κ²°ν•΄μ„œ μ‚¬μš©ν•˜λ‹€κ°€ μƒˆλ‘œμš΄ 컴퓨터λ₯Ό κ΅¬μž…ν•˜λ©΄μ„œ Bμ‚¬μ˜ 컴퓨터λ₯Ό μ—°κ²° ν•  수 μžˆλ‹€. λͺ¨λ‹ˆν„°μ™€ μ»΄ν“¨ν„°λŠ” μ„œλ‘œκ°€ κ΅ν™˜κ΄€κ³„μ— μžˆλŠ” 것이닀.

이것은 λͺ¨λ‹ˆν„°μ™€ 컴퓨터λ₯Ό μ—°κ²°ν•˜λŠ” μΌ€μ΄λΈ”μ˜ 규격이 ν‘œμ€€ν™” λ˜μ–΄ 있기 λ•Œλ¬Έμ— κ°€λŠ₯ν•œ 일이닀. μ•„λž˜μ˜ 그림을 보자. λͺ¨λ‹ˆν„°μ™€ 컴퓨터λ₯Ό μ—°κ²°ν•˜λŠ” 케이블인 HDMIλ₯Ό 보여쀀닀.

컴퓨터와 λͺ¨λ‹ˆν„°λ₯Ό λ§Œλ“œλŠ” 업체듀은 μœ„μ™€ 같은 μΌ€μ΄λΈ”μ˜ κ·œκ²©μ„ κ³΅μœ ν•œλ‹€.

λͺ¨λ‹ˆν„° μž…μž₯μ—μ„œλŠ” 컴퓨터가, 컴퓨터 μž…μž₯μ—μ„œλŠ” λͺ¨λ‹ˆν„°κ°€ μ–΄λ–€ μ‹μœΌλ‘œ λ§Œλ“€μ–΄μ‘ŒλŠ”μ§€λŠ” 신경쓰지 μ•ŠλŠ”λ‹€.

 

각각의 λΆ€ν’ˆμ€ 미리 정해진 약속에 λ”°λΌμ„œ μ‹ ν˜Έλ₯Ό μž…, 좜λ ₯ν•˜κ³ , μ—°κ²°μ μ˜ λͺ¨μ–‘을 ν‘œμ€€μ— 맞게 λ§Œλ“€λ©΄ λœλ‹€.

μ΄λŸ¬ν•œ 연결점을 μΈν„°νŽ˜μ΄μŠ€(interface)라고 ν•œλ‹€. μœ„μ˜ 그림을 보면 HDMI μΌ€μ΄λΈ”μ˜ 연결점은 특유의 μƒκΉ€μƒˆκ°€ μžˆλ‹€.

 

λ§Œμ•½ HDMI 케이블을 λžœμ„ μ„ μ—°κ²°ν•˜λŠ” ꡬ멍에 μ—°κ²°ν•˜λ €κ³  ν•œλ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

λ™μž‘ν•˜μ§€ μ•Šμ„ 뿐 μ•„λ‹ˆλΌ μ—°κ²° μžμ²΄κ°€ λ˜μ§€ μ•ŠλŠ”λ‹€. μΈν„°νŽ˜μ΄μŠ€λž€ 이질적인 것듀이 κ²°ν•©ν•˜λŠ” 것을 λ§‰μ•„μ£ΌλŠ” 역할도 ν•˜λŠ” 것이닀.

 

즉 μΈν„°νŽ˜μ΄μŠ€λŠ” λΆ€ν’ˆλ“€ κ°„μ˜ 약속이닀. μ΄λŸ¬ν•œ 약속을 ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œλŠ” μ–΄λ–»κ²Œ κ΅¬ν˜„ν•˜λŠ”κ°€λ„ μ‚΄νŽ΄λ³Έλ‹€.

 

 

opentutorials.org/course/743/6553

 

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° - μƒν™œμ½”λ”©

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object-Oriented Programming)은 μ’€ 더 λ‚˜μ€ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ λ‘œμ§μ„ μƒνƒœ(state)와 ν–‰μœ„(behave)둜 이루어진 객체둜 λ§Œλ“œλŠ” 것

opentutorials.org

 

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.