C ++クラスとオブジェクトの理解(1)

1.クラスの概念

1.クラスは、オブジェクト指向言語のプログラミングの概念であり、オブジェクト指向プログラミングの基礎です。
2.クラスの本質は、byte、short、int(char)、long、float、doubleなどの基本的なデータタイプと同様の参照データタイプです。違いは、複雑なデータタイプであるということです。本質的にはデータではなくデータ型であるため、メモリ内に存在せず、直接操作することはできません。オブジェクトとしてインスタンス化された場合にのみ操作可能になります。
3.クラスは、実生活で共通の特性を持つもののクラスを抽象化したものです。
4.プロパティとメソッドは、独自のメンバーを操作するためにクラス内にカプセル化されます。クラスは特定のオブジェクトの定義であり、動作があります。オブジェクトが実行できることと、オブジェクトが実行するメソッドを記述します。これらは、このオブジェクトを操作できるプログラムとプロセスです。名前、プロパティ、メソッド、イベントなど、オブジェクトの動作に関する情報が含まれています。

実際、より一般的に理解するには、それが属するシステムを抽象化することです。例1:犬と猫は動物に属します。次に、概念を抽象化し、「動物」の概念を抽象化し、クラスでクラスを宣言できます。

class Animal
{
    
    
//方法

//属性


};

クラスの属性と方法を理解することは難しくありません。猫と犬が動物に属するのと同じように、共通点を抽象化し続けます。猫と犬はどちらも動物であり、名前、体重、年齢、性別があります。これらはすべて「動物クラス」の属性として使用できるため、コードでこれを実装できます。

class Animal
{
    
    
public:
	//成员函数(方法,也可称为行为或者功能)
private:
	char m_Name[20];		//名字
	short m_Weight;			//体重
	short m_Age;			//年龄
	
};

クラスのメソッドの理解は、実際にはクラスの動作であり、クラスが実行できる関数としても理解できます。この関数は自分で定義できます。もちろん、関数は自分で定義し、自由に関数を追加できます。しかし、通常、プログラミングでは、可能な限りコンセプトに準拠するようにしています。たとえば、動物が達成できない機能を抽象化することはできません。動物が達成できない動作を抽象化しても、この動作によってすべての人がプログラミングに参加できるかどうか理解?それとも、抽象化された関数は本当に意味がありますか?
それは共通性の抽象化であるため、私たちは通常、私たちが持っている共通性を抽象化します。クラスの使い方や機能については、後で説明しますが、ここでは、クラスを理解する場合と同じように、動物のメソッドをいくつか抽象化し、メソッドロジックを定義しました。

#include<iostream>
using namespace std;
class Animal
{
    
    
public:
//抽象了一个移动方法
	void Move()
	{
    
    
		cout << m_Name << "移动了" << endl;
	}
//抽象了一个吃东西方法
	void Eat()
	{
    
    
		cout << m_Name << "吃东西了" << endl;
	}
//初始化Set函数,这里牵扯到了类的初始化,我们可以后续再细讲类的初始化
	void Set(char name[20], int weight, int age)
	{
    
    
		strcpy(m_Name,name);
		this->m_Weight = weight;
		this->m_Age = age;
	}
private:
	char m_Name[20];		//名字
	short m_Weight;			//体重
	short m_Age;			//年龄
	
};


第二に、オブジェクトの概念

このオブジェクトは他のオブジェクトではありません。オブジェクトはありますか?私にとって重要ですか?さて、冗談をやめて、オブジェクトの概念を理解し続けましょう。
概念:クラスは、共通の特性を持つものまたはイベントのコレクションであり、クラスオブジェクトはクラスのインスタンス化です。

ここに写真の説明を挿入
ここでのオブジェクトは特定のインスタンスを参照するため、通常はそのような文を紹介します。クラスのインスタンス化オブジェクトは、一般に、実際には神の観点からクラスを作成しています。たとえば、動物のクラスを作成しました。ですから、「神」としては「動物」という概念だけでは不十分です。猫、犬、象など、具体的なものを取り上げましょう。「動物」のカテゴリーでは、具体的なもの、具体的な例、オブジェクトをインスタンス化します。

クラスオブジェクトをインスタンス化するだけで、クラスの機能をよりよく理解できるからです。クラスは何ができ、クラスの役割は何ですか。ここでは、コードを使用してオブジェクト、猫、犬をインスタンス化しました。
聞くことに集中するここに写真の説明を挿入

int main()
{
    
    
	Animal Dog;				//用Animal类实例化对象 Dog,也就表明了Dog拥有了类的相关属性及行为
	Dog.Set("Tom", 10, 1);	//用Set方法给Dog初始化,因为还没引入构造函数的概念,因此这里我仅用Set函数进行初始化
	Dog.Eat();				//Dog调用Eat()方法
	Dog.Move();				//Dog调用Mova()方法
	Animal Cat;				//用Animal类实例化对象 Cat,也就表明了Cat拥有了类的相关属性及行为
	Cat.Set("Amy", 8, 1);	//用Set方法给Cat初始化,因为还没引入构造函数的概念,因此这里我仅用Set函数进行初始化
	Cat.Eat();				//Cat调用Eat()方法
	Cat.Move();				//Cat调用Mova()方法
	
	return 0;
}

動作結果:
ここに写真の説明を挿入

三、クラスとオブジェクトの関係

クラスとオブジェクトの関係は、金型と鋳造物の関係に似ています。クラスのインスタンス化の結果はオブジェクトであり、オブジェクトのクラスの抽象化はクラスです。クラスは、同じ特性(属性)と同じ動作(メソッド)を持つオブジェクトのグループを記述します。 。

第四に、クラスとオブジェクトの違い

1.クラスは抽象的な概念であり、リアルタイム/空間には存在しません。クラスは、すべてのオブジェクトの抽象的なプロパティと動作を定義するだけです。「動物」カテゴリと同じように、多くの個人を含めることができますが、現実の世界には存在しません。

2.オブジェクトはクラスの具象です。それは本物です。

3.クラスは静的な概念であり、クラス自体はデータを伝送しません。クラスのオブジェクトが作成されていない場合、クラス自体はメモリ空間に存在しません。

4.オブジェクトは動的な概念です。各オブジェクトには、他のオブジェクトとは異なる独自の属性と動作があります。オブジェクトのプロパティは、それ自体の動作によって変化する可能性があります。(つまり、コードでは、コードのロジックを処理するための人工的な呼び出しは、呼び出しの順序によって変更されます)

:: ProMer_Wang

リンク:https://blog.csdn.net/qq_43801020/article/details/106879762

この記事はProMer_Wangのオリジナル記事であり、著作権は作者に帰属します。再印刷するための元のテキストのソースを示してください。再印刷へようこそ!

おすすめ

転載: blog.csdn.net/qq_43801020/article/details/106879762