SlideShare a Scribd company logo
1 of 32
Designed By Jason “Merak” Kim
      Merak.net@hotmail.com
Designed By Jason “Merak” Kim
                      Merak.net@hotmail.com




• 바퀴벌레 이야기
 여기 비명을 지르는 한 여자가 있습니다. (그냥 여자라고 해주세요…)




                                                왜 이러는 걸까요?
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




                              서랍장에서 바퀴벌레를 발견한 것이지요

                              그래서 한 칸 전체를 드러내어
                              잡는다고 ‘난리 Blues’를 쳤드랬죠,
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




                                    찝찝함에 몸서리 치던 여자는
                                    어쩔 수 없이 벌레가 있던 칸 전체를
                                    아주 죄다 빨아버리기로 합니다.
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




             그런데 만약,
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




                                 이렇게 정리가 돼있던 그녀의 서랍장이
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




             애초에 이런 식으로 칸막이가 쳐져 구분이 돼있었다면,
             그렇게 죄다 빨 필요가 있었을까요?

             아니, 애초에 그렇게 벌레를 잡는다고 ‘죄다 헤집어 놓을’ 필요가
             없었을 지도 모르죠.


             요컨데, 칸막이가 쳐져 있었다면 벌레를 찾기도, 잡기도 수월했을 겁니다.
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 바퀴벌레 이야기




       그렇지 않아요?
Designed By Jason “Merak” Kim
      Merak.net@hotmail.com




 디자이너의 코드 읽기
                                -객체지향 이야기 上-
Designed By Jason “Merak” Kim
      Merak.net@hotmail.com




“왜 객체지향일까?”
           ‘절대적으로 (절차지향 보다) 객체지향이 낫다!’
           라고 하고 싶지는 않지만,

           결론부터 말하자면
           객체지향이 더 인간의 사고 방식에 어울린다.

 그리고 그 ‘어울림’이 일을 좀 더 쉽게 만들어 준다.

 우리가 생각하는 방식 그대로 어떠한 문제를 해결할 수 있다면,
 그게 분명 더 효율이 좋을 것이다.

 그리고 그 효율은, 일의 규모가 크면 클수록 빛을 발한다.
Designed By Jason “Merak” Kim
      Merak.net@hotmail.com




         사고방식의 차이로 인해 빚어지는 대표적인 ‘비효율’

         그만큼 사고방식의 같고-다름은 효율에 있어서 중요하다

         그럼, 지금부터 객체지향이 우리와 뭐가 같다는 건지 살펴보자.
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  우리는 현상을 어떻게 인지할까?

  일단, 전체(인지대상의 가장 큰 범위)가 주는 의미를 파악한다.




                                               좋나?
                                               좋군!


       <<아이들 사진>>
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  우리는 현상을 어떻게 인지할까?

  그리고는 조금씩 현상을 쪼개기 시작한다.
  무엇을 위해? 어떻게 이 ‘전체’가 그런 의미를 가졌는지 분석하기 위해,
  혹은 문제점을 파악하고 해결하기 위해.




                                                   아이
                                               옷        풀
                                                   구도

                                               바닥 자동차



       <<아이들 사진>>
Designed By Jason “Merak” Kim
                      Merak.net@hotmail.com




• 왜 객체지향인가?
  우리는 현상을 어떻게 인지할까?

  우리. 쪼갠다. 계속해서. 우리에게 필요한 ‘무언가’(단위)에 접근할 때 까지!




                                                                   머
                                                               몸   리


               아이                                              다
                                                               리
                                                                   남
                                                                   다
                                                                   른
                                                                       좋은
                                                                       표정

                                                                   자
                                                                   세




                                       “아, 아이들의(아이들이 가지고 있는)
                                       ‘남다른 자세’와 ‘좋은 표정’이
                                       나로 하여금
                                       미소를 띠게 만들었구나!”

                                       현상 파악이 끝났다.
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  현상 분석 끝에 무언가를 찾아냈다면,
  우리는 이것을 가지고 재구성을 해볼 수도 있다.




              “아! 아이뿐만 아니라 어른도 ‘남다른 자세’와 ‘좋은 표정’을
              지니니, 웃음을 유발하는구나! 그렇다면, 내 웃음 유발의 포인트는
              ‘남다른 자세’와 ‘좋은 표정’이구나!”
