Abstrakte klasser C ++

Abstrakte klasser C ++
“En klasse i C ++ programmeringsspråk anses som abstrakt hvis det inneholder minst en enkelt virtuell metode. Den virtuelle metoden kan defineres av klassene som arver den abstrakte klassen; Ellers ville underklassen blitt en abstrakt klasse. Abstrakte klasser har blitt brukt til å konstruere C ++ API -er; Imidlertid kan data abstraksjon, som vil være ideen om å opprettholde konfigurasjonsinnstillinger bortsett fra tilhørende data, ikke blandes med abstrakte metoder. En abstrakt klasse fungerer som en baseklasse som visse klasser kan stamme. La oss se de forskjellige eksemplene på en abstrakt klasse.”

Eksempel nr. 1

Den abstrakte klassen “S” og dens medlemmer er konstruert i følgende eksempel:

#inkludere
ved hjelp av navneområdet STD;
klasse S
offentlig:
virtuelt int -område () = 0;
ugyldige setwidth (int a)
wid = a;

void setheight (int b)
hght = b;

beskyttet:
int wid;
int hght;
;
klasse rektangel: public s
offentlig:
int område ()
retur (wid * hght);

;
Klassetrekant: public s
offentlig:
int område ()
retur (wid * hght)/2;

;
int main ()
Rektangel REC;
Trekant 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;

I begynnelsen av programmet vil vi inkludere det nødvendige biblioteket . Så har vi brukt standard navneområde som STD. Nå vil vi sette opp klassen som heter “S”. Vi erklærer offentlig en virtuell metode. Den virtuelle funksjonen vi brukte her er område (). Da vil vi bruke funksjonen Setwidth (). Formenes bredde kan spesifiseres ved hjelp av denne funksjonen. Verdien av bredden lagres i en variabel “a”.

Nå vil vi spesifisere verdien av høyden på formen, så vi har brukt Setheight () -funksjonen. Vi initialiserer en variabel “B” for å lagre høyden på formen. Vi setter verdiene på bredde og høyde som beskyttet. Datatypen for både bredde og høyde vil være et heltall. I neste linje vil vi arve en klasse rektangelform fra klassen "S". Her finner vi området for rektangelet, så metoden for areal () blir brukt. Det returnerer området til et rektangel ved å multiplisere verdien av bredden med verdien av rektangelet.

Etter alt dette vil vi arve en annen form, “Triangle”, fra klassen “S”. Nå bruker vi formlene for å få tak i trekanten. Området () -funksjonen kalles. Dette returnerer den resulterende verdien. Vi får området til en trekant ved å multiplisere bredden med høyden og deretter dele verdien med 2. Videre vil vi kalle Main () -funksjonen. Vi definerer objektene til henholdsvis både klasser, rektangler og trekanter.

Nå må vi angi verdiene på bredden og høyden på rektangelet og trekanten ved å bruke setwidth () og setRectangle () -metodene tilsvarende. Til slutt har vi brukt "cout" -erklæringen for å vise det beregnede området av rektangelet og trekanten.

Eksempel nr. 2

Klasser som arver fra en abstrakt klasse gir noen virtuelle metoder. Vi vil utføre forekomsten der vi arver klassene fra den abstrakte klassen:

#inkludere
ved hjelp av navneområdet STD;
Klassebase

int n;
offentlig:
virtuelt tomrom f () = 0;
int geta () return n;
;
Klasse avledet: Offentlig base

int m;
offentlig:
void f () cout << "f() is being called";
;
Int Main (Void)

Avledet x;
x.f ();
retur 0;

Først har vi integrert overskriftsfilen . Sammen med dette vil vi bruke standard navneområde som STD. Så definerer vi klassen kalt "base". Innenfor denne klassen initialiserer vi en variabel "n", og datatypen til denne variabelen vil bli satt som et heltall. Her kaller vi funksjonen til denne klassen og setter disse funksjonene som offentlige. Vi har kalt Void F () -metoden til klassen “Base”. Så bruker vi også get () -funksjonen.

Videre vil vi arve den avledede klassen fra foreldreklassen. Som et resultat avleder vi baseklassen fra den. Innenfor den avledede klassen vil vi erklære en variabel “m”. Nå kaller vi offentlig funksjonen tomrom f (). Innenfor denne funksjonen vil "cout" -uttalelsen ha blitt brukt for å vise linjen på skjermen. La oss begynne koden i Main () -funksjonens kropp. For å gjøre dette, må vi først kalle Main () -funksjonen. Vi kaller funksjonen f () tilknyttet den avledede klassen. Vi har brukt kommandoen “Return 0” på slutten av koden.

Eksempel nr. 3

Konstruktører kan være til stede i en abstrakt klasse. Vi vil opprette konstruktøren i den etterfølgende illustrasjonen:

#inkludere
ved hjelp av navneområdet STD;
klasse b

beskyttet:
int u;
offentlig:
virtuelt tomrom f () = 0;
Base (int m)
u = m;
cout<<"Calling the base constructor\n";

;
Klasse avledet: Offentlig B

int v;
offentlig:
Avledet (int m, int n): b (m) v = n;
void f () cout << "u = " << u << ", v = " << vretur 0;

Her har vi inkludert modulen . Så inkluderer vi standard navneområde som STD. Vi skal konstruere baseklassen med konstruktøren. Her fungerer baseklassen som en abstrakt klasse. Vi vil initialisere variabelen “U” og stille den beskyttet. Først har vi kalt Void F () -funksjonen. Videre vil vi kalle base () -funksjonen. Denne funksjonen inneholder en variabel som argumentasjonen. Vi har brukt "cout" -uttalelsen i denne funksjonen. Vi vil arve den avledede klassen fra "base" -klassen i følgende trinn. Innenfor den avledede klassen vil vi initialisere en variabel “V”.

Nå kaller vi offentlig funksjonen avledet (). Vi passerer to variabler som parametere. Vi kaller B () -funksjonen. Da kalles tomrommet f (). Innenfor denne funksjonen vil "cout" -uttalelsen ha blitt brukt for å vise verdiene. Vi må påkalle main () -funksjonen. Her konstruerer vi det avledede klasseobjektet. Denne funksjonen inneholder to verdier som attributt. Vi kaller funksjonen f () tilknyttet den avledede klassen. Vi vil legge inn kommandoen “Return 0” for å avslutte programmet.

Konklusjon

Vi har gått gjennom den abstrakte klassen i C ++ i denne opplæringen. Abstrakte klasseartikler er vanskelige å lage. I C ++ er en abstrakt metode en virtuell metode som kan ha en definisjon. Imidlertid ville den avledede klassen overstyre den abstrakte metoden for å forhindre at den avledede klassen også blir en abstrakt klasse. Tildelingen av 0 under erklæring skaper en virtuell metode.