Klasy abstrakcyjne C ++

Klasy abstrakcyjne C ++
„Klasa w języku programowania C ++ jest uważana za abstrakcyjną, jeśli zawiera przynajmniej jedną metodę wirtualną. Metodę wirtualną można zdefiniować przez klasy, które odziedziczą klasę abstrakcyjną; W przeciwnym razie podklasa stałaby się klasą abstrakcyjną. Klasy abstrakcyjne zastosowano do konstruowania interfejsów API C ++; Jednak abstrakcja danych, która będzie pomysłem utrzymania ustawień konfiguracji oprócz powiązanych danych, może nie być mieszana z metodami abstrakcyjnymi. Klasa abstrakcyjna działa jako klasa podstawowa, z której niektóre klasy mogą czerpać. Zobaczmy różne przykłady klasy abstrakcyjnej."

Przykład nr 1

Klasy abstrakcyjne „S” i jej członkowie są skonstruowane w poniższym przykładzie:

#włączać
za pomocą przestrzeni nazw Std;
klasa S
publiczny:
Virtual Int Area () = 0;
void setWidth (int a)
Wid = a;

void setheight (int b)
hght = b;

chroniony:
int wid;
int hght;
;
Prostokąt klas: public s
publiczny:
intrea int ()
return (wid * hght);

;
Trójkąt klasowy: public s
publiczny:
intrea int ()
return (wid * hght)/2;

;
int main ()
Rectangle Rec;
Triangle Tri;
Rec.setWidth (15);
Rec.Setheight (50);
Tri.setWidth (70);
Tri.Setheight (88);
Cout << "The calculated area of the required rectangle: " << Rec.Area() << endl;
Cout << "The calculated area of the required triangle: " << Tri.Area() << endl;

Na początku programu dołączymy wymaganą bibliotekę . Następnie używamy standardowej przestrzeni nazw jako STD. Teraz skonfigurujemy klasę o nazwie „S”. Publicznie deklarujemy metodę wirtualną. Funkcja wirtualna, której tu użyliśmy, to Area (). Następnie zastosujemy funkcję setWidth (). Szerokość kształtu można określić za pomocą tej funkcji. Wartość szerokości jest przechowywana w zmiennej „A”.

Teraz określamy wartość wysokości kształtu, więc użyliśmy funkcji setheight (). Zainicjujemy zmienną „B” do przechowywania wysokości kształtu. Ustawiamy wartości szerokości i wysokości jako chronione. Rodzaj danych zarówno szerokości, jak i wysokości będzie liczbą całkowitą. W następnym wierszu odziedziczymy kształt prostokąta klasy z klasy „S” klasy „S”. Tutaj znajdujemy obszar prostokąta, więc zastosowana zostanie metoda obszaru (). Zwraca powierzchnię prostokąta przez pomnożenie wartości szerokości przez wartość prostokąta.

Po tym wszystkim odziedziczymy inny kształt „trójkąt”, z klasy „S”. Teraz stosujemy wzory do uzyskania obszaru trójkąta. Funkcja obszaru () jest wywoływana. Zwraca to wynikową wartość. Otrzymujemy obszar trójkąta, pomnożąc szerokość przez wysokość, a następnie dzieląc wartość przez 2. Ponadto nazwiemy funkcję Main (). Definiujemy obiekty obu klas, prostokątów i trójkątów.

Teraz musimy odpowiednio ustawić wartości szerokości i wysokości prostokąta i trójkąta. Ostatecznie zastosowaliśmy instrukcję „Cout”, aby wyświetlić obliczony obszar prostokąta i trójkąta.

Przykład nr 2

Zajęcia, które dziedziczą po klasie abstrakcyjnej, zapewniają pewne wirtualne metody. Wykonamy instancję, w której odziedziczymy klasy z klasy abstrakcyjnej:

#włączać
za pomocą przestrzeni nazw Std;
baza klas

int n;
publiczny:
Virtual Void f () = 0;
int geta () return n;
;
Klasa pochodna: baza publiczna

int m;
publiczny:
void f () cout << "f() is being called";
;
int Main (void)

Pochodne x;
X.F();
powrót 0;

Najpierw integrujemy plik nagłówka . Oprócz tego będziemy używać standardowej przestrzeni nazw jako STD. Następnie definiujemy klasę zwaną „bazą”. W tej klasie inicjujemy zmienną „n”, a typ danych tej zmiennej zostanie ustawiony jako liczba całkowita. Tutaj nazywamy funkcję tej klasy i ustawiamy te funkcje jako publiczne. Nazywaliśmy metodą void f () klasy „bazą”. Następnie korzystamy również z funkcji get ().

Ponadto odziedziczymy klasę pochodną z klasy nadrzędnej. W rezultacie wyprowadzamy z niej klasę podstawową. W klasie pochodnej zadeklarujemy zmienną „M”. Teraz publicznie nazywamy funkcję void f (). W ramach tej funkcji instrukcja „cout” zostanie użyta do pokazania linii na ekranie. Rozpocznijmy kod w ciele funkcji Main (). Aby to zrobić, musimy najpierw wywołać funkcję main (). Nazywamy funkcję f () powiązaną z klasą pochodną. Zastosowaliśmy polecenie „return 0” na końcu kodu.

Przykład nr 3

Konstruktory mogą być obecne w klasie abstrakcyjnej. Stworzymy konstruktor w kolejnej ilustracji:

#włączać
za pomocą przestrzeni nazw Std;
Klasa b

chroniony:
int u;
publiczny:
Virtual Void f () = 0;
Baza (int m)
u = m;
Cout<<"Calling the base constructor\n";

;
Klasa pochodna: public B

w telewizji;
publiczny:
Pochodne (int m, int n): b (m) v = n;
void f () cout << "u = " << u << ", v = " << vpowrót 0;

Tutaj dołączyliśmy moduł . Następnie uwzględniamy standardową przestrzeń nazw jako STD. Będziemy skonstruować klasę podstawową z konstruktorem. Tutaj klasa podstawowa działa jako klasa abstrakcyjna. Zainicjujemy zmienną „u” i ustawym ją tak, aby mogła być chroniona. Najpierw nazywaliśmy funkcję void f (). Ponadto wywołamy funkcję base (). Ta funkcja zawiera zmienną jako jej argument. W tej funkcji użyliśmy instrukcji „Cout”. W następnym etapie odziedzimy klasę pochodną po klasie „podstawowej”. W klasie pochodnej zainicjujemy zmienną „V”.

Teraz publicznie nazywamy funkcję pochodzącą (). Mamy dwie zmienne jako jej parametry. Nazywamy funkcję B (). Wtedy nazywana jest pustka f (). W ramach tej funkcji zastosowano instrukcję „cout”, aby pokazać wartości. Musimy wywołać funkcję Main (). Tutaj konstruujemy obiekt klasy pochodnej. Ta funkcja zawiera dwie wartości jako jej atrybut. Nazywamy funkcję f () powiązaną z klasą pochodną. Wprowadzimy polecenie „Return 0”, aby zakończyć program.

Wniosek

W tym samouczku przeszliśmy przez klasę abstrakcyjną w C ++. Streszczenie elementów klasowych są trudne do stworzenia. W C ++ metoda abstrakcyjna jest wirtualną metodą, która może mieć definicję. Jednak klasa pochodna zastąpiłaby abstrakcyjną metodę zapobiegania, aby klasa pochodna stała się również klasą abstrakcyjną. Alokacja 0 podczas deklaracji tworzy metodę wirtualną.