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
• 슬슬 감이 잡히나요?
반응속도는 단면적에 비례
얼음을 쪼개면 단면적이 늘어나 빨리 녹듯이
분류를 통해 문제와 사고력(해결력)이 맞닿는 단면적을 늘릴 수 있다
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