= Object-Oriented Design 세미나 = == ì‹¤ì „ ê°ì²´ì§€í–¥ 설계로 배우는 왜? == * '''â€œë‹¨ì¼ ë³€í™”ë¡œ ì¸í•œ ìˆ˜ì • 사í•ì„ ì˜ˆì¸¡ 가능한 범위 ë‚´ì— ì§‘ì¤‘ì‹œì¼œë¼.â€''' * ì´ê²ƒì€ 비단 ê°ì²´ì§€í–¥ì— í•œì •ëœ ì´ì•¼ê¸°ê°€ ì•„ë‹ˆë¼ ì»´í“¨í„°ê³µí•™ ë°œì „ì˜ ì—사를 ì´ëŒì–´ì˜¨ 가장 중대한 목표ì´ìž, 앞으로 ì—¬ëŸ¬ë¶„ì´ ì»´í“¨í„°ê³µí•™ë„로서 ê°–ì¶°ì•¼í• ëª¨ë“ ê³µí•™ì ì§€í˜œë“¤ì˜ ê·¼ë³¸ì´ë¼ëŠ” ê²ƒì„ ìžŠì§€ 마세요. - [변형진] === 후기 === * 오늘 긴 시간ë™ì•ˆ ëª¨ë‘ ìˆ˜ê³ í•˜ì…¨ìŠµë‹ˆë‹¤. 오늘 설명한 ë‚´ìš©ì´ ì•„ì§ ê¹Šì´ ì™€ë‹¿ì§€ 않ë”ë¼ë„ 좋습니다. 프로ì 트 ê°œë°œì— ìžˆì–´ ê·¸ë™ì•ˆ í”히 ì „ê°œí–ˆë˜ ë°©ì‹ê³¼ëŠ” 다른 ì ‘ê·¼ ë°©ì‹ì˜ ê°€ëŠ¥ì„±ì„ í™•ì¸í•˜ëŠ” ê²ƒë§Œìœ¼ë¡œë„ ì¢‹ì€ ê²½í—˜ì´ ë˜ì—ˆê¸¸ ë°”ëžë‹ˆë‹¤. 누누히 강조하지만 한 ë²ˆì— ì´í•´í•˜ì‹œê¸¸ ë°”ë¼ì„œ 진행하는 세미나가 아니ë¼, ì •ë§ ì¤‘ìš”í•œ í•˜ë‚˜ì˜ ì œì–¸ë§Œì´ë¼ë„ 남는다면 ê·¸ê²ƒì„ ì•žìœ¼ë¡œ 몇 번 ë“£ê³ ë˜ ë“£ê³ , ê·¸ë¦¬ê³ ì •ë§ ê·¸ ê°œë…ì´ í•„ìš”í•œ ìˆœê°„ì´ ëì„ ë•Œ í° íž˜ì´ ë˜ë¦¬ë¼ 믿습니다. ì˜ˆì œëŠ” ì¢‹ì€ ì˜ˆì œê±°ë¦¬ì— ëŒ€í•œ ì˜ê²¬ì´ 없어 SE 프로ì 트 ì£¼ì œë¥¼ 차용했는ë°, 설계만으로 ë¬¸ì œê°€ ê¹”ë”하게 í•´ê²°ë˜ëŠ” ê³¼ì œê°€ ì•„ë‹ˆë¼ ì•Œê³ ë¦¬ì¦˜ìœ¼ë¡œ í•´ê²°í•´ì•¼í• ë¶€ë¶„ì´ ê½¤ 있는 ê³¼ì œë‹¤ë³´ë‹ˆ, ì‹¤ìŠµì´ ì„¤ê³„ë¶€ë¶„ì— ì§‘ì¤‘í•˜ê¸° íž˜ë“¤ì—ˆë˜ ì ì€ ë‹¤ì†Œ 아쉽네요. ì¢‹ì€ í›„ê¸°ë¥¼ ìž‘ì„±í•´ì£¼ì‹ ë¶„ 한 ë¶„ì„ ì„ ì •í•´ì„œ 번ì—서 [http://book.naver.com/bookdb/book_detail.nhn?bid=2500990 Holub on Patterns]ì„ ì„ ë¬¼ë¡œ 드립니다. 후기는 ê°ìƒë³´ë‹¤ëŠ” ë˜ìƒˆê¹€ì´ ë˜ì—ˆìœ¼ë©´ ì¢‹ê² ìŠµë‹ˆë‹¤. :) - [변형진] * í•™êµ í™˜ê²½ë„ ì•ˆ ë°›ì³ì£¼ê³ , ì œ ë¨¸ë¦¬ë„ ì•ˆ ë°›ì³ì¤¬ì–´ìš”. diff/merge 기능 설계를 ë°”ë¼ë³´ë©´ì„œ ê°ì²´ì§€í–¥ 설계를 ë´¤ëŠ”ë° ì–´ë ¤ìš°ë©´ì„œë„ íš¨ìœ¨ì ì¸ê±° ê°™ë”ë¼êµ¬ìš”. ê·¸ë¦¬ê³ í˜•ì§„ì´ í˜•ì´ ì„¸ë‡Œí•˜ì‹ ë‚´ìš© "단ì¼ë³€í™”ê°€ ìƒê²¨ì„œ ìˆ˜ì •í• ë•Œ 쉽게 ìˆ˜ì •í•˜ë ¤ë©´ 구조가 중요하다" ì´ê±° ê¼ ì™¸ìš¸ê²Œìš” - [윤종하] * ì›ëž˜ ì •ë§ ì² ì €í•˜ê²Œ ì ˆì°¨ì§€í–¥ì 으로 í”„ë¡œê·¸ëž˜ë° í•˜ë˜ ì‚¬ëžŒì´ë¼... 오늘 ë‚´ìš©ì´ ì¢€ ì–´ë ¤ì› ìŠµë‹ˆë‹¤;; 특히 그냥 들ì„때는 ì´í•´í•˜ë©´ì„œ 넘어가ë„, ì‹¤ì œ 프로그래ë°ì„ í•˜ë ¤ë‹ˆê¹Œ 막막하ë”ë¼êµ¬ìš”. 마지막 실습때 ì§ˆë¬¸ë„ í–ˆì—ˆëŠ”ë°, í˜•ì€ if문 안ì—서 Comparer ê°ì²´ë¥¼ ì„ ì–¸í•´ì„œ, equals 함수를 사용하ë¼ê³ 하셨는ë°, ì „ if문 안ì—서 ê°ì²´ë¥¼ ìƒì„±í• ìƒê°ì¡°ì°¨ 하지 ëª»í–ˆì—ˆê±°ë“ ìš”. ê·¸ì € 주어진 ì •ë³´ë§Œ ê°€ì§€ê³ , ë°˜ë³µë¬¸ì„ ëŒë¦´ ìƒê°ë¿ì´ì—ˆì£ ; ê·¸ëŸ°ë° ì§‘ìœ¼ë¡œ ëŒì•„오면서 ìƒê°í•´ë´¤ëŠ”ë°, ì œê°€ ì§ ëŒ€ë¡œ 하면 '''â€œë‹¨ì¼ ë³€í™”ë¡œ ì¸í•œ ìˆ˜ì • 사í•ì„ ì˜ˆì¸¡ 가능한 범위 ë‚´ì— ì§‘ì¤‘ì‹œì¼œë¼.â€''' ë¼ëŠ” ë§ê³¼ëŠ” 거리가 한 ì°¸ 멀어지ë”ë¼êµ¬ìš”;; ì˜ˆì¸¡ì€ ê°€ëŠ¥í•œë° ì˜ˆì¸¡ë²”ìœ„ê°€ 프로그램 소스 코드 ì „~ë¶€ ë¼ëŠ”ê±°ì£ . ë•ë¶„ì— "ì•„, ì •ë§ ì´ëŸ°ê±° ë•Œë¬¸ì— OOP를 하ë¼ëŠ” 거구나" ë¼ëŠ”ê±¸ 알게 ë˜ì—ˆìŠµë‹ˆë‹¤ ã…‹ã…‹ 오늘 í–ˆë˜ ë‚´ìš© 중 ì •ë§ íŠ¹ížˆ ê¸°ì–µì— ë‚¨ëŠ”ê±´ '''"ìƒì†ì„ 하기 위한 프로그래ë°ì„ 하지 ë§ì•„ë¼" & "íŒ¨í„´ì„ ì 용시키기 위한 프로그래ë°ì„ 하지 마ë¼"''' 였습니다. ì œê°€ ë˜ ë°°ìš°ê¸°ë§Œ 하면 ê¼ ì¨ë¨¹ì„ë ¤ëŠ” ìŠµê´€ì´ ìžˆëŠ”ì§€ë¼, ì •ë§ ë¬¸ë²•ê°™ì€ê±¸ ë°°ìš°ë©´ ê¼ ì¨ë¨¹ìœ¼ë ¤ê³ í•˜ê±°ë“ ìš”. ê·¸ëŸ°ë° ì´ ë§ì„ ë“£ê³ , ë¬¸ë²•ì˜ ë‚¨ìš©ì„ ìžì œí•´ì•¼ê² 다는 ìƒê°ì„ 했습니다; 마치 ì˜ì–´ 배울때 '''수ë™íƒœ 문장 ë§Žì´ ë§Œë“¤ì§€ 마ë¼''' ë¼ëŠ” ëŠë‚Œì´ì—ˆì–´ìš” ã…‹ã…‹ ì •ë§ ì¤‘ê°„ì— ì–´ë ¤ì›Œì„œ LineDrawable ì–˜ê¸°í• ë• ìž ê¹ ì¡¸ì•˜ì§€ë§Œ 너무 ìœ ìµí•œ 세미나 였습니다~ - [박성현] * ì¼ë‹¨ ê°œì¸ì ìœ¼ë¡ ëŠ¦ì–´ì„œ ì•žë¶€ë¶„ì„ ëª»ë“¤ì€ê²Œ ì•„ì‰½ê³ , SE팀플과 ê´€ë ¨ëœ ìˆ˜í™•ì´ ìžˆì–´ì„œ 여러모로 ìœ ìš©í•œ 세미나였습니다ㅋ ì¼ë‹¨ 들으면서 간단히 ì ì—ˆë˜ê±¸ë¡ *'''ì¶”ìƒí™”는 단ì¼ë³€í™”ì— ëŒ€í•´ ìˆ˜ì •í•´ì•¼ í• ì‚¬í•ì„ ì˜ˆì¸¡ê°€ëŠ¥ì¼€ í• ë ¤ê³ í•œë‹¤ëŠ”ì -> 변경 ê°€ëŠ¥ì„±ì´ ìžˆëŠ”ê±´ 다 ì¶”ìƒí™”하ìž?''' *'''íŒ¨í„´ì„ í†µí•´ 커뮤니케ì´ì…˜ì´ 좋아지는거지, êµ¬í˜„ì´ ì¢‹ì•„ì§€ëŠ”ê±´ 아니다'''' *'''잘 설계하다보니 몇가지 íŒ¨í„´ì´ ë³´ì´ëŠ” 것ì´ì§€, íŒ¨í„´ì„ ì“´ë‹¤ê³ ì„¤ê³„ê°€ 잘ë˜ëŠ” ê²ƒì€ ì•„ë‹ˆë‹¤''' ì •ë„ê°€ 요지였ë˜ë“¯ 합니다. 확실히 ì œ ê²½í—˜ì— ë¹„ì¶”ì–´ë³´ë©´ í•™ë¶€ê³¼ì •ì—서 OOPì— ëŒ€í•œ ê°œë…ì„ ë°°ìš¸ë•ŒëŠ” ìƒì†, 다형성 ë“±ì„ ë°°ìš¸ë•Œ ê³¼ì œëŠ” ìƒì†ì„ ì´ìš©í•œ 무언가, 오버ë¼ì´ë”©, ì˜¤ë²„ë¡œë”©ì„ í•˜ë„ë¡ ìš”êµ¬í–ˆìŠµë‹ˆë‹¤. 심지어 ì˜ë¯¸ì—†ëŠ” í”„ë Œë“œë„ ì“°ë„ë¡í–ˆì—ˆì£ ã…Ž ë¬¼ë¡ ê°€ë¥´ì¹˜ëŠ” êµìˆ˜ë‹˜ì˜ 입장ì—ì„ ì§ì ‘ ì¨ë³´ê²Œí•˜ë ¤ë©´ ê·¸ ë°©ë²•ì´ ê°€ìž¥ 확실합니다. ê·¸ë ‡ì§€ë§Œ ê·¸ë ‡ê²Œ ë°°ìš°ê³ ë‚˜ë©´ ì™ ì§€ ì„¤ê³„ì— ëŒ€í•œ 별 ìƒê°ì—†ì´ ê·¸ë ‡ê²Œ 하게ë˜ë”êµ°ìš”. ì €ë˜í•œ 미숙하지만 후배들ì—게 OOP를 왜 ì“°ê³ , ì–´ë–¤ ì ì´ ì¢‹ì€ê°€ë¥¼ ì•Œë ¤ì£¼ë‹¤ë³´ë‹ˆ 다시 한번 기본개ë…ì— ëŒ€í•´ ìƒê°í•˜ê²Œë˜ê³ 그러면서 ì œëŒ€ë¡œëœ OOP는 ë”ê°€ 싶었습니다. (ì ì–´ë„ ì œ ìƒê°ì—”)'''단지 classì“°ê³ ìƒì†í•œë‹¤ê³ OOPê°€ 아닙니다'''. OOPì˜ ìž¥ì ì„ ì´ìš©í•´ì•¼ ì§„ì •í•œ OOP입니다. ì´ ê¸€ì„ ë³´ëŠ” ë¶„ì—게 í•˜ê³ ì‹¶ì€ ë§ì€ ìœ„ì˜ ìš”ì§€ì™€ 함께 '''한 ëª…ì œê°€ ì°¸ì´ë¼ê³ ê·¸ ëª…ì œì˜ ì—ì´ ë°˜ë“œì‹œ ì°¸ì€ ì•„ë‹ˆë¼ëŠ”ì '''ê³¼ '''ì•„ ë‹¤ë¥´ê³ ì–´ 다르다'''ë¼ëŠ” ë§ë„ 함께 í•´ì£¼ê³ ì‹¶ë„¤ìš”ã…Ž ê·¸ë¦¬ê³ ì € ë˜í•œ 오늘 ì‹¤ì œ ë””ìžì¸ì—서 Drawable로 GUI를 로ì§ì—서 ì™„ì „ížˆ 분리시킨 ê²ƒì„ ë³´ê³ ë‹¤ì‹œ 한번 ì¶”ìƒí™”ì— ëŒ€í•œ 공부가 ë˜ì—ˆìŠµë‹ˆë‹¤. 앞으로 ì¶”ìƒí™”하는 ë²•ì„ ì¢€ ë” ìµí˜€ì•¼ê² ì–´ìš”. - [ê¹€í™ê¸°]