πŸ“… μ£Όκ°„ 회고(221101 ~ 221107)

  • μžλ°” μ€‘λ°˜λΆ€λΆ„ 곡뢀 (~자료 ꡬ쑰 쀑간)

πŸ“š κ³΅λΆ€ν•œ 것 정리


πŸ“‹ μžλ°”

μžλ°”λ§Œ κ³΅λΆ€ν–ˆλ‹€κ³  생각해도 될 μ •λ„λ‘œ μžλ°”μ—λ§Œ μ‹œκ°„μ„ νˆ¬μžν•œ ν•œ μ£Όμ˜€λ‹€. 그런데 생각보닀 진도λ₯Ό λ‚˜κ°€μ§€ λͺ»ν•΄μ„œ 아쉬웠닀. 처음 λ°°μš°λŠ” κ°œλ…λ“€μ΄λ‚˜ μš©μ–΄λ“€μ΄ λ§Žμ•˜κΈ°μ— 진도가 λ”λ””κ²Œ λ‚˜κ°€κΈ° μ‹œμž‘ν•œλ‹€.

λŒ€λž΅ 2κ°€μ§€μ˜ λͺ©ν‘œλ‘œ 곡뢀λ₯Ό μ‹œμž‘ν–ˆλ‹€.

  1. κ°œλ… λ†“μΉ˜μ§€ μ•ŠκΈ°
  2. 예제λ₯Ό μ—¬λŸ¬λ²ˆ ν’€κΈ°

✏️ κ°œλ…

πŸ“„ 상속, μ˜€λ²„λΌμ΄λ”©(Overriding)

  • 상속 뢀뢄은 λΆ€λΆ„μ μ΄μ§€λ§Œ μ €λ²ˆμ— 곡뢀λ₯Ό ν•œ κ²½ν—˜μ΄ μžˆμ–΄ μ‰½κ²Œ μ§„ν–‰ν•˜μ˜€λ‹€. 코딩을 μž‘μ„±ν•˜κ±°λ‚˜ ν•˜λŠ” 뢀뢄도 μ›ν™œν•˜κ²Œ μ§„ν–‰ν•˜μ˜€λŠ”λ° λ¬Έμ œλŠ” λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•˜λŠ” κ³Όμ •μ—μ„œ λ©”λͺ¨λ¦¬μ™€ κ΄€λ ¨λœ λΆ€λΆ„μ—μ„œ 어렀움을 κ²ͺμ—ˆλ‹€. μΈμŠ€ν„΄μŠ€κ°€ λ‹€λ₯Έ κ²½μš°μ— μ–΄λ–€ κ²½μš°λŠ” μ˜€λ²„λΌμ΄λ”©ν•œ λ©”μ„œλ“œλ₯Ό μ–΄λ–€ κ²½μš°λŠ” 같은 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 것이 κΆκΈˆν•˜μ˜€λ‹€.

πŸ“„ 가상 λ©”μ„œλ“œ

  • μœ„μ˜ μ˜λ¬Έμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ„€λͺ…λœ 뢀뢄인데 λΆ€μ‘±ν•˜μ—¬ μ°Ύμ•„ 본것을 μ‚¬μ§„μœΌλ‘œ μ •λ¦¬ν•΄λ³΄μž

  • λŒ€λž΅ 이런 그림으둜 μžλ°”μ˜ λ©”μ„œλ“œκ°€ ν™œμš©λ˜λŠ”λ° μžλ°”λŠ” νŠΉμ΄ν•˜κ²Œ λͺ¨λ“  λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ°μ „μ— vtable(virtual table)을 κ±°μΉœλ‹€. ν•œλ§ˆλ””λ‘œ 각 ν΄λž˜μŠ€λ§ˆλ‹€ 각각의 가상 ν…Œμ΄λΈ”μ„ 가지고 μž¬μ •μ˜λœ λ©”μ„œλ“œ, μ •μ˜λ˜μ§€ μ•Šμ€ λ©”μ„œλ“œλ‘œ λ‚˜λˆ„μ–΄ 각각의 λͺ…λ Ήμ–΄ set이 μžˆλŠ” μ£Όμ†Œλ₯Ό μ°Ύμ•„μ€€λ‹€. λ¬Όλ‘  이런 과정은 ν”„λ‘œκ·Έλž˜λ°μ΄ μ‹€ν–‰λ˜λŠ” κ³Όμ •μ—μ„œ μ‹œκ°„μ„ 많이 μž‘μ•„λ¨Ήκ²Œ λ˜μ§€λ§Œ μ‚¬μš©μžκ°€ 코딩을 ν•˜λŠ” κ³Όμ •μ—μ„œ 상속과 μ˜€λ²„λΌμ΄λ”©κ³Ό 같은 λΆ€λΆ„μ—μ„œ 큰 이점을 κ°€μ§€κ²Œ λœλ‹€.

