2021-03-03(Wed)

ν•­λͺ©

λ‚΄μš©

ν•™μŠ΅ λ‚ μ§œ

2021-03-03(수)

ν•™μŠ΅ μ‹œκ°„

11:00~24:00

ν•™μŠ΅ λ²”μœ„ 및 주제

ν…ŒμŠ€νŠΈ, λ¦¬νŒ©ν† λ§

ν•™μŠ΅ λͺ©ν‘œ

Tournament play λͺ¨λ“ˆ

λ™λ£Œ ν•™μŠ΅ 방법

eunhkimλ‹˜κ³Ό νŽ˜μ–΄μ½”λ”©ν•¨

상세 ν•™μŠ΅ λ‚΄μš©

λ£¨λΉ„μ—μ„œ λͺ¨λ“ˆ μ‚¬μš©

λ§Œμ•½ Aκ°€ B 상속을 받은 μƒνƒœμ—μ„œ B ν΄λž˜μŠ€μ—μ„œ μΈν΄λ£¨λ“œλœ λͺ¨λ“ˆ Cκ°€ μžˆλ‹€λ©΄, μ•„λž˜ μˆœμ„œλŒ€λ‘œ λ©”μ„œλ“œ 탐색이 이뀄진닀.

A 클래슀 -> B 클래슀 -> C μΈν΄λ£¨λ“œλœ λͺ¨λ“ˆ -> D 클래슀 -> ... -> Object

그럼 μ—¬λŸ¬ λͺ¨λ“ˆμ΄ μΈν΄λ£¨λ“œλœλ‹€λ©΄ λ©”μ„œλ“œ 탐색은 μ–΄λ–€ μˆœμ„œλŒ€λ‘œ μ΄λ€„μ§ˆκΉŒ? 정닡은 'κ°€μž₯ λ§ˆμ§€λ§‰μ— μΈν΄λ£¨λ“œν•œ λͺ¨λ“ˆμ„ κ°€μž₯ λ¨Όμ € νƒμƒ‰ν•œλ‹€' 이닀. 마치 μƒμ†ν•œ 것과 λΉ„μŠ·ν•œ νš¨κ³Όκ°€ 생긴닀!

λͺ¨λ“ˆμ„ μΈν΄λ£¨λ“œν•œ 객체가 νŠΉμˆ˜ν•œ 행동을 μΆ”κ°€ν•  수 있게 ν•˜λ €λ©΄ ν…œν”Œλ¦Ώ λ©”μ„œλ“œ νŒ¨ν„΄μ„ μ΄μš©ν•΄μ•Ό ν•œλ‹€. 그리고 ν›… λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ λͺ¨λ“ˆμ„ μΈν΄λ£¨λ“œν•œ 객체가 superλ₯Ό μ „μ†‘ν•˜μ§€ μ•Šλ„λ‘ ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

상속 적용이 ν•„μš”ν•œ μ•ˆν‹°νŒ¨ν„΄

μž‘μ„±ν•˜λŠ” μ½”λ“œμ— 상속을 μ μš©ν•˜λ©΄ 쒋을 것 κ°™λ‹€κ³  λ§ν•΄μ£ΌλŠ” 두 개의 μ•ˆν‹°νŒ¨ν„΄μ΄ μžˆλ‹€.

  1. typeμ΄λ‚˜ category와 같은 이름을 가진 λ²Όμˆ˜κ°€ 있고, 이 λ³€μˆ˜λ₯Ό 가지고 self에 μ–΄λ–€ λ©”μ‹œμ§€λ₯Ό 전솑할지 κ²°μ •ν•˜λŠ” 경우. 이 경우 μƒˆλ‘œμš΄ νƒ€μž…μ΄ 좔가될 λ•Œλ§ˆλ‹€ μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.

  2. 객체의 클래슀λ₯Ό ν™•μΈν•˜κ³  μ–΄λ–€ λ©”μ‹œμ§€λ₯Ό 전솑할지 νŒλ‹¨ν•˜κ³  μžˆλ‹€λ©΄ 였리 νƒ€μž…μ„ λ†“μΉ˜κ³  μžˆλ‹€λŠ” 것이닀.

μƒμ†μ˜ 이점

  • ν™•μž₯에 μ—΄λ €μžˆκ³ , μˆ˜μ •μ—λŠ” λ‹«ν˜€μžˆλ‹€.

  • μ œλŒ€λ‘œ κ΅¬μ‘°ν™”λ˜μ—ˆλ‹€λ©΄ μ½”λ“œμ˜ μž‘μ€ ν•œ λΆ€λΆ„λ§Œ μˆ˜μ •ν•΄λ„ ν–‰λ™μ˜ λ³€ν™”λ₯Ό 크게 μ΄λŒμ–΄ λ‚Ό 수 μžˆμœΌλ―€λ‘œ μ μ ˆν•˜λ‹€.

