λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Programming/Java

μžλ°”[Java] μΈν„°νŽ˜μ΄μŠ€[Interface] μ‚¬μš©κ³Ό 이유

728x90
λ°˜μ‘ν˜•

β–Ά μΈν„°νŽ˜μ΄μŠ€(Interface) λž€?

μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λž€, 좔상 ν΄λž˜μŠ€μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μΆ”μƒλœ 틀을 λ§Œλ“€μ–΄ κ°œλ°œμ— ν˜Όμ„ μ΄ μ—†κ²Œλ” λ„μ™€μ£ΌλŠ” 역할을 ν•˜λŠ” 객체이닀.

 

ν˜‘μ—…μ„ ν•˜λŠ” κ°œλ°œμžλ“€λΌλ¦¬μ˜ μ›ν™œν•œ μ˜μ‚¬μ†Œν†΅μ„ μœ„ν•΄μ„œ μƒμ„±λœ κ°œλ…μœΌλ‘œ μΈν„°νŽ˜μ΄μŠ€λΌλŠ” 이름을 κ°€μ§€λŠ” 것 κ°™λ‹€.

β–Ά μΆ”상 ν΄λž˜μŠ€μ™€ 무엇이 λ‹€λ₯ΌκΉŒ?

좔상 ν΄λž˜μŠ€λŠ” 트리 ν˜•μ‹μœΌλ‘œ μƒμœ„ ν΄λž˜μŠ€μ™€ ν•˜μœ„ 클래슀둜 λ‚˜λ‰˜μ–΄μ§€λŠ” 트리 ꡬ쑰이닀.

 

ν•˜μœ„ ν΄λž˜μŠ€λŠ” μƒμœ„ ν΄λž˜μŠ€μ—μ„œ μΆ”μƒν™”μ‹œν‚¨ μƒμ„±μž ν˜Ήμ€ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λ©΄μ„œ 더 κ΅¬μ²΄ν™”λ˜μ–΄κ°„λ‹€.

트리 ꡬ쑰

λ°˜λ©΄μ—, μΈν„°νŽ˜μ΄μŠ€λŠ” 트리 ꡬ쑰와 같은 수직적 ꡬ쑰가 μ•„λ‹Œ μˆ˜ν‰μ  ꡬ쑰λ₯Ό κ°€μ§€κ²Œ λœλ‹€.

μˆ˜ν‰ ꡬ쑰

수직적 ꡬ쑰λ₯Ό κ°–λŠ” 좔상 ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μƒμœ„ ν΄λž˜μŠ€μ—κ²Œλ§Œ 상속받을 수 μžˆμ§€λ§Œ, μˆ˜ν‰μ  ꡬ쑰의 μΈν„°νŽ˜μ΄μŠ€λŠ” ν•˜λ‚˜μ˜ ν΄λž˜μŠ€κ°€ μ—¬λŸ¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€.

2개의 μΈν„°νŽ˜μ΄μŠ€ κ°€μ Έμ˜€κΈ°

β–Ά μΈν„°νŽ˜μ΄μŠ€λŠ” μ™œ μ‚¬μš©ν• κΉŒ?

μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ°°μš°λ©΄μ„œ κ°€μž₯ 의문인 λΆ€λΆ„μ΄μ—ˆλ‹€. 상속과 좔상 λ©”μ„œλ“œκ°€ 있기 λ•Œλ¬Έμ— μΈν„°νŽ˜μ΄μŠ€μ˜ μ‘΄μž¬λŠ” 였히렀 개발의 λ³΅μž‘μ„±κ³Ό λ†’μ΄λŠ” 것이 μ•„λ‹Œκ°€ 생각이 μžˆμ—ˆλ‹€.

λ‚˜ 말고도 λ§Žμ€ μ‚¬λžŒλ“€μ΄ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ λ…ΌμŸμ΄ λ„· μƒμ—μ„œ 많이 μΌμ–΄λ‚˜κ³  μžˆμŒμ„ 확인할 수 μžˆμ—ˆλ‹€.

 

ν•˜μ§€λ§Œ, λΆ„λͺ… ν•„μš”μ— μ˜ν•΄μ„œ μžλ°”μ—μ„œ 이 같은 κΈ°λŠ₯을 μ œκ³΅ν•  것이라 생각 μ—­μ‹œ 컸기에 μ—¬λŸ¬ 가지 μ˜κ²¬λ“€μ„ λ΄€μ—ˆλ‹€.

 

그러던 쀑 "μƒν™œμ½”λ”©" 채널을 μš΄μ˜ν•˜μ‹œλŠ” "μ΄κ³ μž‰"λ‹˜μ˜ 짧은 μ„€λͺ… μ˜μƒμ„ 보고 λ°”λ‘œ 이해가 됐닀.

 

λ‚΄κ°€ μ΄ν•΄ν•œ λ‚΄μš©μ€ μ•„λž˜μ™€ κ°™λ‹€.

 