https://plas.tistory.com/29 μ°Έκ³ 

πŸ“„ μΆ”μƒν΄λž˜μŠ€, μΈν„°νŽ˜μ΄μŠ€

  • μΆ”μƒν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€λŠ” κ°œλ…μ μœΌλ‘œ μ΄ν•΄ν•˜κ³  예제λ₯Ό μ‹€μŠ΅ν•˜λŠ”λ°λŠ” μ „ν˜€ λ¬Έμ œκ°€ μ—†μ—ˆλ‹€. ν•˜μ§€λ§Œ λ‚΄κ°€ 이것듀을 μ‚¬μš©ν•΄μ„œ 섀계λ₯Ό ν•  경우 μ‚¬μš©ν•˜κΈ° νž˜λ“€ 것 κ°™λ‹€. 아직 틀을 λ§Œλ“œλŠ” 눈이 없기에 틀을 μ§œλŠ” κ³Όμ •μ—μ„œ 이런 뢀뢄을 μΆ”μƒν΄λž˜μŠ€λ‚˜, μΈν„°νŽ˜μ΄μŠ€λ‘œ κ΅¬ν˜„ν•΄μ•Όμ§€ 같은 생각을 λ– μ˜¬λ¦¬κΈ°λŠ” νž˜λ“€ 것 κ°™λ‹€. μ‰¬μš΄ κ°œλ…κ³Ό μ‚¬μš©λ²•μ΄μ§€λ§Œ λ‚΄κ°€ λ‹€λ£¨κΈ°μ—λŠ” 아직 μ‹œκΈ°μƒμ‘° κ°™λ‹€.

πŸ“„ Object 클래슀

  • λͺ¨λ“  클래슀의 μƒμœ„ 클래슀이고 μ—¬λŸ¬κ°€μ§€ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜λ©° λ‚΄κ°€ 이런 것듀을 λͺΈμœΌλ‘œ ν•˜λ‚˜ν•˜λ‚˜ μ΅ν˜€κ°€λŠ” 과정을 κ²ͺμ–΄μ•Ό ν•  것 κ°™λ‹€. μ§€κΈˆ μ •λ¦¬ν•˜κ³ μž ν•˜λŠ” 것은 equals()와 hashCode()정도닀.

  • equals()λŠ” 논리적 동일성을 μ»΄ν“¨ν„°μ—κ²Œ μ•Œλ €μ€„ 수 μžˆλ‹€λŠ” 것이닀. 정보가 λ‹€λ₯Έ 객체듀도 λ‚΄κ°€ μ›ν•˜λŠ” νŠΉμ„± ν•˜λ‚˜λ‘œ 같은지 μ•„λ‹Œμ§€ ꡬ뢄할 수 μžˆλ‹€λŠ” 것이 쒋은 것 κ°™λ‹€.

  • hashCode()λŠ” μœ„μ˜ equals()와 짝으둜 쓰이며 λ…Όλ¦¬μ μœΌλ‘œ 같은데 무엇을 λ…Όλ¦¬μ μœΌλ‘œ λΉ„κ΅ν–ˆλƒ? λ₯Ό λ‚˜νƒ€λƒˆλ‹€κ³  μƒκ°ν•˜λ©΄ 될 것 κ°™λ‹€. λ‚΄κ°€ μ–΄λ–€ νŠΉμ„±μ„ κΈ°μ€€μœΌλ‘œ 같은지 μ•„λ‹Œμ§€λ₯Ό νŒλ³„ν•˜λŠ”μ§€ κ·Έ νŠΉμ„±μ„ λ°˜ν™˜ν•΄ μ£Όλ©΄ λœλ‹€.

