Programowanie D - klasy i obiekty
Klasy są centralną cechą programowania D, która obsługuje programowanie obiektowe i są często nazywane typami zdefiniowanymi przez użytkownika.
Klasa służy do określania formy obiektu i łączy reprezentację danych i metody manipulowania tymi danymi w jeden zgrabny pakiet. Dane i funkcje w klasie nazywane są członkami klasy.
Definicje klasy D.
Definiując klasę, definiujesz plan dla typu danych. W rzeczywistości nie definiuje to żadnych danych, ale określa, co oznacza nazwa klasy, czyli z czego będzie się składał obiekt tej klasy i jakie operacje można wykonać na takim obiekcie.
Definicja klasy zaczyna się od słowa kluczowego classpo którym następuje nazwa klasy; i treść klasy, ujęta w nawiasy klamrowe. Po definicji klasy należy umieścić średnik lub listę deklaracji. Na przykład zdefiniowaliśmy typ danych Box za pomocą słowa kluczowegoclass w następujący sposób -
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
}
Słowo kluczowe publicokreśla atrybuty dostępu członków klasy, która po nim następuje. Dostęp do publicznego członka można uzyskać spoza klasy w dowolnym miejscu w zakresie obiektu klasy. Możesz również określić członków klasy jakoprivate lub protected które omówimy w podrozdziale.
Definiowanie obiektów D.
Klasa dostarcza schematów obiektów, więc w zasadzie obiekt jest tworzony z klasy. Deklarujesz obiekty klasy z dokładnie takim samym rodzajem deklaracji, jak deklarujesz zmienne typu podstawowego. Poniższe instrukcje deklarują dwa obiekty klasy Box -
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
Oba obiekty Box1 i Box2 mają własne kopie członków danych.
Dostęp do członków danych
Dostęp do publicznych elementów członkowskich obiektów klasy można uzyskać za pomocą operatora bezpośredniego dostępu do elementu członkowskiego (.). Wypróbujmy następujący przykład, aby wyjaśnić sprawę -
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);
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Volume of Box1 : 210
Volume of Box2 : 1560
Należy zauważyć, że nie można uzyskać bezpośredniego dostępu do członków prywatnych i chronionych za pomocą operatora bezpośredniego dostępu do członków (.). Wkrótce dowiesz się, jak można uzyskać dostęp do prywatnych i chronionych członków.
Klasy i obiekty w D
Jak dotąd masz bardzo podstawowe pojęcie o klasach D i obiektach. Istnieją dalsze interesujące koncepcje związane z klasami D i obiektami, które omówimy w różnych podsekcjach wymienionych poniżej -
Sr.No. | Koncepcja i opis |
---|---|
1 | Funkcje składowe klasy
Funkcja składowa klasy to funkcja, która ma swoją definicję lub swój prototyp w definicji klasy, jak każda inna zmienna. |
2 | Modyfikatory dostępu do klas
Członka klasy można zdefiniować jako publiczny, prywatny lub chroniony. Domyślnie członkowie zostaną uznani za prywatnych. |
3 | Konstruktor i destruktor
Konstruktor klasy to specjalna funkcja w klasie, która jest wywoływana, gdy tworzony jest nowy obiekt tej klasy. Destruktor to także specjalna funkcja wywoływana po usunięciu utworzonego obiektu. |
4 | Wskaźnik this w D
Każdy obiekt ma specjalny wskaźnik this co wskazuje na sam obiekt. |
5 | Wskaźnik do klas D.
Wskaźnik do klasy jest wykonywany dokładnie w taki sam sposób, jak wskaźnik do struktury. W rzeczywistości klasa jest po prostu strukturą zawierającą funkcje. |
6 | Statyczne składowe klasy
Zarówno elementy członkowskie danych, jak i elementy członkowskie funkcji klasy można zadeklarować jako statyczne. |