? Objektorienterte programmeringsspråk som C + + ( "C Plus Plus " eller CPP ) følger et paradigme for programmering rettet mot gjenbruk av kode og bygge strukturelle hierarkier i denne koden. Utviklere lage klasser for å kapsle inn data i funksjonalitet i logiske biter . De også gjøre dette fordi visse teknikker i OOP , som arv , tillate bygging av mer komplekse klasser fra enklere seg . Utviklere kan også kontrollere hvordan klassene er implementert ved hjelp av design mal 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 ofte oppdager 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 " Associate " og " manager " klasser for en virksomhet app , kan hun lage et enkelt "Employee " class som inneholder felles funksjonalitet og mellom medarbeidere og ledere.
Virtual Funksjoner
Base klassen for noen annen klasse kan inneholde definisjoner om hva klassene kan gjøre. og hvilken informasjon de inneholder . Så, kan den ansatte klassen fra eksempelet inneholder en funksjon for å beregne lønn som inneholder en bestemt formel . Manager og Associate klasser iboende som fungerer , og dermed formelen. Imidlertid kan ledere og medarbeidere krever annen formel for å beregne lønn. I dette tilfellet ville base klassen inneholde en "virtuell "-funksjon. Base klassen ville definere en standard oppførsel , men de underordnede klasser kan da lage sine egne formler og funksjoner om nødvendig .
Abstrakte klasser
Ved siden virtuell funksjoner, er det "rene" virtuelle funksjoner . Rene virtuelle funksjoner ikke inneholder en funksjon definisjon. Heller , de bare definere en funksjon navn. Så, for eksempel, ville lønnen beregning funksjon i basen klassen Ansatt bli erklært som virtuell uten en definisjon . Deretter ville de manager og førsteamanuensis 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 ikke kan bli stedene.
Bilder C + + Grensesnitt
Siden abstrakte klasser ikke kan bli objekter, kalles de " grensesnitt. " Grensesnitt er abstrakte klasser, ofte inneholder kun rene virtuelle funksjoner som fungerer som en mal for andre vanlige klasser . Så hvis Employee eksempel inneholder kun rene virtuelle funksjoner , så programmerer designer Manager og Associate klasser til å arve fra Employee som et grensesnitt , som betyr at de må gjennomføre de rene virtuelle funksjoner Employee klassen . Mens ISO C + + standard inneholder ikke en bestemt " grensesnitt " søkeord , Microsofts implementering av C + + gjør ( Kilde 3 ) . Her er et eksempel for å illustrere dette relationship.class Medarbeider {
public: virtuell int calcSalary ( ) = 0; //ren virtuell funksjon
private: int ID ;} ;
< p> klasse Associate : public ansatt {
public: int calcSalary ( ) { //førsteamanuensis * må * implementere calcSalary eller får en feilmelding /* code * /} };