✏️ 예제

λ‚΄κ°€ λͺ¨λ₯΄λŠ” κ°œλ…λ“€μ΄ λ‚˜μ˜€λ©΄μ„œ κ³΅λΆ€ν•˜λŠ” 방식을 λ°”κΎΈκ²Œ λ˜μ—ˆλ‹€.

  1. λ¨Όμ € μ½”λ”© 예제의 μ΄λ¦„λ§Œ 보고 λ‚˜μ˜ μƒκ°λŒ€λ‘œ κ΅¬ν˜„ν•΄ 보기
  2. κ°•μ˜μ™€ ν•¨κ»˜ 따라가며 λ‚΄κ°€ ν–ˆλ˜ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ©° μ½”λ”©ν•˜κΈ°
  3. 코딩을 μ‹€ν–‰μ‹œν‚€λŠ” μ‹€ν–‰ λΆ€λΆ„(Test)만 남기고 지웠닀가 λ‹€μ‹œ μ•žλΆ€λΆ„ μ½”λ”©ν•˜κΈ°

πŸ“„ 1. 처음

  • κ°•μ˜μ˜ κ°œλ…μ μΈ μ„€λͺ…을 λ“£κ³  λ‚˜μ„œ 예제의 λ©”μ„œλ“œ 이름, λ³€μˆ˜ 이름 λ“±λ§Œ 보고 λ‚΄κ°€ ν•œλ²ˆ 코딩을 ν•΄λ³΄λŠ” 것이닀. λ‚΄κ°€ μƒκ°ν–ˆλ˜ κ°œλ…, 특히 μ–΄λ””κ°€ μ–΄λ–»κ²Œ 호좜되고 λˆ„κ°€ λ¨Όμ € μ‚¬μš©λ˜κ³  ν•˜λŠ” λ“± 그런 κ°œλ…μ„ 해보며 λ‚΄κ°€ μƒκ°ν•œ 것이 λ§žλŠ” 지 ν™•μΈν•˜κΈ° μœ„ν•΄ ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€.

πŸ“„ 쀑간

  • κ°•μ˜λ₯Ό λ“€μœΌλ©° λ‚΄κ°€ ν–ˆλ˜ μ½”λ”©μ˜ 뢀뢄듀을 고쳐 λ‚˜κ°€λŠ” 과정인데 이 κ³Όμ •μ—μ„œ μƒλ‹Ήνžˆ μ–»μ–΄ κ°€λŠ” 것이 λ§Žλ‹€. μ–΄λŠ 뢀뢄이 λ¨Όμ € ν˜ΈμΆœλ˜λŠ”μ§€, λ‚΄κ°€ λ†“μΉœλΆ€λΆ„μ΄ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  κ°œλ…μ μœΌλ‘œ λ‚΄κ°€ λ‹€λ₯΄κ²Œ μƒκ°ν–ˆκΈ°μ— 잘λͺ»λœ 코딩을 μžμ£Όν–ˆκΈ°μ— κ°œλ…μ—λŒ€ν•œ 이해도도 높아지고 λ‹€μ‹œ 코딩을 ν•  λ•Œ μ™œ μ΄λ ‡κ²Œ ν•΄μ•Ό 정상 μž‘λ™ν•˜λŠ”μ§€ μ•Œκ²Œ λœλ‹€.

