C++를 사용한 기본 객체 지향 프로그래밍 이해
16933 단어 cppoopprogrammingobjectoriented
전제 조건
소개
객체 지향 프로그래밍은 실생활 객체 또는 엔터티를 코드로 표현하는 프로그래밍의 패러다임입니다.
우선, OOP에서 이해해야 하는 두 가지 기본적이지만 중요한 개념, 즉 클래스와 객체가 있습니다.
수업이란 무엇입니까?
클래스는 개체의 특성과 동작을 지정하는 청사진입니다. 새로운 인간 클래스를 생성한다고 가정하고 인간에게 특정한 몇 가지 속성을 지정할 수 있습니다.
...
class human {
public:
string name;
int age;
};
...
위 스니펫에서 속성이
name
및 age
인 클래스를 만들었습니다.객체란 무엇입니까?
객체는 클래스의 인스턴스이며, 클래스의 속성이나 특성을 가정할 수 있다는 점에서 인스턴스입니다. 분명히 우리 인간은 우리 유전자의 예입니다.
이전에 생성한 클래스를 사용하여 객체를 생성한 다음 속성
name
및 age
에 값을 할당할 수 있습니다.#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
};
int main () {
human exhibitA;
exhibitA.name = "Michael";
exhibitA.age = 25;
cout <<"Exhibit A's Name is "<< exhibitA.name << endl;
cout <<"Exhibit A's Age is "<< exhibitA.age << endl;
return 0;
}
위의 스니펫에서 우리는 클래스를 성공적으로 생성했으며 객체를 생성하고 부모 클래스에서 해당 객체 속성을 할당했습니다.
이 시점에서 클래스와 객체가 어떻게 작동하는지 이해해야 합니다. 클래스는 하나의 개체로 제한되지 않으며 원하는 만큼 개체를 만들 수 있습니다.
#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
};
int main () {
human exhibitA;
human exhibitB;
exhibitA.name = "Michael";
exhibitA.age = 25;
exhibitB.name = "Nerfetiti";
exhibitB.age = 24;
cout <<"Exhibit A's Name is "<< exhibitA.name << endl;
cout <<"Exhibit A's Age is "<< exhibitA.age << endl;
cout <<"Exhibit B's Name is "<< exhibitB.name << endl;
cout <<"Exhibit B's Age is "<< exhibitB.age << endl;
return 0;
}
위 스니펫에서 볼 수 있듯이 새 개체가 생성되고 부모 클래스에 정의된 속성이 할당되었습니다.
행동이란 무엇입니까?
우리가 살펴볼 또 다른 개념은 동작입니다. 동작은 개체가 수행할 수 있는 작업입니다. 예를 들어, 인간은 달리고, 먹고, 잠을 잘 수 있습니다.
#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
void run () {
cout << name <<" is running" << endl;
}
};
int main () {
human exhibitA;
exhibitA.name = "Michael";
exhibitA.run();
return 0;
}
위 스니펫에서 볼 수 있듯이 공개 이름 변수를 전달하여 "Michael is running"을 인쇄하는 함수가 생성되었습니다. 해당 기능/동작에 할당된 객체를 기반으로 점 표기법을 통해 해당 기능/동작에 필요한 매개변수를 전달합니다.
과부하란 무엇입니까?
오버로딩은 동일한 함수 이름을 사용하여 전달된 매개변수에 따라 다른 작업을 수행할 수 있도록 하는 개념입니다. 이 예에서는 매개변수 없이 하나의 매개변수와 두 개의 매개변수가 있는 새 동작
eat()
을 생성합니다.#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
void eat () {
cout << name <<" is eating" << endl;
}
};
int main () {
human exhibitA;
exhibitA.name = "Michael";
exhibitA.eat();
return 0;
}
위에서 볼 수 있듯이 매개변수 없이
eat
라는 동작을 생성했으며, 이 동작은 "Michael is eating"또는 exhibitA
이름으로 선언한 이름을 반환해야 합니다.계속해서 eat이라는 또 다른 동작에 대한 매개 변수를 요구하여
eat
동작을 오버로드합니다.#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
void eat () {
cout << name <<" is eating" << endl;
}
void eat (string food1) {
cout << name <<" is eating "<< food1 << endl;
}
};
int main () {
human exhibitA;
exhibitA.name = "Michael";
exhibitA.eat();
exhibitA.eat("Rice");
return 0;
}
위의 스니펫에는 두 번째
eat
함수가 있지만 매개변수가 필요합니다. 이 매개변수는 할당된 개체를 기반으로 "Michael is eating Rice"형식으로 전달되었습니다.이제 마지막으로 두 개의 매개변수를 허용하는 새로운
eat
동작을 생성해 보겠습니다.#include <iostream>
using namespace std;
class human {
public:
string name;
int age;
void eat () {
cout << name <<" is eating" << endl;
}
void eat (string food1) {
cout << name <<" is eating "<< food1 << endl;
}
void eat (string food1, string food2) {
cout << name <<" is eating "<< food1 << " and " << food2 << endl;
}
};
int main () {
human exhibitA;
exhibitA.name = "Michael";
exhibitA.eat();
exhibitA.eat("Rice");
exhibitA.eat("Rice", "Beans");
return 0;
}
이 스니펫의 최종 출력은 "Michael is eating Rice and Beans"입니다. 마지막
eat
호출은 정확히 두 개의 인수를 전달했기 때문에 human 클래스에서 선언된 두 개의 매개변수로 오버로드된eat
동작을 트리거합니다.선언된 다른 모든 동작
eat
은 이후 또는 이전에 선언된 다른 동작eat
에 관계없이 여전히 작동합니다.결론
이제 개체 지향 프로그래밍이 작동하는 방식에 대한 아이디어가 있어야 하지만 C++뿐만 아니라 이 개념은 다른 프로그래밍 언어에도 적용 가능하지만 구문은 다릅니다. 상속, 다형성, 데이터 추상화 및 인터페이스와 같은 개념을 놓쳤습니다. 다른 기사인 Have fun에서 이러한 개념을 다루려고 합니다.
Reference
이 문제에 관하여(C++를 사용한 기본 객체 지향 프로그래밍 이해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ichtrojan/understanding-basic-object-oriented-programming-with-c-3d0a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)