Designed By Jason “Merak” Kim
                      Merak.net@hotmail.com




• 왜 객체지향인가?
  그렇다. 우리가 현상을 인지하고, 파악하고, 분석할 때
  그 모든 사고의 (의미있는) 단위(entity)는 객체다.

  물리적인 것에서부터, 추상적인 관념까지 그 모든 것이 말이다.




                                                          머
         아이
                                                      몸   리
    옷         풀
        구도                                      좋나?   다   남
                                                              좋은
                                                              표정
                                                좋군!   리   다
    바닥    자동차                                             른
                                                          자
                                                          세
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  그런데 과연 왜?
  객체지향으로 패러다임으로 바뀌었을까?
  객체지향 이전의 패러다임(절차지향 / 구조적 방법)에
  어떤 문제가 발생한 걸까?




<<계산기 프로그램>>              <<회계 프로그램>>            <<3Ds Max>>



           과거 프로그램의 규모                         오늘날 프로그램의 규모
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  어떤 문제? 어떤 프라블럼?




                                               함수가 300개가 넘는다면?
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 왜 객체지향인가?
  어떤 문제? 어떤 프라블럼?

  들어는 보셨나~ 이름하야 스파게티 코드!




                                                맛있다? X

                                               미쳐버리겠다 O
Designed By Jason “Merak” Kim
                      Merak.net@hotmail.com




• 왜 객체지향인가?
  어떤 문제? 어떤 프라블럼?

  단적인 예의 도식화.
  뭐가 보기 쉬워요?




       <<함수 기반의 절차지향 패러다임>>                     <<객체 기반의 객체지향 패러다임>>
       알고리즘 중심 / 잦은 변수의 전역화                     객체 중심 / 변수와 기능이 함께(캡슐화)



                    절차지향, 객체 지향 간의
                    장/단점 비교는 다음에 세세히 살펴볼 기회가 있을 겁니다!
                    일단은 그냥 개념만 잡고, 흐름만 느끼세요.
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 조금 다른 얘기를 해볼까요?
  자동차 공장 가보셨어요?

  자동차 만들 때, 어떤 부품들이 들어가나요?




              이거 왜 이렇게 만들까요?
              어떻게 분류가 돼있는 거죠? 기준이 뭘까요?
              요새 기술력 정도면 부품을 몇 개씩 통합해서 만들 수도 있을텐데..
              뭐하려고 머리 아프게 요로코롬 구분해서 만들까요?
              자동차 엔지니어들이 바보인 걸까요?
Designed By Jason “Merak” Kim
                             Merak.net@hotmail.com




• 조금 다른 얘기를 해볼까요?
  3D Graphics Artist

  3Ds Max로 작업을 합니다.




        모델링할 때, 나름의 단위로 분리해서 작업하시지 않나요?
        통짜 메쉬로 작업하다가 실수했는데, Undo도 안되고! 백업파일도 없어서 멘붕! 하신 적 없나요?
        어떤 바보가 그렇게 작업하냐고 생각하고 계시죠?
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 조금 다른 얘기를 해볼까요?
  디자이너분들

  기획서를 썼습니다.



                                               사장님한테 검수를 받았는데
                                               그냥 수정해오래요…
                                               근데 이게 700페이지가 넘어요…

                                               700페이지를 전부다 검토 수정 해야해요…




                                                     A          B        C
   그런데 만약, 기준을 세워 몇 장씩 나눠서
   분류를 했다면?

   사장님 曰 “B, D 부분에 수정이 필요할 것 같아”
                                                     D          E        F
   그러면 우리는 B와 D만 수정을 할 수 있겠죠.

   항목은 멋으로 나누는 게 아니잖아요!
Designed By Jason “Merak” Kim
                    Merak.net@hotmail.com




