객체 지향 프로그래밍이 성공한 이유는 무엇입니까? [닫은]

객체 지향 프로그래밍을 그렇게 많이 성공시킨 당신의 특징은 무엇입니까?

  1. 메시지 전달
  2. 계승
  3. 다형성
  4. 캡슐화

또는 소개하고 싶은 다른 기능이 있습니다.

또한 추상 데이터 형식과 객체 지향 프로그래밍의 관계가 무엇인지 알고 싶습니다.



답변

객체 지향 프로그래밍의 가장 중요한 특징은 복잡성 관리라는 것 입니다.

인간의 두뇌는 한 번에 많은 개념을 가질 수 있습니다. 7 +/- 2 개의 독립적 인 항목을 기억하는 데 종종 인용되는 한계가 떠 오릅니다.

직장에서 600kloc 시스템을 작업 할 때 한 번에 모든 것을 머리에 담을 수 없습니다. 그렇게해야한다면 훨씬 작은 시스템 에서만 작업 할 수있을 것 입니다.

다행히도, 난 필요가 없습니다. 우리가 그 프로젝트에서 사용한 다양한 디자인 패턴과 다른 구조는 전체 시스템을 한 번에 처리 할 필요가 없다는 것을 의미합니다. 개별적인 부분을 선택하여 더 넓은 애플리케이션에 적합하다는 것을 알고 작업 할 수 있습니다. 잘 정의 된 방식으로.

중요한 모든 OO 개념은 복잡성을 관리하는 방법을 제공합니다.

캡슐화 -서비스가 어떻게 구현되는지 걱정하지 않고 다양한 서비스를 제공하는 외부 API를 다루겠습니다.

추상화 -필수 특성에 집중하고 관련성이없는 것을 무시하겠습니다.

구성 -새로운 조합으로 이미 작성된 구성 요소를 재사용 할 수 있습니다.

다형성 -다른 객체가 다른 방식으로 서비스를 제공하는 방법에 대해 걱정하지 않고 서비스를 요청할 수 있습니다.

상속 -인터페이스 나 구현을 재사용하여 이전과 다른 부분 만 제공합니다.

단일 책임 원칙 -각 개체의 목적을 명확하고 간결하게 유지하므로 추론하기 쉽습니다.

Liskov Substitution Prinicple- 홀수 종속성을 도입하여 서로 함정을 배치하지 마십시오

개방 / 폐쇄 원칙 -기존 코드를 위반할 위험이없는 방식으로 확장 및 수정을 허용합니다.

의존성 주입 -컴포지션을 한 단계 더 발전시키고 구성 요소를 훨씬 나중에 함께 모 읍시다.

인터페이스 지향 개발 -추상화를 다음 단계로 나아가고 구체적인 구현에 의존하지 않고 추상화에만 의존하도록합시다.


답변

그래픽 사용자 인터페이스. 80 년대 후반, 90 년대 초, Mac, Amigas, Atari ST, Windows 및 GEM이 문자 기반 사용자 인터페이스를 대체하기 시작했을 때 C와 같은 언어는 GUI 프로그램을 작성하기에 적합하지 않다는 것이 분명해졌습니다. 전통적인 데이터 처리는 절차 적 언어로도 수행 될 수있는 “입력 데이터-> 처리-> 출력 데이터”스키마로 간주되지만, OO 기능은 GUI의 고유 한 복잡성을 처리하는 데 편리했습니다.


답변

캡슐화에서 제공하는 데이터 숨기기.


답변

다른 답변 중 아직 언급되지 않은 기능 : 도메인 모델링 . 사람들은 객체로 또는 객체로하는 일과 본질적인 속성을 가진 객체에 대해 생각하는 경향이 있기 때문에 객체 지향 소프트웨어를 사용하여 문제 나 워크 플로를 모델링하는 것은 매우 쉽습니다. 기본적으로 코드에서 명사, 동사 및 형용사를 처리하는 기존 기능을 사용할 수 있습니다.


답변

상속이 OOP의 가장 중요한 포인트라고 생각합니다.

[게임 개발에서] 렌더링 메서드 및 속성을 사용하여 Drawable 클래스와 같은 것을 만들고 Drawable에서 상속되는 Spaceship and Planet 클래스를 만들 수 있습니다. 그 [및 다른 Sprite 자식]에서 모든 객체를 가져 와서 drawableObjArray를 던져 모든 객체에 대해 draw 메소드를 호출하십시오. Drawable이라는 것을 알아야합니다.


답변

추출

불필요한 것을 숨기고 필요한 서비스를 제공합니다. 내 설명을 참조하십시오-
추상화 란 무엇입니까?


답변

그것은 인간의 마음의 사물 조직을 사물에 사용하도록 장려하기 때문에 다소 성공합니다. 사람들은 일반적으로 차이점, 유사점 및 행동과 같은 사물의 관계를 보는 데 능숙합니다. OO는 세계의 인간 개념화를 모방하는 소프트웨어 개발을 장려합니다.

우리가 세상을 보는 것과 비슷한 방식으로 소프트웨어 개발을하면 마음이 복잡성을 쉽게 처리 할 수 ​​있습니다.