책내용 1. 객체지향과 인지 능력 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다. 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다. 인간은 좀 더 단순한 객체들로 주변을 분해함으로써 자신이 몸담고 있는 세상을 이해하려고 노력한다. 즉, 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새..
책 내용 "객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임"이라고 말한다. 즉 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화다. 하지만 실용적인 관점에서는 위의 설명이 적합하지 않다. 대다수의 개발자들은 객체지향 애플리케이션이 실세계를 모방해야 한다는 설명을 전혀 납득하지 못한다. 오히려 새로운 세계를 창조하는 것이다. 다만 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는데 효과적이라서 그렇다. 책에서도 이런 방식을 따른다.(캡슐화, 자율성, 메세지, 협력 => 연결완전성) 1. 협력하는 사람들 커피 공화국 커피를 주문하는 경우를 생각해보자. 손님, 캐시어, 바리스타가 존재한다. 손님은 커피를 캐시어에게 주문하고 캐시어는 바..
배경 우테캠에서 호눅스님이 추천한 책 중에 하나가 객체지향의 사실과 오해다. 그때는 그런 책이 있구나 하고 넘어갔는데 여러 글들을 보고 면접을 보면서 객체지향에 대해 관심이 생기고 공부할 필요성을 느꼈다. 자바스크립트는 프로토타입 기반의 객체지향 언어이다. 그렇다면 클래스형 객체지향 언어와 다른 점은 무엇인가? 객체지향이 왜 중요하고 어디에 적용할 수 있는가? 라는 질문에 제대로 대답할 수 없다. 구글링해서 답변만 찾아보는 것으로는 부족하다. 현실 세계에 있는 것들을 추상화를 통해 코드로 구현하고 캡슐화, 상속, 다향성의 특징을 가진다 정도의 설명은 너무 막연하다. 단순히 면접에서 잘 대답하기 위해서가 아니라(사실 객체지향에 대한 깊은 지식은 신입 개발자에게 잘 물어보지 않는다) 더 좋은 개발자가 되기 ..