• 조금 다른 얘기를 해볼까요?
  디자이너분들

  파워포인트로 애니메이션 노가다 해보신분?




              한 슬라이드에

              애니메이션이 무려 254개

              이거 애니메이션 관리하다가

              삐끗하면

              도대체 어디서부터 고쳐야 할지…

              멘붕미아가 돼버리는 수가 있다…
Designed By Jason “Merak” Kim
                      Merak.net@hotmail.com




• 슬슬 감이 잡히나요?
  우리는 ‘이걸’ 본능적으로 알고 있다.

  현상을 좀 더 쉽게 파악하고 분석하려면, 체계적(or 계층적)으로 사고해야 한다.

  문제가 크면 클 수록 더더욱.


  시간이 거듭될 수록

  다양한 분야에서

  기존의 카테고리에서 가지를 치고 나와

  좀 더 집중된, 특화된 새 이름으로 등장하는 것들의 이유도 이와 일맥상통.



  대부분의 우리들은
  현상에 대해 한 번에 총체적인 사고를

  능숙하게 할 정도로 사고력이 좋지는 않다.

  고도화된, 다양화된, 광범위한 오늘날의 여러가지 현상과 문제에 있어선 더더욱!
Designed By Jason “Merak” Kim
                  Merak.net@hotmail.com




• 슬슬 감이 잡히나요?




            반응속도는 단면적에 비례

            얼음을 쪼개면 단면적이 늘어나 빨리 녹듯이

            분류를 통해 문제와 사고력(해결력)이 맞닿는 단면적을 늘릴 수 있다
Designed By Jason “Merak” Kim
       Merak.net@hotmail.com




소프트웨어 개발도
마찬가지다
Designed By Jason “Merak” Kim
                        Merak.net@hotmail.com




                                                                      오! 이건 우리가 예전에
                                                                      개발한 솔루션과 비슷해

       이건 내가 잘하는 거네~
       내가 맡지.




                     Com A                                    Com B




                                   Com C                      Com D



                                                  <<정말 큰 프로그램>>



                                                                             이 부분은 우리 거랑 완전
우리 쪽에 이 기능과 관련한
                                                                             비슷하네.
전문가가 있어.
                                                                             소스를 공개해줄게!
Designed By Jason “Merak” Kim
                   Merak.net@hotmail.com




• 정리해보면


          절차지향 패러다임으로 개발을 하다가

          불편함, 한계에 부딪혔다. 왜? 소프트웨어가 너무 커졌기 때문에

          그래서 이걸 현실에서 인간이 사고하는 방식과 유사하게 바꿀 수 있다면
          개발이 수월해질 수 있을 것 같다는 아이디어에 착안하게 됐고

          그 고민의 답으로 객체지향 패러다임이 탄생했다.

          객체를 중심으로 생각하고 개발하면

          여러가지 이유로 절차지향에서는 불가능한

          효율을 발휘할 수 있다.

          그래서 오늘날의 많은 소프트웨어는 (하지만 여전히 절차지향이 강세인 부분도 있다)
          객체지향으로 개발이 되고 있다.
Designed By Jason “Merak” Kim
                     Merak.net@hotmail.com




• 이건 맛보기일 뿐이다.
    사실 객체지향 패러다임의 정신이 단순히 ‘분리 / 분류’ 에만 있는 것은 아니여요.

    이것은 단지 객체지향 패러다임이 주는 효용 중에 한 가지일 뿐.

    처음부터 너무 메커니즘 쪽으로 접근을 하면 힘들 것 같아서

    -객체지향 이야기 上- 편은

    어떤 이유에서 객체지향으로

    패러다임을 전환할 필요가 있었는지

    쉬운 예로 가볍게 환기하는 게 목적이었어유.


• 中/下 편은 약간 딱딱한 내용이 될 수도 있다.
    객체지향 패러다임은 (OOA – OOD – OOP) 우리의 사고체계와 비슷해서 많이 어렵지는 않아요.

    하지만 그렇다고 호락호락하기만 한 상대도 아니지요. :D

    다음 편에는 실제로 코드들을 ‘읽어보며’ 객체지향 패러다임이 어떤 특징들을 가지고 있어서

    객체지향, 객체지향 하는 지 살펴보게 될 건데~ 약간 딱딱한 내용이 될 수도 있지만,

    최대한 즐겁게 해보아요!
