객체 지향 프로그래밍을 그렇게 많이 성공시킨 당신의 특징은 무엇입니까?
- 메시지 전달
- 계승
- 다형성
- 캡슐화
또는 소개하고 싶은 다른 기능이 있습니다.
또한 추상 데이터 형식과 객체 지향 프로그래밍의 관계가 무엇인지 알고 싶습니다.
답변
객체 지향 프로그래밍의 가장 중요한 특징은 복잡성 관리라는 것 입니다.
인간의 두뇌는 한 번에 많은 개념을 가질 수 있습니다. 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는 세계의 인간 개념화를 모방하는 소프트웨어 개발을 장려합니다.
우리가 세상을 보는 것과 비슷한 방식으로 소프트웨어 개발을하면 마음이 복잡성을 쉽게 처리 할 수 있습니다.