μƒμ†μ˜ λΉ„μš©

  • 상속이 μ–΄μšΈλ¦¬μ§€ μ•ŠλŠ” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 상속을 μ‚¬μš©ν•  수 μžˆλ‹€. μ΄λŠ” μƒˆλ‘œμš΄ 행동을 μΆ”κ°€ν•΄μ•Όν•  λ•Œ 어렀움을 κ²ͺ게될 수 μžˆλ‹€.

  • 일단 μƒμ†λœ μ½”λ“œλŠ” μ˜μ‘΄μ„±μ΄ κ°•μ œλœλ‹€.

이런 이점과 λΉ„μš©μ„ κ³ λ €ν•΄μ„œ 상속을 μ„ νƒν•˜μž.

μ˜¬λ°”λ₯Έ 관계 μ„ νƒν•˜κΈ°

  • 무엇이닀(is-a) κ΄€κ³„μ—μ„œ μƒμ†μ‚¬μš©ν•˜κΈ°

  • λ¬΄μ—‡μ²˜λŸΌ ν–‰λ™ν•˜λŠ”(behaves-like-a) κ΄€κ³„μ—λŠ” 였리 νƒ€μž…μ„ μ‚¬μš©ν•˜λΌ.

    • 역할을 μˆ˜ν–‰ν•˜λŠ” 객체의 관점이 μ•„λ‹ˆλΌ, 역할을 λΆ€μ—¬ν•˜λŠ” 객체의 κ΄€μ μ—μ„œ 생각해보면 쉽닀.

  • 가지고 μžˆλŠ”(has-a) κ΄€κ³„μ—μ„œ μ‘°ν•© μ‚¬μš©ν•˜κΈ°

    9μž₯ λΉ„μš©-효율적인 ν…ŒμŠ€νŠΈ λ””μžμΈν•˜κΈ°

    λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ€ ν…ŒμŠ€νŠΈλ₯Ό λ„ˆλ¬΄ 많이 μ§ λ‹€. ν…ŒμŠ€νŠΈμ—μ„œ 더 λ‚˜μ€ κ°€μΉ˜λ₯Ό μ–»κΈ° μœ„ν•œ 방법 쀑 ν•˜λ‚˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό 덜 μ§œλŠ” 것이닀. 이λ₯Ό μœ„ν•΄μ„œλŠ” λͺ¨λ“  것을 단 ν•œ 번만 ν…ŒμŠ€νŠΈν•˜κ³ , μ œλŒ€λ‘œ 된 κ³³μ—μ„œ ν…ŒμŠ€νŠΈν•΄μ•Ό ν•œλ‹€.

    μ•„λž˜ 원칙을 μ§€μΌœλ³΄μž.

    • ν…ŒμŠ€νŠΈλŠ” 객체의 경계λ₯Ό λ„˜λ‚˜λ“œλŠ” λ©”μ‹œμ§€μ— 집쀑해야 ν•œλ‹€.

      • λ“€μ–΄μ˜€λŠ” λ©”μ‹œμ§€λ“€(incoming messages)λŠ” λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜λŠ” 객체의 퍼블릭 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ·œμ •ν•œλ‹€.

      • λ°–μœΌλ‘œ λ‚˜κ°€λŠ” λ©”μ‹œμ§€λ“€(outgoing emssages)λŠ”, κ·Έ 본성상 λ‹€λ₯Έ 객체에 λ“€μ–΄κ°€λŠ” 메세지이닀. 행동을 μš”μ²­ν•˜λŠ” μ»€λ§¨λ“œ λ©”μ‹œμ§€μ™€ 정보λ₯Ό μ „λ‹¬ν•˜λŠ” 쿼리 λ©”μ‹œμ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.

    • λ“€μ–΄μ˜€λŠ” λ©”μ‹œμ§€μ— λŒ€ν•΄μ„œλŠ” λ©”μ‹œμ§€κ°€ λ°˜ν™˜ν•˜λŠ” μƒνƒœλ₯Ό ν…ŒμŠ€νŠΈν•˜μž.

    • λ°–μœΌλ‘œ λ‚˜κ°€λŠ” μ»€λ§¨λ“œ λ©”μ‹œμ§€μ— λŒ€ν•΄μ„œλŠ” 이 메세지가 μ œλŒ€λ‘œ μ „μ†‘λ˜μ—ˆλŠ”μ§€ ν…ŒμŠ€νŠΈν•΄μ•Ό ν•œλ‹€.

      • λ°–μœΌλ‘œ λ‚˜κ°€λŠ” 쿼리 λ©”μ‹œμ§€λŠ” ν…ŒμŠ€νŠΈν•  ν•„μš”κ°€ μ—†λ‹€.

    • ν…ŒμŠ€νŠΈλŠ” μ‹€μ œ μ½”λ“œμ™€ λŠμŠ¨ν•˜κ²Œ κ²°ν•©λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.

    • 문제λ₯Ό 슀파이크(spike)ν•˜λ©΄ μ•ˆ λœλ‹€λŠ” 것은 μ•„λ‹ˆλ‹€. μ‹€ν—˜μ„ 톡해 해결책이 λͺ…ν™•νžˆ λ– μ˜€λ₯΄μ§€ μ•ŠλŠ” 문제λ₯Ό 이리 저리 νƒκ΅¬ν•΄λ³΄λŠ” 것이닀. 문제의 핡심이 보이고 λ””μžμΈμ΄ λ– μ˜€λ₯΄λ©΄ ν…ŒμŠ€νŠΈλ₯Ό λ¨Όμ € μž‘μ„±ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ˜λŒμ•„κ°„λ‹€.

      • μŠ€νŒŒμ΄ν¬λž€ 일단 ν…ŒμŠ€νŠΈ 없이 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ 이것저것 μ‹€ν—˜ν•΄ λ³΄λŠ” 것이닀.

    • ν…ŒμŠ€νŠΈμ˜ μ˜μ‘΄μ„±μ„ κ³ λ¦½μ‹œν‚€κΈ° μœ„ν•΄ μŠ€ν…(stub)μ΄λ‚˜ λͺ©(mock)을 λ§Œλ“€ 수 μžˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ 세계와 λ‹€λ₯Έ κ°€μ§œ ν™˜κ²½μ„ λ§Œλ“€μ–΄μ„œ μ‹€νŒ¨ν•΄μ•Όν•  λ•Œ μ‹€νŒ¨ν•˜μ§€ μ•Šμ„ 수 μžˆμœΌλ‹ˆ μ‘°μ‹¬ν•˜μž.

      • μŠ€ν…: μ§„μ§œ 객체, λ©”μ„œλ“œλŠ” μ•„λ‹Œ, μ˜ˆμƒλœ 값을 λ°˜ν™˜ν•˜κ²Œλ” λ§Œλ“  μž„μ‹œ 객체

      • λͺ©: 행동에 λŒ€ν•œ ν…ŒμŠ€νŠΈμ΄κ³ , μƒνƒœμ— λŒ€ν•œ ν…ŒμŠ€νŠΈμ™€λŠ” λ°˜λŒ€λœλ‹€. 적극적으둜 μ˜μ‘΄μ„± μ£Όμž… κΈ°μˆ μ„ μ‚¬μš©ν–ˆλ‹€λ©΄, λͺ© 객체λ₯Ό λ„£μ–΄μ„œ λ©”μ‹œμ§€κ°€ 잘 μ „μ†‘λ˜λŠ”μ§€ ν™•μΈν•΄λ³΄μž.

    • ν…ŒμŠ€νŠΈλŠ” 프라이빗 λ©”μ„œλ“œλ₯Ό μˆ¨κ²¨μ•Ό ν•œλ‹€.

    • κΌ­ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ ν…ŒμŠ€νŠΈλ§Œ μž‘μ„±ν•˜μž.

    잘λͺ» λ””μžμΈλ˜κ³  ν…ŒμŠ€νŠΈλ„ μ—†λŠ” μ½”λ“œλŠ” κ·Έμ € ν…ŒμŠ€νŠΈν•  수 μ—†λŠ” λ ˆκ±°μ‹œ μ½”λ“œ(legacy code)에 λΆˆκ³Όν•˜λ‹€.

    상속 받은 클래슀λ₯Ό ν…ŒμŠ€νŠΈν•  땐 μƒμ†ν•˜λŠ” 클래슀의 ν…ŒμŠ€νŠΈλ₯Ό 곡톡 λͺ¨λ“ˆλ‘œ λ§Œλ“€μ–΄μ„œ μΈν΄λ£¨λ“œν•΄μ„œ ν…ŒμŠ€νŠΈν•΄λ³΄μž.

ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평

