질문으로 질문에 대답하겠습니다. 오늘 아침에 일하러 운전했을 때 (실제로 그렇게했다고 가정합니다), 엔진이 연료-공기 혼합을 허용하기 위해 밸브를 어떻게 열고 어떻게 점화했는지주의를 기울였습니까? 아냐 상관 없어 . 도로를 주행 할 때 자동차 엔진이 어떻게 작동 하는지 . 당신은 것을 걱정 하지 작업.
언젠가 차가 작동하지 않는다고 가정 해보십시오. 시작하지 않고, 막대를 던지거나, 벨트를 부러 뜨리고, 문자 메시지가 바쁠 때 자신의 잘못없이 그 콘크리트 장벽으로 쟁기질을 할 수 있습니다. 이제 새 차가 필요합니다 (적어도 일시적으로). 이 새 차가 어떻게 작동하는지 정확히 신경 쓰십니까? 아니요. 관심있는 것은 먼저 작동한다는 것입니다. 둘째는 오래된 차를 운전할 때 사용한 것과 동일한 지식과 기술을 사용하여 새 차를 운전할 수 있다는 것입니다. 운전하는 차량에 변화가없는 것이 이상적입니다. 현실적으로이 새로운 자동차의 작동 방식은 가능한 한 "놀람"을 줄입니다.
이러한 기본 원칙은 캡슐화 및 추상화의 핵심 원칙입니다. 객체가 어떻게 행동하는지에 대한 지식은 객체로 무엇을 하는가에 필요한 것이 아니어야합니다. 컴퓨터 프로그래밍에서도 프로그램을 실행하는 CPU 내의 전기 경로에 대한 세부 정보는 최소한 6 개 이상의 I / O 명령어, 드라이버, OS 소프트웨어 및 런타임 계층 뒤에 추상화되어 있습니다. 많은 성공적인 소프트웨어 엔지니어는 정확한 하드웨어 아키텍처 또는 심지어 OS 빌드에 대해 걱정하지 않고 완벽하게 좋은 코드를 작성합니다. 나를 포함해서.
캡슐화 / 정보 숨기기는 "어떻게하는지 신경 쓰지 말고 그냥 신경 쓰십시오"라는 정신을 허용합니다. 소비자는 소비자가 쉽게 소비 할 수있는 방식으로 소비자에게 유용한 것을 노출시켜야합니다. 현실 세계로 돌아가서 자동차가 사용자에게 내부 작업에 대한 정보를 제공해서는 안되거나 자동차가 사용자에게 점화, 스티어링 휠, 페달. 모든 차량에는 속도계와 연료 게이지, 타코미터, 바보 등 및 기타 피드백이 있습니다. 사실상 모든 자동차에는 헤드 라이트, 회전 신호, 라디오, 좌석 조정 등과 같은 다양한 독립 서브 시스템을위한 스위치가 있습니다. 모든 경우에 충분한 지식이 있다면 당신은 그것을 열고 약간 다른 방식으로 작동하도록 물건을 변경할 수 있습니다. 그러나 대부분의 경우 아마도 어쩌면 사용자가 실내에서 연료 펌프를 직접 독립적으로 제어 할 수 없어야합니까? 아마도, 아마도 사용자는 실제로 브레이크 페달을 밟지 않고 브레이크 라이트를 작동시킬 수 없어야합니까?
추상화는 "이것과 같지는 않지만 둘 다 XI이기 때문에 X와 같이 사용할 수 있습니다"라는 사고 방식을 허용합니다. 객체가 추상화를 상속하거나 구현하는 경우 소비자는 구현에서 다른 알려진 추상화 구현과 동일하거나 유사한 결과를 생성해야합니다. Toyota Camry와 Ford Fusion은 모두 "자동차"입니다. 따라서 스티어링 휠과 같은 일반적인 예상 기능 세트가 있습니다. 시계 반대 방향으로 돌리면 자동차가 왼쪽으로갑니다. 시계 방향으로 돌리면 자동차가 오른쪽으로 이동합니다. 미국 내 어느 차 에나 탑승 할 수 있으며, 자동차에는 스티어링 휠과 최소 2 개의 페달이있을 것으로 예상됩니다. 하나는 오른쪽에 "car goes"페달이고 가운데 하나는 "car stops"페달입니다 .
추상화의 목록은 "최소한 놀랍게도의 이론"입니다. 시운전을 위해 새 차의 바퀴를 타고 운전대를 시계 방향으로 돌리고 차를 왼쪽으로 돌리면 가장 말이 놀랍습니다. POS 판매자를 고발 한 판매자를 비난 할 수 있으며, 새로운 행동이 익숙한 것보다 "더 나은"이유 또는이 행동이 "문서화 된"것 또는 " 투명 "제어 시스템입니다. 이 새 차와 당신이 운전했던 다른 모든 차에도 불구하고, 여전히 "차"인이 차를 운전할 때 새 차를 성공적으로 운전하기 위해 차를 어떻게 운전해야하는지에 대한 몇 가지 기본 개념을 바꿔야합니다. 그것은 일반적으로 나쁜 일입니다. 새로운 패러다임에 직관적 인 이점이있는 경우에만 발생합니다. 안전 벨트를 추가하는 것이 좋은 예일 것입니다. 50 년 전에 방금 들어 와서 갔지만 이제는 사고를 당했을 때 앞 유리창이나 조수석에 들어 가지 않는다는 직관적 인 이점이 있습니다. 그럼에도 불구하고 운전자들은 저항했다. 많은 자동차 소유자가 법률에 따라 사용이 의무화 될 때까지 안전 벨트를 차에서 자릅니다.