Clasa de moștenire în c

Moștenirea evită duplicarea inutilă a codului atunci când scrieți clase. Să baza de date sau de universitate și trebuie să stocheze informații despre toți elevii și profesorii. Să furnizeze toate datele într-o singură clasă nu funcționează, pentru că avem nevoie pentru a stoca date care nu sunt aplicabile pentru profesori, și vice-versa.

Crearea unei clase de bază

Pentru a rezolva această problemă, creați un om clasă de bază. care va descrie modelul uman. Acesta va stoca numele, prenumele și patronimicul.

Creați fișier human.h:

Moștenire din clasa de bază

Acum, creați o nouă clasă de elev. care va fi succesorul clasei umane. Puneți-l în fișierul student.h.

Funcția get_average_score calculează media tuturor evaluărilor elevilor. Toate proprietățile publice și metode de clasă umane vor fi disponibile în clasa de student.

constructorul clasei de baza

Pentru a inițializa constructorul clasei părinte (în cazul nostru - este păstrarea numele, prenumele și patronimicul elevului), utilizați următoarea sintaxă:

În constructor vom trece inițialele persoanei umane, care sunt stocate în instanță. Pentru clasa de elevi. trebuie să cerem mai mult și o listă de evaluări studențești. Prin urmare, constructorul ia elevilor toate argumentele clasei de baza constructor, și argumente suplimentare pentru extinderea funcționalității:

Listă de evaluările elevilor sunt stocate în vectorul.

Crearea unui obiect de clasa Student

Am implementa interfața cu utilizatorul pentru a lucra cu clasa de student.

În acest exemplu, am scris un program care creează un obiect de clasa Student. menținându-l în numele, prenumele, numele său tată și o listă de estimări.

După inițializarea obiectului, timpul pentru afișarea numele complet al studentului, cu ajutorul funcției get_full_name. Această caracteristică a fost moștenită de la clasa de baza umane.

Programul apoi vychisliyaet scor mediu de student și îl afișează pe ecran. Aceasta se ocupă funcția get_average_score. am descris în cadrul clasei de student.

Am implementat unele funcționalități la baza noastră de date instituții (desigur că exagerez când funcționează ca declarații serioase despre baza de date reale :)

Crearea unui profesor de clasă derivată

Avem nevoie de a crea o altă clasă, în care pentru a stoca datele profesorilor. Să dăm un nume - profesor. După cum știți, nu vom descrie toate metodele din această clasă de la zero, ci pur și simplu moștenesc din clasa umană. Apoi, nu trebuie să pună în aplicare un nume de stocare, numele și patronimicul profesorului. Este deja în clasa de bază umană.

Creați fișier teacher.h:

În profesorul de clasă are o nouă caracteristică - numărul de ore de formare, instructorul alocat pe unitatea de timp (termen). Restul funcționalității este moștenită de la clasa de baza umane. Dacă am scris de la zero, același cod s-ar fi întâmplat de multe ori mai mult, iar sprijinul acordat ar fi complicat în mod considerabil.

Crearea unui obiect de clasa profesor

Schimbarea conținutul fișierului main.cpp. pentru a testa profesorul de clasă.

Dacă instalarea programului a avut loc fără erori, programul de lucru, rezultatul va fi:

În același mod în care se poate crea o clasă care va conține personalul de serviciu de date sau a personalului de conducere. Moștenirea este utilizat atunci când fiecare grup de obiecte au parametri comuni, dar pentru fiecare dintre aceste grupuri au nevoie pentru a stoca mai multe date personalizate.

De asemenea, putem crea o clasă care va fi descrie cursurile de student corespondență. Aceasta ne-ar fi moștenit de la clasa de student. adăugând orice informații suplimentare.

Clasa umană, puteți adăuga mai multe caracteristici care va descrie datele disponibile oricărei persoane. De exemplu, numărul pașaportului, data nașterii, domiciliul și locul de reședință.

Această abordare permite de mai multe ori pentru a reduce cod duplicarea în proiecte reale, și să cerșească-l sprijin.

Când trebuie să utilizați constructor

În cazul în care clasa are o mulțime de proprietăți - acestea nu sunt stabilite în mod necesar în constructor. Pentru a salva proprietățile clasei selectate folosind set-funcție. De exemplu, pentru a salva numărul pașaportului, puteți crea o metodă set_passport_number publică (număr std :: string). care va avea valoarea proprietăților și salvați-l într-un obiect printr-o variabilă acest lucru.