κ°œλ°œμžλ“€μ΄ μ„œλ‘œ ν˜‘μ—…ν•˜μ—¬ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€ λ™μ•ˆ μ„œλ‘œ λ§Œλ“€μ–΄λ‚Ό κΈ°λŠ₯듀은 유기적으둜 상관관계λ₯Ό λ§Œλ“€μ–΄λ‚Ό 것이닀.

 

Aκ°œλ°œμžκ°€ λ§Œλ“€κ³  μžˆλŠ” Aν΄λž˜μŠ€λŠ” Bκ°œλ°œμžκ°€ λ§Œλ“€κ³  μžˆλŠ” Bν΄λž˜μŠ€κ°€ 완성이 λ˜μ–΄μ•Όμ§€ 개발이 κ°€λŠ₯ν•œ κ²½μš°κ°€ μžˆμ„ 것이닀.

A클래슀 개발 쀑 B클래슀의 ν•„μš”μ„±

이럴 경우, Aκ°œλ°œμžλŠ” B클래슀의 더미(dummy) ν΄λž˜μŠ€λΌλŠ” κ°€μ§œ ν˜Ήμ€ μž„μ‹œ 클래슀λ₯Ό λ§Œλ“€μ–΄μ„œ Bν΄λž˜μŠ€κ°€ ν•„μš”ν•œ μžλ¦¬μ— μ±„μ›Œ 넣은 λ’€, Bκ°œλ°œμžκ°€ B클래슀λ₯Ό μ™„μ„±ν•œ 후에 λ°”κΏ”λ€œμœΌλ‘œμ„œ 개발 일정에 차질이 생기지 μ•Šμ„ 수 μžˆμ„ 것이닀.

 B더미 ν΄λž˜μŠ€μ™€ B클래슀의 μΈν„°νŽ˜μ΄μŠ€C ν™œμš©

Bν΄λž˜μŠ€μ—λŠ” μ—¬λŸ¬ κΈ°λŠ₯을 ν•˜λŠ” λ©”μ„œλ“œλ“€μ΄ μ‘΄μž¬ν•  텐데 이 λ©”μ„œλ“œλ“€μ˜ ν˜•μ‹(ν‹€)을 λ‹΄λ‹Ήν•˜λŠ” 것이 μΈν„°νŽ˜μ΄μŠ€κ°€ λ˜κ² λ‹€.

 

B더미 ν΄λž˜μŠ€μ™€ Bν΄λž˜μŠ€λŠ” 같은 μΈν„°νŽ˜μ΄μŠ€ Cλ₯Ό μ‚¬μš©ν•˜κ³  있고 μΈν„°νŽ˜μ΄μŠ€μ˜ λ©”μ„œλ“œ 1κ³Ό λ©”μ†Œλ“œ2λŠ” 좔상 λ©”μ†Œλ“œλ‘œμ„œ ν˜•μ‹λ§Œ κ°–μΆ°μ Έμžˆλ‹€. Bκ°œλ°œμžκ°€ Bν΄λž˜μŠ€μ—μ„œ λ©”μ†Œλ“œ1κ³Ό λ©”μ„œλ“œ 2λ₯Ό μ •μ˜ν•˜κ³  B클래슀λ₯Ό μ™„μ„±ν•œλ‹€λ©΄, Aκ°œλ°œμžκ°€ B더미 클래슀λ₯Ό B클래슀둜 κ΅μ²΄ν•΄μ£ΌκΈ°λ§Œ ν•˜λ©΄ λœλ‹€.

β–Ά μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄?

μΈν„°νŽ˜μ΄μŠ€λ‘œ λ©”μ„œλ“œ 1κ³Ό λ©”μ„œλ“œ 2의 ν˜•μ‹μ„ μž‘μ•„λ†“μ§€ μ•ŠλŠ”λ‹€λ©΄, κ°œλ°œμžλ“€ κ°„μ˜ B클래슀λ₯Ό λ‹΄λ‹Ήν•˜λŠ” Bκ°œλ°œμžκ°€ λ©”μ„œλ“œ 1을 Aκ°œλ°œμžκ°€ 가지고 μžˆλŠ” B더미 클래슀 μ•ˆμ˜λ©”μ„œλ“œ 1의 ν˜•μ‹μ΄ λ§žμ§€ μ•Šμ•„μ„œ λ§Žμ€ 양을 λ¦¬νŒ©ν„°λ§ ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 μžˆλ‹€.

λ©”μ†Œλ“œ ν˜•μ‹μ˜ 뢈일치 -> μˆ˜μ • ν•„μš”

β–Ά κ²°λ‘ 

μΈν„°νŽ˜μ΄μŠ€λŠ” λ©”μ„œλ“œμ˜ 틀을 미리 λ§Œλ“€μ–΄ 개발자 κ°„μ˜ μ˜μ‚¬μ†Œν†΅ ν˜Όμ„ μ„ 쀄여주고 λ‹€ν˜•μ„± κ°œλ°œμ— μœ λ¦¬ν•¨μ„ κ°€μ Έλ‹€μ£ΌλŠ” 객체이닀.

728x90
λ°˜μ‘ν˜•