[Java] 객체지향의 사실과 오해 읽기_1

협력 속에 사는 객체

객체지향이라 불리는 새로운 세상의 문을 연 대부분의 사람들은 객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임이라는 설명과 마주하게 된다. 이런 식의 설명이 전달하고자 하는 핵심은 객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업이기 때문에 그 결과물인 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화라는 것이다. 아쉽게도 실세계의 모방이라는 개념은 객체지향의 기반을 이루는 철학적인 개념을 설명하는 데는 적합하지만 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기에는 적합하지 않다. 애플리케이션을 개발하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률은 그다지 높지 않다. 비록 그런 객체가 존재한다고 하더라도 객체와 사물 간의 개념적 거리는 유사성을 찾기 어려울 정도로 매우 먼 것이 일반적이다. 심지어 소프트웨어가 반영해야 하는 객관적인 실세계가 존재한다는 아이디어조차도 논란의 여지가 있는 철학적 근거를 기반으로 한다. 노련한 객체지향 전문가들은 본능적으로 이런 사실을 인지하고 있다. 대다수의 개발자들은 객체지향 애플리케이션이 실세계를 모방해야 한다는 설명을 전혀 납득하지 못한다. 방화벽이 화재의 확산을 막는 것이 아니라 네트워크 침입을 먹는다고 해서 문제 될 것이 있을까? 실세계 방화벽이 건물과 연관돼 있다고 해서 네트워크 방화벽이 건물과 연관될 필요가 있는가? 비유의 적절성을 떠나 소프트웨어 방화벽과 건물 방화벽 사이의 의미적 거리만큼이나 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다.

객체지향의 목표는 실세계를 모방하는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.

… 읽고 요약하기




© 2021.1. by jean202

Powered by jean202