Designed By Jason “Merak” Kim
             Merak.net@hotmail.com




아,


     마지막으로 바퀴벌레 이야기를 다시 떠올려 보세요.

     바퀴벌레(Bug) 잡기의 예는

     Debug(버그수정)와 닮아있어요.

     뭐가 닮아 있다는 건지 나름대로 생각해보시고 오시면 좋을 것 같아요 :D
Designed By Jason “Merak” Kim
      Merak.net@hotmail.com




   끄읕~

More Related Content

Recently uploaded

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 

Recently uploaded (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 

Featured

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

디자이너의 코드 읽기 2. 객체지향 이야기(上)

  • 1. Designed By Jason “Merak” Kim Merak.net@hotmail.com
  • 2. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 여기 비명을 지르는 한 여자가 있습니다. (그냥 여자라고 해주세요…) 왜 이러는 걸까요?
  • 3. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 서랍장에서 바퀴벌레를 발견한 것이지요 그래서 한 칸 전체를 드러내어 잡는다고 ‘난리 Blues’를 쳤드랬죠,
  • 4. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 찝찝함에 몸서리 치던 여자는 어쩔 수 없이 벌레가 있던 칸 전체를 아주 죄다 빨아버리기로 합니다.
  • 5. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 그런데 만약,
  • 6. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 이렇게 정리가 돼있던 그녀의 서랍장이
  • 7. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 애초에 이런 식으로 칸막이가 쳐져 구분이 돼있었다면, 그렇게 죄다 빨 필요가 있었을까요? 아니, 애초에 그렇게 벌레를 잡는다고 ‘죄다 헤집어 놓을’ 필요가 없었을 지도 모르죠. 요컨데, 칸막이가 쳐져 있었다면 벌레를 찾기도, 잡기도 수월했을 겁니다.
  • 8. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 바퀴벌레 이야기 그렇지 않아요?
  • 9. Designed By Jason “Merak” Kim Merak.net@hotmail.com 디자이너의 코드 읽기 -객체지향 이야기 上-
  • 10. Designed By Jason “Merak” Kim Merak.net@hotmail.com “왜 객체지향일까?” ‘절대적으로 (절차지향 보다) 객체지향이 낫다!’ 라고 하고 싶지는 않지만, 결론부터 말하자면 객체지향이 더 인간의 사고 방식에 어울린다. 그리고 그 ‘어울림’이 일을 좀 더 쉽게 만들어 준다. 우리가 생각하는 방식 그대로 어떠한 문제를 해결할 수 있다면, 그게 분명 더 효율이 좋을 것이다. 그리고 그 효율은, 일의 규모가 크면 클수록 빛을 발한다.
  • 11. Designed By Jason “Merak” Kim Merak.net@hotmail.com 사고방식의 차이로 인해 빚어지는 대표적인 ‘비효율’ 그만큼 사고방식의 같고-다름은 효율에 있어서 중요하다 그럼, 지금부터 객체지향이 우리와 뭐가 같다는 건지 살펴보자.
  • 12. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 우리는 현상을 어떻게 인지할까? 일단, 전체(인지대상의 가장 큰 범위)가 주는 의미를 파악한다. 좋나? 좋군! <<아이들 사진>>
  • 13. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 우리는 현상을 어떻게 인지할까? 그리고는 조금씩 현상을 쪼개기 시작한다. 무엇을 위해? 어떻게 이 ‘전체’가 그런 의미를 가졌는지 분석하기 위해, 혹은 문제점을 파악하고 해결하기 위해. 아이 옷 풀 구도 바닥 자동차 <<아이들 사진>>
  • 14. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 우리는 현상을 어떻게 인지할까? 우리. 쪼갠다. 계속해서. 우리에게 필요한 ‘무언가’(단위)에 접근할 때 까지! 머 몸 리 아이 다 리 남 다 른 좋은 표정 자 세 “아, 아이들의(아이들이 가지고 있는) ‘남다른 자세’와 ‘좋은 표정’이 나로 하여금 미소를 띠게 만들었구나!” 현상 파악이 끝났다.
  • 15. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 현상 분석 끝에 무언가를 찾아냈다면, 우리는 이것을 가지고 재구성을 해볼 수도 있다. “아! 아이뿐만 아니라 어른도 ‘남다른 자세’와 ‘좋은 표정’을 지니니, 웃음을 유발하는구나! 그렇다면, 내 웃음 유발의 포인트는 ‘남다른 자세’와 ‘좋은 표정’이구나!”
  • 16. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 그렇다. 우리가 현상을 인지하고, 파악하고, 분석할 때 그 모든 사고의 (의미있는) 단위(entity)는 객체다. 물리적인 것에서부터, 추상적인 관념까지 그 모든 것이 말이다. 머 아이 몸 리 옷 풀 구도 좋나? 다 남 좋은 표정 좋군! 리 다 바닥 자동차 른 자 세
  • 17. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 그런데 과연 왜? 객체지향으로 패러다임으로 바뀌었을까? 객체지향 이전의 패러다임(절차지향 / 구조적 방법)에 어떤 문제가 발생한 걸까? <<계산기 프로그램>> <<회계 프로그램>> <<3Ds Max>> 과거 프로그램의 규모 오늘날 프로그램의 규모
  • 18. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 어떤 문제? 어떤 프라블럼? 함수가 300개가 넘는다면?
  • 19. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 어떤 문제? 어떤 프라블럼? 들어는 보셨나~ 이름하야 스파게티 코드! 맛있다? X 미쳐버리겠다 O
  • 20. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 왜 객체지향인가? 어떤 문제? 어떤 프라블럼? 단적인 예의 도식화. 뭐가 보기 쉬워요? <<함수 기반의 절차지향 패러다임>> <<객체 기반의 객체지향 패러다임>> 알고리즘 중심 / 잦은 변수의 전역화 객체 중심 / 변수와 기능이 함께(캡슐화) 절차지향, 객체 지향 간의 장/단점 비교는 다음에 세세히 살펴볼 기회가 있을 겁니다! 일단은 그냥 개념만 잡고, 흐름만 느끼세요.
  • 21. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 조금 다른 얘기를 해볼까요? 자동차 공장 가보셨어요? 자동차 만들 때, 어떤 부품들이 들어가나요? 이거 왜 이렇게 만들까요? 어떻게 분류가 돼있는 거죠? 기준이 뭘까요? 요새 기술력 정도면 부품을 몇 개씩 통합해서 만들 수도 있을텐데.. 뭐하려고 머리 아프게 요로코롬 구분해서 만들까요? 자동차 엔지니어들이 바보인 걸까요?
  • 22. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 조금 다른 얘기를 해볼까요? 3D Graphics Artist 3Ds Max로 작업을 합니다. 모델링할 때, 나름의 단위로 분리해서 작업하시지 않나요? 통짜 메쉬로 작업하다가 실수했는데, Undo도 안되고! 백업파일도 없어서 멘붕! 하신 적 없나요? 어떤 바보가 그렇게 작업하냐고 생각하고 계시죠?
  • 23. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 조금 다른 얘기를 해볼까요? 디자이너분들 기획서를 썼습니다. 사장님한테 검수를 받았는데 그냥 수정해오래요… 근데 이게 700페이지가 넘어요… 700페이지를 전부다 검토 수정 해야해요… A B C 그런데 만약, 기준을 세워 몇 장씩 나눠서 분류를 했다면? 사장님 曰 “B, D 부분에 수정이 필요할 것 같아” D E F 그러면 우리는 B와 D만 수정을 할 수 있겠죠. 항목은 멋으로 나누는 게 아니잖아요!
  • 24. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 조금 다른 얘기를 해볼까요? 디자이너분들 파워포인트로 애니메이션 노가다 해보신분? 한 슬라이드에 애니메이션이 무려 254개 이거 애니메이션 관리하다가 삐끗하면 도대체 어디서부터 고쳐야 할지… 멘붕미아가 돼버리는 수가 있다…
  • 25. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 슬슬 감이 잡히나요? 우리는 ‘이걸’ 본능적으로 알고 있다. 현상을 좀 더 쉽게 파악하고 분석하려면, 체계적(or 계층적)으로 사고해야 한다. 문제가 크면 클 수록 더더욱. 시간이 거듭될 수록 다양한 분야에서 기존의 카테고리에서 가지를 치고 나와 좀 더 집중된, 특화된 새 이름으로 등장하는 것들의 이유도 이와 일맥상통. 대부분의 우리들은 현상에 대해 한 번에 총체적인 사고를 능숙하게 할 정도로 사고력이 좋지는 않다. 고도화된, 다양화된, 광범위한 오늘날의 여러가지 현상과 문제에 있어선 더더욱!
  • 26. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 슬슬 감이 잡히나요? 반응속도는 단면적에 비례 얼음을 쪼개면 단면적이 늘어나 빨리 녹듯이 분류를 통해 문제와 사고력(해결력)이 맞닿는 단면적을 늘릴 수 있다
  • 27. Designed By Jason “Merak” Kim Merak.net@hotmail.com 소프트웨어 개발도 마찬가지다
  • 28. Designed By Jason “Merak” Kim Merak.net@hotmail.com 오! 이건 우리가 예전에 개발한 솔루션과 비슷해 이건 내가 잘하는 거네~ 내가 맡지. Com A Com B Com C Com D <<정말 큰 프로그램>> 이 부분은 우리 거랑 완전 우리 쪽에 이 기능과 관련한 비슷하네. 전문가가 있어. 소스를 공개해줄게!
  • 29. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 정리해보면 절차지향 패러다임으로 개발을 하다가 불편함, 한계에 부딪혔다. 왜? 소프트웨어가 너무 커졌기 때문에 그래서 이걸 현실에서 인간이 사고하는 방식과 유사하게 바꿀 수 있다면 개발이 수월해질 수 있을 것 같다는 아이디어에 착안하게 됐고 그 고민의 답으로 객체지향 패러다임이 탄생했다. 객체를 중심으로 생각하고 개발하면 여러가지 이유로 절차지향에서는 불가능한 효율을 발휘할 수 있다. 그래서 오늘날의 많은 소프트웨어는 (하지만 여전히 절차지향이 강세인 부분도 있다) 객체지향으로 개발이 되고 있다.
  • 30. Designed By Jason “Merak” Kim Merak.net@hotmail.com • 이건 맛보기일 뿐이다. 사실 객체지향 패러다임의 정신이 단순히 ‘분리 / 분류’ 에만 있는 것은 아니여요. 이것은 단지 객체지향 패러다임이 주는 효용 중에 한 가지일 뿐. 처음부터 너무 메커니즘 쪽으로 접근을 하면 힘들 것 같아서 -객체지향 이야기 上- 편은 어떤 이유에서 객체지향으로 패러다임을 전환할 필요가 있었는지 쉬운 예로 가볍게 환기하는 게 목적이었어유. • 中/下 편은 약간 딱딱한 내용이 될 수도 있다. 객체지향 패러다임은 (OOA – OOD – OOP) 우리의 사고체계와 비슷해서 많이 어렵지는 않아요. 하지만 그렇다고 호락호락하기만 한 상대도 아니지요. :D 다음 편에는 실제로 코드들을 ‘읽어보며’ 객체지향 패러다임이 어떤 특징들을 가지고 있어서 객체지향, 객체지향 하는 지 살펴보게 될 건데~ 약간 딱딱한 내용이 될 수도 있지만, 최대한 즐겁게 해보아요!
  • 31. Designed By Jason “Merak” Kim Merak.net@hotmail.com 아, 마지막으로 바퀴벌레 이야기를 다시 떠올려 보세요. 바퀴벌레(Bug) 잡기의 예는 Debug(버그수정)와 닮아있어요. 뭐가 닮아 있다는 건지 나름대로 생각해보시고 오시면 좋을 것 같아요 :D
  • 32. Designed By Jason “Merak” Kim Merak.net@hotmail.com 끄읕~