D-programming-classes-objects
Dプログラミング-クラスとオブジェクト
クラスは、オブジェクト指向プログラミングをサポートするDプログラミングの中心的な機能であり、多くの場合、ユーザー定義型と呼ばれます。
クラスはオブジェクトの形式を指定するために使用され、データ表現とそのデータを1つのきれいなパッケージに操作するためのメソッドを組み合わせます。 クラス内のデータと関数は、クラスのメンバーと呼ばれます。
Dクラスの定義
クラスを定義するときには、データ型の設計図を定義します。 これは実際にはデータを定義しませんが、クラス名の意味、つまりクラスのオブジェクトが何を構成し、そのようなオブジェクトで実行できる操作を定義します。
クラス定義は、キーワード class で始まり、その後にクラス名が続きます。クラス本体は、中括弧のペアで囲まれています。 クラス定義の後には、セミコロンまたは宣言のリストを続ける必要があります。 たとえば、次のようにキーワード class を使用してBoxデータ型を定義しました-
class Box {
public:
double length; //Length of a box
double breadth; //Breadth of a box
double height; //Height of a box
}
キーワード public は、それに続くクラスのメンバーのアクセス属性を決定します。 パブリックメンバーは、クラスオブジェクトの範囲内であればどこからでもクラスの外部からアクセスできます。 また、サブセクションで説明する private または protected としてクラスのメンバーを指定することもできます。
Dオブジェクトの定義
クラスはオブジェクトの設計図を提供するため、基本的にオブジェクトはクラスから作成されます。 基本型の変数を宣言するのとまったく同じ種類の宣言を使用して、クラスのオブジェクトを宣言します。 次のステートメントは、クラスボックスの2つのオブジェクトを宣言します-
Box Box1; //Declare Box1 of type Box
Box Box2; //Declare Box2 of type Box
オブジェクトBox1とBox2の両方には、データメンバーの独自のコピーがあります。
データメンバーへのアクセス
クラスのオブジェクトのパブリックデータメンバーには、直接メンバーアクセス演算子(。)を使用してアクセスできます。 物事を明確にするために次の例を試してみましょう-
import std.stdio;
class Box {
public:
double length; //Length of a box
double breadth; //Breadth of a box
double height; //Height of a box
}
void main() {
Box box1 = new Box(); //Declare Box1 of type Box
Box box2 = new Box(); //Declare Box2 of type Box
double volume = 0.0; //Store the volume of a box here
//box 1 specification
box1.height = 5.0;
box1.length = 6.0;
box1.breadth = 7.0;
//box 2 specification
box2.height = 10.0;
box2.length = 12.0;
box2.breadth = 13.0;
//volume of box 1
volume = box1.height *box1.length* box1.breadth;
writeln("Volume of Box1 : ",volume);
//volume of box 2
volume = box2.height *box2.length* box2.breadth;
writeln("Volume of Box2 : ", volume);
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Volume of Box1 : 210
Volume of Box2 : 1560
プライベートメンバーおよび保護されたメンバーには、直接メンバーアクセス演算子(。)を使用して直接アクセスできないことに注意することが重要です。 すぐに、プライベートおよび保護されたメンバーにアクセスする方法を学びます。
Dのクラスとオブジェクト
これまでのところ、Dクラスとオブジェクトに関する非常に基本的な考えを持っています。 Dクラスとオブジェクトに関連するさらに興味深い概念があります。これらについては、以下にリストするさまざまなサブセクションで説明します-
Sr.No. | Concept & Description |
---|---|
1 |
クラスのメンバー関数は、他の変数と同様に、クラス定義内にその定義またはプロトタイプを持つ関数です。 |
2 |
クラスメンバーは、public、private、またはprotectedとして定義できます。 デフォルトでは、メンバーはプライベートと見なされます。 |
3 |
クラスコンストラクターは、クラスの新しいオブジェクトが作成されたときに呼び出されるクラス内の特別な関数です。 デストラクタも、作成されたオブジェクトが削除されるときに呼び出される特別な関数です。 |
4 |
すべてのオブジェクトには、オブジェクト自体を指す特別なポインター this があります。 |
5 |
クラスへのポインターは、構造体へのポインターとまったく同じ方法で実行されます。 実際、クラスは実際には機能を備えた単なる構造体です。 |
6 |
クラスのデータメンバーと関数メンバーの両方を静的として宣言できます。 |