πŸ“„ 끝

  • ν•œ νŒŒνŠΈκ°€ λλ‚˜λ©΄ Test의 μ½”λ“œ μ‹€ν–‰ λΆ€λΆ„λ§Œμ„ 놔두고 μ§€μš΄λ’€ λ‹€μ‹œ μž‘μ„±ν•΄ λ³΄λŠ” 것이닀. κ°•μ˜λ₯Ό 보고 ν•œλ²ˆμ€ μ§§κ²ŒλΌλ„ λ³΅μŠ΅μ„ 해보고 싢은데 λ„ˆλ¬΄ λ§Žμ€ μ‹œκ°„μ„ νˆ¬μžν•˜κΈ°μ—λŠ” λΆ€λ‹΄μŠ€λŸ¬μ›Œμ„œ 이 방식을 μ„ νƒν–ˆλ‹€. μ΄λ ‡κ²Œ λ‹€μ‹œ 코딩을 ν•˜λ©΄ λ‚΄κ°€ 처음 μ½”λ”©ν•˜λ©° μƒκ°ν–ˆλ˜ κ°œλ…μ΄λ‚˜ 방식이 μ™œ 잘λͺ»λλŠ”지 λ‹€μ‹œ μƒκ°ν•˜κ³  λ‚΄κ°€ λ†“μΉ˜κΈ° μ‰¬μš΄ 뢀뢄듀도 λ°”λ‘œ λ‹€μ‹œ 점검할 수 μžˆκΈ°μ— 곡뢀에 도움이 λœλ‹€.

πŸ›‘ μ–΄λ €μ› κ±°λ‚˜ μ•„μ‰¬μ› λ˜ 점

πŸ›‘ λ©”λͺ¨λ¦¬ κ΄€λ ¨ 뢀뢄은 이전에 곡뢀λ₯Ό ν•œ 덕을 보긴해도 아직은 μ–΄λ ΅λ‹€. κ±°κΈ°λ‹€κ°€ 아직은 λ‚΄κ°€ λͺ¨λ₯΄λŠ” κ°œλ…(바인딩) 같은 것듀이 μžˆμ–΄μ„œ 쑰금 버겁닀.

πŸ›‘ 배운적 μ—†λŠ” 뢀뢄듀이 μ‹œμž‘λ˜κΈ° μ‹œμž‘ν•΄μ„œ μ΄ν•΄ν•˜λŠ”λ° λ§Žμ€ 어렀움을 κ²ͺκ³  μžˆλ‹€. μ•žμœΌλ‘œλŠ” 처음 λ°°μš°λŠ” 것듀 뿐이기에 μ—¬λŸ¬ 번 λ³΄λŠ” κ²½μš°κ°€ λ§Žμ•„μ„œ νˆ¬μžν•˜λŠ” μ‹œκ°„μ— λΉ„ν•΄ 진도가 λ”λ””κ²Œ λ‚˜κ°ˆ 것 κ°™λ‹€.

βœ… μž˜ν•˜κ±°λ‚˜ κ°œμ„ ν•œμ 

βœ… 예제λ₯Ό 3번 ν‘ΈλŠ” 방식을 ν•˜κΈ° μ‹œμž‘ν•œκ²Œ 쒋은 것 κ°™λ‹€. ν™•μ‹€νžˆ κ°œλ…μ  뢀뢄에 크게 도움이 λ˜λŠ” 것 κ°™λ‹€. λ‚΄κ°€ 처음 μƒκ°ν•˜λŠ” λ°©μ‹μ΄λž‘ μ‹€μ œ λ°©μ‹μ˜ 차이λ₯Ό ν™•μ‹€νžˆ μ•Œκ²Œλ˜μ–΄ μ–΄λ¦Όμ§μž‘ μ•Œκ³  λ„˜μ–΄κ°€μ§€ μ•Šκ²Œ λ˜μ—ˆλ‹€.

βœ… κ°œλ…μ΄λ‚˜ μš©μ–΄ 뢀뢄을 ν™•μ‹€ν•˜κ²Œ 곡뢀해왔기에 λͺ¨λ₯΄λŠ” 뢀뢄을 μ„€λͺ…을 λ“£κ±°λ‚˜ ꡬ글링을 톡해 정보λ₯Ό 찾을 λ•Œ 어렀움을 κ²ͺλŠ” λΉˆλ„κ°€ 점점 쀄고 μžˆλ‹€. μ•„λŠ” 것이 λ§Žμ•„μ§ˆ 수둝 λͺ¨λ₯΄λŠ” 것을 배울 λ•Œ μ‰½κ²Œ 배울 수 μžˆμ„ 것 κ°™λ‹€.

πŸ™ƒ λŠλ‚€μ 

