? Objektorienterade programspråk språk såsom C + + ( " C Plus Plus " eller CPP ) följer ett paradigm för programplanering inriktad återanvända kod och bygga strukturella hierarkier i den koden . Utvecklare skapa klasser för att kapsla in data i funktionalitet i logiska delar . De gör också detta eftersom vissa tekniker i OOP , såsom arv , tillåta byggandet av mer komplexa klasser från enklare sådana . Utvecklare kan också styra hur klasser genomförs med hjälp av klasser designmall kallas " gränssnitt " eller " abstrakta klasser " som avgör hur andra programmerare använda dessa klasser . Objekt och Arv
När du skapar klasser och objekt för ett program i C + + , programmeraren ofta upptäcker att olika klasser kommer att överlappa varandra eller dela liknande funktionalitet . Hon har då två val : skriva funktionella koden för båda klasserna , eller skapa en " bas " klass med alla delade egenskaper och funktioner i dessa klasser . Sedan de två klasser kan " inneboende " dessa egenskaper samtidigt lägga sina egna . Till exempel, om programmeraren skriver " Associate " och "chef" klasser för ett företag app , kan hon skapa en enda " Employee " klass som innehåller gemensamma funktioner och mellan medarbetare och chefer .
virtuella funktioner
basklass för någon annan klass kan innehålla definitioner om vilka klasser kan göra . och vilken information de innehåller . Så , kanske den Anställde , från exemplet innehåller en funktion för att beräkna lön som innehåller en särskild formel . Chefen och Associate klasser inneboende den funktionen , och alltså formeln . Däremot kan chefer och medarbetare kräver olika formel för att beräkna lön . I detta fall skulle basklassen innehålla en "virtuell "-funktion. Basklassen skulle definiera en standard beteende , men barnet klasserna kan då skapa sina egna formler och funktioner vid behov .
Abstrakta klasser
sidan virtuella funktioner , finns det "rena" virtuella funktioner . Rena virtuella funktioner innehåller inte en funktion definition . Snarare definierar de helt enkelt en funktion namn . Så , till exempel , skulle löneberäkning funktion i basklassen Employee deklareras som virtuellt utan en definition . Då skulle chefen och Associate klasser definiera sina egna funktioner för att beräkna lön . När en klass innehåller en eller flera rent virtuella funktioner , kallas det en abstrakt klass . Detta beror på att klasser med rena virtuella funktioner inte kan bli föremål . Finns
C + + Gränssnitt
Eftersom abstrakta klasser inte kan bli föremål , kallas de " gränssnitt ". Gränssnitt abstrakta klasser , ofta innehållande bara rena virtuella funktioner som fungerar som en mall för andra gemensamma klasser. Så om arbetstagaren exemplet innehåller endast rena virtuella funktioner , då programmeraren designar Manager och associerade klasser ärver från anställd som ett gränssnitt , vilket innebär att de måste genomföra de rena virtuella funktioner Employee klassen . Medan ISO C + + standard inte innehåller en särskild " interface " nyckelordet , Microsofts genomförandet av C + + gör ( källa 3 ) . Här är ett exempel för att illustrera detta relationship.class Employee {
allmänheten : virtual int calcSalary ( ) = 0; //ren virtuell funktion
privat : int ID ; } ;
class Närstående : public Employee {
allmänheten : int calcSalary ( ) { //Associate * måste * genomföra calcSalary eller får ett felmeddelande /* kod * /} };