OOP는 그 자체로 중요하지 않지만 그로 인해 필요한 것 때문에 중요합니다. 추상화하고 격리하고 그룹화하는 기능을 다루는 것은 상호 작용하는 데 필요한 부분 만 노출시킵니다.
이것은 "모듈화"라는 일반적인 엔지니어링 기술로, 모든 단일 세부 사항을 높은 수준으로 관리하지 않고도 간단한 시스템을 통합하여 복잡한 시스템을 생성 할 수 있으며 구성 요소를 정확하게 교체하지 않아도 구성 요소를 교체 할 수 있어야합니다. 같은.
이러한 "엔지니어링 개념"은 소프트웨어 제품 자체가 "단일 개발자 기능"보다 커졌을 때부터 소프트웨어 개발에 반영되도록 노력해 왔으며, 따라서 개발자가 독립적 인 부분을 작업하고 그 부분을 함께 상호 작용하십시오.
그러나 이러한 원칙은 반드시 OOP에서만 찾을 수있는 것은 아닙니다 (계산 이론이 유효하며 이러한 결과를 도출 할 수있는 방법은 무한합니다).
OOP는 단순히 그 정의 (패턴)에 대한 정의는보다 정확하고 정교한 개념화 (모듈, 캡슐화, 대체 등)하는 일반적인 용어로주고, 함께 그 물건을 넣어 성공적인 시도 할 수 프로그래밍 언어에 맞게.
OOP를 먼저 " 언어 기능 "이 아니라 소프트웨어 엔지니어가 소프트웨어 디자인에 접근하게 하는 " 공통 어휘집 "으로 생각하십시오.
주어진 언어에 어휘집을 직접적으로 강제하는 기본 요소가 있거나없는 예를 들어, 누가 그렇게하지 말아야하는지에 따라 "캡슐"이 실수로 열리지 않도록하는 것은 OOP 디자인의 이차적 인 측면이다. 그렇기 때문에 언어 자체가 직접적인 지원을 제공하지 않더라도 큰 C 프로젝트조차 종종 OOP로 "관리되는"이유입니다.
프로젝트 규모가 단일 개발자 기능에 머물러서 자신이하는 모든 것을 이해하고 추적 할 때까지 (실제로는 "오버 헤드"로 보일 수 있음) 또는 무언가를 개발하는 소규모 그룹으로 파악 될 때까지 인식 할 수없는 모든 이점 짧은 기간. 그리고 이것이 "언어 기능"이라는 용어로 OOP를 공부 한 후배들이 나쁜 설계 코드를 잘못 해석하는 주된 이유입니다.
OOP가 언어에 적합한 방법은 언어 설계자가 OOP 원칙을 자체 구성에서 해석하는 방법에 따라 다릅니다.
따라서 C ++의 "캡슐화"는 "개인 멤버"(및 "캡슐"은 클래스가 됨)가되고, "대체"는 가상 함수 재정의 또는 템플릿 매개 변수화 / 전문화 등이되고 D에서는 캡슐은 "모듈"입니다 (그리고 대체는 계속됩니다) 클래스 등을 통해), 따라서 특정 패러다임 또는 패턴을 다른 언어가 아닌 특정 언어로 직접 사용할 수 있도록합니다.
채용 담당자가 OOP 질문을하는 것은 미래의 대규모 프로젝트 및 개발을 위해 소프트웨어 설계를 추상화하고 이해하는 능력을 확인하는 것입니다. OOP, 그들은 단지 "사전"이기 때문에 당신과 다른 사람들이 더 일반적인 것에 대해 이야기하거나 특정 구현으로 구체화 할 수 있도록 알고 있습니다.