πŸ‘Ώ 처음 λ“£λŠ” 뢀뢄듀이 μŸμ•„μ Έ λ‚˜μ˜€κΈ°μ— μ•žμœΌλ‘œ 걱정이 λ§Žμ΄λœλ‹€. 첫 ν”„λ‘œκ·Έλž˜λ° 곡뢀λ₯Ό ν–ˆλ˜ λ•Œ μƒκ°ν–ˆλ˜ 외계어λ₯Ό λ“£λŠ” κΈ°λΆ„μ΄λΌλŠ” 것을 μ˜€λžœλ§Œμ— λŠκ»΄λ΄€λ‹€. λͺ¨λ₯΄λŠ” μš©μ–΄λ‚˜ κ°œλ…μ΄ νŠ€μ–΄λ‚˜μ˜€λ©΄ λ‹Ήν™©μŠ€λŸ½κ³  μ™œ μ΄λ ‡κ²Œ λ˜λŠ” 지 μ—¬λŸ¬λ²ˆ κ°•μ˜λ₯Ό λŒλ €λ³΄κ±°λ‚˜ κ΅¬κΈ€λ§μœΌλ‘œ μ°ΎλŠ” μ‹œκ°„μ΄ 늘고 μžˆλ‹€.
πŸ‘ΏπŸ‘Ώ μ΄λ ‡κ²Œ 진도가 천천히 λ‚˜κ°€κΈ° μ‹œμž‘ν•˜λ‹ˆκΉŒ λ­”κ°€ κ²Œμ„λŸ¬ 지기 μ‹œμž‘ν–ˆλ‹€. κ³΅λΆ€ν•˜λŠ” 보람이 μ•½κ°„μ”© μ€„κ³ μžˆλ‹€. 생각이 λ‚˜μ•½ν•΄μ§€μ§€ μ•ŠκΈ° μœ„ν•΄ λ…Έλ ₯ν•΄μ•Όν•œλ‹€.

πŸ˜ƒ κ·Έλž˜λ„ "배운만큼 보인닀" λΌλŠ” 말이 μžˆλ“―μ΄ λ‚΄κ°€ μ•„λŠ” 것이 λ§Žμ•„μ§€λ‹ˆ ꡬ글링을 ν•˜λŠ” 뢀뢄에 μžˆμ–΄μ„œ ν™•μ‹€ν•˜κ²Œ μ΄ν•΄ν•˜λŠ” 뢀뢄이 λŠ˜μ—ˆλ‹€. μ΄μ „μ—λŠ” λ‚΄κ°€ λͺ¨λ₯΄λŠ” 뢀뢄을 찾아도 νŽ˜μ΄μ§€μ˜ μ „μ²΄μ˜ μ „λΆ€λ₯Ό ν•œλ²ˆμ— 이해 λͺ»ν•˜κ³  λ‹€μ‹œ 이전에 뢀뢄을 찾아보고 μ΄λ ‡κ²Œ μ‹œκ°„μ„ 많이 λ“€μ˜€λŠ”λ° 이런 λΆ€λΆ„μ˜ μ‹œκ°„μ΄ μ€„μ–΄μ„œ κ³΅λΆ€ν•˜λŠ”λ° 큰 도움이 λœλ‹€.

πŸ€” λ”°λ‘œ μ½”λ”©λ¬Έμ œλ₯Ό 풀어보고 싢은데 쑰금 νž˜λ“€λ‹€. 각 νŒŒνŠΈμ— λ§žλŠ” μ½”λ”©λ¬Έμ œλ₯Ό μ°ΎλŠ” 것도 μ‹œκ°„μ΄ μ’€ 걸리고 ν•œ 문제λ₯Ό ν’€λ©΄ λ‹€μŒ 문제λ₯Ό μ—°λ‹¬μ•„μ„œ ν‘ΈλŠ” 게 효율이 쒋은 것 같기에 막상 손이 가지 μ•ŠλŠ”λ‹€. μ•„λ§ˆ μžλ°”μ˜ μ „λ°˜μ μΈ 뢀뢄을 ν•œλ²ˆ κ³΅λΆ€ν•œ 뒀에 μ‹œμž‘ν•΄μ•Όν•  것 κ°™λ‹€.

profile
μ½”λ”© μ‹œμž‘

0개의 λŒ“κΈ€