Tournament operation λͺ¨λ“ˆμ€ PR μ™„λ£Œν–ˆκ³ , Tournament play λͺ¨λ“ˆμ€ Game λͺ¨λ“ˆ μͺ½μ„ ν—€λ“œμž‘κ³  μ§„ν–‰ν•˜μ…¨λ˜ eunhkimλ‹˜μ΄ 거진 μ™„λ£Œν•΄μ£Όμ…¨μ§€λ§Œ, ν…ŒμŠ€νŠΈ κ²°κ³Ό λ°œμƒν•˜λŠ” λ¬Έμ œλ“€μ΄ μžˆμ–΄μ„œ ν•¨κ»˜ ν•΄κ²°ν•˜μ˜€λ‹€. ν† λ„ˆλ¨ΌνŠΈ λͺ¨λ“ˆ μͺ½μ€ 맀 μ‹œκ°„ μ‹€ν–‰λ˜λŠ” job을 톡해 잘 μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•΄λ΄μ•Όν•˜λŠ” 뢀뢄이 μžˆμ–΄μ„œ ν…ŒμŠ€νŠΈκ°€ μ’€ μ–΄λ €μ› λ‹€. λΉ λ₯Έ ν…œν¬λ‘œ λ™μž‘ κ°€λŠ₯ μ—¬λΆ€λ₯Ό 확인할 수 μžˆλ„λ‘ ν…ŒμŠ€νŠΈλ₯Ό λ§Œλ“œλŠ” 것이 μ€‘μš”ν•˜λ‹€.

λ‹€μŒ ν•™μŠ΅ κ³„νš

  • Tournament play λͺ¨λ“ˆ μ™„μ„±

Last updated