Kas yra C++ sąsajos

Kas Yra C Sasajos



Sąsajos, paprastai žinomos kaip abstrakčios klasės, yra tik klasės elgsenos aprašymo šaltinis, neįsipareigojant klasės įgyvendinti. C++ programavime nėra integruotos sąsajų koncepcijos. Norėdami pradėti kurti sąsają, pirmiausia turime sukurti abstrakčią klasę tik su grynomis virtualiomis funkcijomis.

C++ sąsajos taikomos naudojant abstrakčias klases. Kita vertus, klasė vadinama abstrakčia klase, jei bent viena klasėje esanti funkcija deklaruojama kaip gryna virtuali funkcija.

Kas yra gryna virtuali funkcija

The Gryna virtuali funkcija reiškia, kad vartotojai tik deklaruoja funkciją, o ne jos apibrėžimą. Metodo / funkcijos nepaisymas naudojamas gryniems virtualiems metodams įgyvendinti išvestinėje klasėje. Funkcija laikoma gryna virtualia, jei ji aprašyta klasėje, kaip nurodyta toliau:







Čia yra a sintaksė Gryna virtuali funkcija klasės kambaryje.



klasė Kambarys {
viešas :
// gryna virtuali funkcija
virtualus dvigubai Getaria ( ) = 0 ;

privatus :
dvigubai ilgio ; // Kambario ilgis
dvigubai Plotis ; // Kambario plotis
} ;

Kas yra abstrakčioji klasė

Klasė, kuri buvo sukurta specialiai tam, kad būtų naudojama kaip pagrindinė klasė, vadinama an abstrakti klasė . Abstrakčioje klasėje turi būti bent viena gryna virtuali funkcija. Tai gali apimti kintamuosius ir standartines funkcijas. Išvestinės klasės, kurias turi abstrakčioji klasė, turėtų įgyvendinti gryną virtualią bazinės klasės funkciją, kitaip jos taps abstrakčios.



Apsvarstykite šį pavyzdį, kuriame pagrindinė klasė suteikia sąsają bazinei klasei, kad pagrindinė klasė pritaikytų gryną virtualią funkciją, vadinamą gautiArea () . Dvi skirtingos klasės naudoja tą patį gautiArea () funkcija, tačiau abiejų atvejų išvestis bus skirtinga.





#include
naudojant vardų erdvė std ;
klasė Figūra
{
viešas :
virtualus tarpt Getaria ( ) = 0 ;
tuštuma setWidth ( tarpt su )
{
plotis = su ;
}

tuštuma nustatyti Ilgis ( tarpt lth )
{
ilgio = lth ;
}

apsaugotas :
tarpt plotis ;
tarpt ilgio ;
} ;

klasė Stačiakampis : viešas Figūra
{
viešas : tarpt Getaria ( )
{
grąžinti ( plotis * ilgio ) ;
}
} ;

klasė Trikampis : viešas Figūra
{
viešas : tarpt Getaria ( )
{
grąžinti ( plotis * ilgio ) / 2 ;
}
} ;

tarpt pagrindinis ( tuštuma )
{
Stačiakampis R ;
Trikampis T ;
R. setWidth ( 9 ) ;
R. nustatyti Ilgis ( 5 ) ;
cout << 'Stačiakampio sritis:' << R. Getaria ( ) << endl ;
T. setWidth ( 9 ) ;
T. nustatyti Ilgis ( 5 ) ;
cout << 'Trikampio plotas:' << T. Getaria ( ) << endl ;
grąžinti 0 ;
}

Išvestis



Sąsajų svarba

Bet kuri klasė, gauta iš grynai abstrakčios klasės (sąsaja), visada turėtų įgyvendinti kiekvieną bazinės klasės metodą, ty sąsają. Sąsajos rodyklės gali būti perduodamos funkcijoms ir klasėms, leidžiančias iš ten iškviesti išvestinės klasės funkcijas.

Kokios yra sąsajų naudojimo taisyklės

Yra šios taisyklės, kurių vartotojai turėtų laikytis naudodami sąsajas C++:

  • Deklaruokite tik grynas virtualias funkcijas.
  • Grynosioms virtualioms funkcijoms priskirta tik 0.
  • Nekurkite klasių sąsajos.
  • Naudodami nuorodą į bazinę abstrakčią klasę, galime sukurti žymeklį į išvestinės klasės egzempliorių.

Šiame kode yra sąsaja linuxhint , kaip abstrakčioji klasė buvo sukurta naudojant gryną virtualų metodą, taip pat jos funkcija taikoma antrinėje klasėje, ir mes vadiname returnString() metodą pagrindinėje funkcijoje, laikydamiesi sąsajos taisyklių.

#include
#include
#include
naudojant vardų erdvė std ;

klasė linuxhint
{
viešas :
virtualus string returnEilutė ( ) = 0 ;
} ;
klasė vaikas : viešas linuxhint
{
viešas :
string returnEilutė ( )
{
grąžinti 'Sveiki, Linuxhint' ;
}
} ;
tarpt pagrindinis ( )
{
vaikas vaikas_objektas ;
linuxhint * pntr ;
pntr = & vaikas_objektas ;
cout < returnString ( ) ;
grąžinti 0 ;
}

Išvestis

Išvada

Sąsajos yra abstrakčios klasės, apibūdinančios klasės elgesį, kai reikia įdiegti reikiamą klasę C++. Aukščiau nurodytos gairės yra labai svarbios pradedantiesiems, norint pagerinti savo C++ programavimo įgūdžius dirbant su sąsajomis. Taip pat rasite keletą pavyzdžių, kurie padės išmokti įdiegti sąsajas C++.