Hva er en CPP Interface?

Objektorienterte programmeringsspråk som C ++ ( "C Plus Plus" eller CPP) følger et paradigme programmering rettet mot gjenbruk kode og bygge strukturelle hierarkier i denne koden. Utviklere lage klasser for å kapsle data i funksjonalitet i logiske biter. De gjør også dette fordi visse teknikker i OOP, som arv, tillate bygging av mer komplekse klasser fra enklere seg. Utviklere kan også kontrollere hvordan klassene er gjennomført ved hjelp av design klasser kalt "grensesnitt" eller "abstrakte klasser" som bestemmer hvordan andre programmerere bruke disse klassene.

Objekter og Arv

Når du oppretter klasser og objekter for et program i C ++, programmerer oppdager ofte at ulike klasser vil overlappe eller dele lignende funksjonalitet. Hun har da to valg: skrive funksjonell kode for begge klasser, eller lage en "base" klasse med alle de delte egenskaper og funksjoner i disse klassene. Deretter de to klassene kan "iboende" disse egenskapene samtidig legge sine egne. For eksempel, hvis programmereren skriver "assosierte" og "manager" klasser for en virksomhet app, kan hun lage et enkelt "ansatt" klasse som inneholder felles funksjonalitet og mellom medarbeidere og ledere.

virtuelle funksjoner

Base klassen for noen annen klasse kan inneholde definisjoner om hva klasser kan gjøre. og hva slags informasjon de inneholder. I så fall kan den ansatte klasse fra eksempelet inneholder en funksjon for å beregne lønn som inneholder en bestemt formel. Lederen og assosierte klasser iboende som funksjon, og dermed formelen. Imidlertid kan ledere og medarbeidere krever annen formel for å beregne lønn. I dette tilfelle ville baseklassen inneholde en "virtuell" -funksjon. Basen klassen ville definere en standard oppførsel, men de underordnede klasser kan deretter lage sine egne formler og funksjoner om nødvendig.

abstrakte klasser

Ved siden av virtuelle funksjoner, er det "rene" virtuelle funksjoner. Pure virtuelle funksjoner inneholder ikke en funksjonsdefinisjon. Snarere, de bare definere en funksjon navn. Så, for eksempel, lønn beregning funksjon i base klassen Employee ville bli erklært som virtuell uten en definisjon. Deretter ville de manager og assosierte klasser definere sine egne funksjoner for å beregne lønn. Når en klasse inneholder en eller flere rent virtuelle funksjoner, kalles det en abstrakt klasse. Dette er fordi klasser med rene virtuelle funksjoner som ikke kan bli stedene.

C ++ grensesnitt

Siden abstrakte klasser ikke kan bli objekter, blir de kalt "grensesnitt". Grensesnitt er abstrakte klasser, ofte inneholder kun rene virtuelle funksjoner som fungerer som en mal for andre vanlige klasser. Så hvis den ansatte eksempel inneholder kun rene virtuelle funksjoner, så programmerer design Manager og Associate klasser til å arve fra Medarbeider som et grensesnitt, som betyr at de må gjennomføre de rene virtuelle funksjoner i Employee klassen. Mens ISO C ++ standarden ikke inneholder en bestemt "grensesnitt" søkeord, Microsofts implementering av C ++ gjør (Kilde 3). Her er et eksempel for å illustrere dette forholdet.
klasse Employee {

offentlig:
virtuell int calcSalary () = 0; // Ren virtuell funksjon

privat:
int ID;
};

klasse Associate: public Employee {

offentlig:
int calcSalary () {// Associate implementere calcSalary eller får en feilmelding
/ Code /
}
};