객체 지향 언어
1학년 첫 학기에 우리는 C 언어를 배웠습니다. 그것은 매우 고전적이고 매우 기본적인 언어입니다. 아마도 모든 컴퓨터 과학 학생들은 그 손아귀에서 벗어나지 못했을 것입니다. C++는 이름에서 매우 분명합니다. C의 파생물입니다. C의 거의 모든 내용을 포함하지만 디자인 아이디어가 상당히 다릅니다. C는 프로세스 지향 프로그램인 반면 C++는 객체 지향 프로그램의 차이점을 설명하겠습니다. 둘.
프로세스 지향: 문제 해결에 필요한 단계를 분석한 다음 기능을 사용하여 이러한 단계를 단계별로 구현하세요.
객체 지향: 문제를 구성하는 트랜잭션을 다양한 객체로 분해하는 것입니다. 객체를 설정하는 목적은 단계를 완료하는 것이 아니라 문제 해결의 전체 단계에서 무언가의 동작을 설명하는 것입니다.
예를 들어 주사위 놀이의 경우 프로세스 중심 디자인 아이디어는 먼저 문제의 단계를 분석하는 것입니다: 1. 게임 시작, 2. 검은 돌이 먼저 이동, 3. 그림 그리기, 4. 승패 판단, 5 .백의 차례입니다. 6. 그림을 그립니다. 7. 승패를 결정합니다. 8. 2단계로 돌아갑니다. 9. 최종 결과를 출력합니다. 위의 각 단계를 별도의 기능으로 구현하면 문제가 해결됩니다.
객체 지향 설계는 다른 관점에서 문제를 해결합니다. 전체 주사위 놀이는 1. 행동이 정확히 동일한 흑백 측면, 2. 그림 그리기를 담당하는 체스판 시스템, 3. 파울 결정, 승리를 담당하는 규칙 시스템, 그리고 패배 등등 첫 번째 유형의 개체(플레이어 개체)는 사용자 입력을 받아들이고 체스 말 레이아웃의 변경 사항을 두 번째 개체 유형(체스판 개체)에 알리는 역할을 합니다. 이 변경 사항을 화면에 표시하는 동시에 세 번째 유형의 개체(규칙 시스템)를 사용하여 체스 게임을 판단하는 데 사용됩니다.
객체지향은 문제를 단계가 아닌 기능별로 나누는 것을 분명히 볼 수 있습니다. 이는 체스 게임을 그리는 것이기도 합니다. 이러한 동작은 프로세스 지향 디자인에서 여러 단계로 분산되어 있으며 일반적으로 디자이너가 실제 상황을 고려하여 다양한 단순화를 하기 때문에 다양한 드로잉 버전이 나타날 가능성이 높습니다. 객체지향 디자인에서는 그림이 체스판 개체에만 나타날 수 있으므로 그림의 통일성이 보장됩니다.
기능의 통일로 객체지향 디자인의 확장성이 보장됩니다. 예를 들어 체스를 두고 후회하는 기능을 추가하고 싶다면 프로세스 중심의 디자인을 바꾸고 싶다면 입력부터 판단, 표시까지 일련의 단계를 바꿔야 하고, 단계 사이의 순서도 조정해야 한다. 대규모. 객체 지향이라면 체스판 객체만 변경하면 됩니다. 체스판 시스템은 흑백 면의 체스 기록을 저장하고 단순히 역추적할 뿐 표시와 규칙 판단을 동시에 고려할 필요가 없습니다. 시간이 지나면 개체 함수를 호출하는 전체 순서는 변경되지 않습니다.
또 다른 예로, 이 주사위 놀이를 바둑 게임으로 변경하고 싶습니다. 프로세스를 위해 설계하는 경우 주사위 놀이의 규칙이 프로그램의 모든 부분에 배포되어 있습니다. 이를 변경하려면 다시 작성하는 것이 좋습니다. 그것. 하지만 처음부터 객체지향적인 디자인을 했다면 규칙 객체만 바꾸면 됩니다. 주사위 놀이와 바둑의 차이는 규칙 아닌가요? (물론 체스판의 크기가 다른 것 같지만 이것이 문제라고 생각하시나요? 체스판 개체에 약간의 변화만 주면 됩니다.) 체스를 두는 일반적인 단계는 객체지향에서 전혀 변하지 않았습니다. 관점. .
물론, 부분적인 변경만 달성하려면 디자이너가 충분한 경험이 있어야 합니다. 객체를 사용한다고 해서 프로그램이 객체 지향임을 보장하는 것은 아닙니다. 초보자나 매우 서투른 프로그래머는 현실 대신 객체 지향이라는 환상을 사용할 가능성이 높습니다. 이런 방식으로 설계된 소위 객체지향 프로그램은 좋은 이식성과 확장성을 갖기가 어렵습니다.
(바이두에서 찾은 답변입니다! 제가 직접 쓴 것은 아닙니다. 답변해주셔서 감사합니다!!!)
1. Object
과학적 설명: 객체지향 방식에서 객체는 시스템에서 객관적인 사실을 기술하는 데 사용되는 개체입니다. 시스템을 구성하는 데 사용되는 기본 단위입니다. 객체는 속성 집합과 동작 집합으로 구성됩니다.
자기 설명: 예를 들어 "사람"은 매우 큰 개념이지만, 자신에 관해서는 개체와 구체적인 의미가 있는 사람이 개체가 되기를 바랍니다. 당신은 할 수 있습니다. 결국 중국어는 좋지 않습니다. . .
2. 카테고리
많은 것을 요약하여 몇 가지 카테고리로 나눕니다. 분류의 원칙은 추상화입니다. 즉, 사물의 비본질적인 특성은 무시하고 현재 목표와 관련된 필수 특성에만 주의를 기울여 알아내는 것입니다. 돌, 나무, 자동차, 집 등 공통된 성질을 지닌 사물을 범주로 나누어 추상적인 개념을 도출합니다.
3. 캡슐화
캡슐화는 객체의 속성과 서비스를 독립적인 시스템 단위로 결합하고 객체의 내부 세부 사항을 최대한 숨기는 객체 지향 방법의 중요한 원칙입니다.
4. 상속
상속은 객체지향 기술이 소프트웨어 개발의 효율성을 향상시킬 수 있는 중요한 이유 중 하나입니다. 상속의 정의는 다음과 같습니다. 특수 클래스의 객체는 일반 클래스의 모든 속성과 서비스를 갖습니다. 이를 일반 클래스의 상속이라고 합니다. 특별 수업으로.
예를 들어 배의 특성을 이해한 후 여객선을 생각해보면 여객선도 배라는 것을 알게 되므로 배의 특성을 모두 갖추고 있다고 생각할 수 있으므로 배의 특징만 있으면 됩니다. 여객선의 독특한 특성에 초점을 맞췄습니다.
5. 다형성
다형성은 일반 클래스에 정의된 속성이나 동작을 특별한 클래스에 상속받은 후 다른 데이터, 유형을 가지거나 다른 동작을 나타낼 수 있습니다. (이에 대해서는 나중에 구체적인 예를 들어 설명하겠습니다!)
관련 권장 사항:
위 내용은 C++ 요약: 객체 지향의 기본 개념의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!