Što su sučelja u C++

Sto Su Sucelja U C



Sučelja, obično poznata kao apstraktne klase, samo su izvor opisa ponašanja klase bez obvezivanja na implementaciju klase. Ne postoji ugrađeni koncept sučelja u C++ programiranju. Da bismo počeli stvarati sučelje, prvo moramo uspostaviti apstraktnu klasu samo s čistim virtualnim funkcijama.

Sučelja u C++ primjenjuju se pomoću apstraktnih klasa. S druge strane, klasa se naziva apstraktnom klasom ako je barem jedna funkcija unutar klase deklarirana kao čista virtualna funkcija.

Što je čista virtualna funkcija

The Čista virtualna funkcija znači da korisnici samo deklariraju funkciju, a ne njezinu definiciju. Nadjačavanje metode/funkcije koristi se za implementaciju čistih virtualnih metoda u izvedenoj klasi. Funkcija se smatra čistom virtualnom ako je opisana unutar klase kako je navedeno u nastavku:







Ovdje je sintaksa a Čista virtualna funkcija učionice.



razreda Soba {
javnost :
// čista virtualna funkcija
virtualan dvostruko Getarija ( ) = 0 ;

privatna :
dvostruko duljina ; // Dužina sobe
dvostruko Širina ; // Širina sobe
} ;

Što je apstraktna klasa

Klasa koja je stvorena posebno za svrhu da služi kao osnovna klasa naziva se an apstraktna klasa . Najmanje jedna čista virtualna funkcija mora biti prisutna u apstraktnoj klasi. Može uključivati ​​varijable i standardne funkcije. Izvedene klase koje ima apstraktna klasa trebale bi implementirati čistu virtualnu funkciju osnovne klase, inače će postati apstraktne.



Razmotrite sljedeći primjer, u kojem roditeljska klasa daje sučelje osnovnoj klasi kako bi osnovna klasa primijenila čistu virtualnu funkciju tzv. getArea() . Dvije različite klase koriste isto getArea() funkcija, ali će izlaz za oba slučaja biti različit.





#include
korištenjem imenski prostor std ;
razreda Oblik
{
javnost :
virtualan int Getarija ( ) = 0 ;
poništiti setWidth ( int wth )
{
širina = wth ;
}

poništiti setLength ( int lth )
{
duljina = lth ;
}

zaštićen :
int širina ;
int duljina ;
} ;

razreda Pravokutnik : javnost Oblik
{
javnost : int Getarija ( )
{
povratak ( širina * duljina ) ;
}
} ;

razreda Trokut : javnost Oblik
{
javnost : int Getarija ( )
{
povratak ( širina * duljina ) / 2 ;
}
} ;

int glavni ( poništiti )
{
Pravokutnik R ;
Trokut T ;
R. setWidth ( 9 ) ;
R. setLength ( 5 ) ;
cout << 'Površina pravokutnika: ' << R. Getarija ( ) << endl ;
T. setWidth ( 9 ) ;
T. setLength ( 5 ) ;
cout << 'Površina trokuta: ' << T. Getarija ( ) << endl ;
povratak 0 ;
}

Izlaz



Važnost sučelja

Svaka klasa izvedena iz čiste apstraktne klase (Sučelja) uvijek treba implementirati svaku od metoda osnovne klase, tj. Sučelja. Pokazivači sučelja mogu se proslijediti funkcijama kao i klasama, što nam omogućuje da odatle pozovemo funkcije izvedene klase.

Koja su pravila za korištenje sučelja

Postoje sljedeća pravila koja bi korisnici trebali slijediti za korištenje sučelja u C++:

  • Deklarirajte samo čiste virtualne funkcije.
  • Dodijeljena samo 0 čistim virtualnim funkcijama.
  • Nemojte stvarati sučelje klasa.
  • Koristeći referencu na osnovnu apstraktnu klasu, možemo stvoriti pokazivač na instancu izvedene klase.

U sljedećem kodu, sučelje linuxhint , kao što je apstraktna klasa stvorena korištenjem čiste virtualne metode, kao i njena funkcija je primijenjena u podređenoj klasi, a mi smo nazvali returnString() metodu u glavnoj funkciji slijedeći pravila sučelja.

#include
#include
#include
korištenjem imenski prostor std ;

razreda linuxhint
{
javnost :
virtualan string returnString ( ) = 0 ;
} ;
razreda dijete : javnost linuxhint
{
javnost :
string returnString ( )
{
povratak 'Zdravo Linuxhint' ;
}
} ;
int glavni ( )
{
dijete dijete_objekt ;
linuxhint * pntr ;
pntr = i dijete_objekt ;
cout < returnString ( ) ;
povratak 0 ;
}

Izlaz

Zaključak

Sučelja su apstraktne klase koje opisuju ponašanje klase potrebno za implementaciju potrebne klase u C++. Gore spomenute smjernice ključne su za početnike kako bi poboljšali svoje C++ programerske vještine radeći sa sučeljima. Naći ćete i neke primjere koji će vam pomoći da naučite implementaciju sučelja u C++.