Principiul polimorfismului

Descriere: Conceptul de moștenire, considerat în cursul precedent, permite utilizarea metodelor și datelor din clasele de bază, dar există două tipuri de moștenire - mostenire statică și dinamică (legarea statică și dinamică a metodelor).







Mărime fișier: 41,49 KB

Lucrarea a fost descărcată: 3 persoane.

Dacă această lucrare nu vă convine în partea de jos a paginii, există o listă de lucrări similare. De asemenea, puteți utiliza butonul de căutare

Curs 10 PRINCIPIUL POLIMORFISMULUI

10.1 Conceptul de polimorfism

Conceptul de moștenire, considerat în cursul precedent, permite utilizarea metodelor și datelor din clasele de bază, dar există două tipuri de moștenire # 150; moștenire statică și dinamică (legarea statică și dinamică a metodelor).

Moștenirea statică este o moștenire, toate legăturile care se formează în timpul compilării programului și sunt de fapt definite în structura descrierii clasei în sine.

Moștenirea dinamică și proprietatea asociată a polimorfismului sugerează că anumite relații se formează în timpul executării programului.

Polimorfismul este varietatea formelor de implementare a acelorași metode în lanțul claselor moștenite.

Proprietatea polimorfismului este implementată folosind metode virtuale speciale și așa-numite clase de bază abstracte.

Luați în considerare conceptul de clase de bază abstract.

Pentru a obține beneficiile moștenirii de clasă, dezvoltatorii OOP au început să creeze clase de bază care includ toate metodele posibile de prelucrare a datelor dintr-un anumit set de obiecte, dar, în același timp, clasele de bază, de regulă, nu au inclus elemente de date.

De exemplu, atunci când creați o clasă de bază "forme geometrice", puteți include metode pentru găsirea zonei sau volumului. Firește, dacă clasa derivată este o clasă de puncte sau un segment de linie, atunci astfel de metode sunt lipsite de sens pentru aceste obiecte.







Clasele de bază pentru care crearea obiectelor este imposibilă sau nu are sens, au început să fie numite clase de bază abstracte. Clasele de bază abstractă servesc doar pentru a descendenților. De regulă, în ele sunt fixate doar metode, pe care fiecare descendent o va implementa în felul propriu. Metode similare de clase de bază abstractă sunt concepute pentru inexistente # 150; elementele de date virtuale (adică elementele de date ale claselor viitoare din lanțul moștenirii).

Metodele proiectate pentru elementele de date virtuale inexistente ale claselor viitoare din lanțul moștenirii au început să se numească metode virtuale.

Pentru a denumi metode virtuale în C #, se folosește o instrucțiune specială (termen special # 150; virtual), ceea ce înseamnă că metoda este virtuală. De exemplu:

virtual public dublu ploc ()

În același timp, în timpul executării programului, se adaugă un indicator suplimentar la tabela VMT creată fiecărui obiect creat.

În cazul în care clasa derivată are propria punerea în aplicare a unei metode virtuale cu același nume, în ea, această metodă ar trebui să fie declarată ca un substitut sau suprapunere suprascrie atribut metoda. De exemplu,

suprascrie dublu ploc public ()

Nu este necesară redefinirea metodei virtuale în fiecare dintre clasele derivate. Dacă efectuează acțiunile care satisfac clasa derivată, atunci metoda este pur și simplu moștenită.

O metodă virtuală de înlocuire trebuie să aibă același set de parametri ca metoda de clasă de bază cu același nume.

Principiul polimorfismului se bazează pe "suprapunerea" metodelor virtuale ale clasei de bază abstractă prin înlocuirea metodelor. În acest caz, fiecare clasă derivată poate avea propria sa formă individuală de implementare a metodelor virtuale sau substituite moștenite.

Proprietatea polimorfismului # 150; este o oportunitate pentru obiectele de diferite clase legate de moștenire să reacționeze diferit atunci când se referă la aceeași funcție (după nume) a clasei de bază.

Polimorfismul, în greacă, înseamnă "multe forme", care în acest caz înseamnă "un apel # 151; multe metode. "

În descrierea claselor de bază, se recomandă ca metodele virtuale să fie definite ca metode care trebuie implementate diferit în clasele derivate. Dacă metoda este aceeași în toate clasele ierarhiei, este mai bine să o definiți ca o metodă normală.

10.2 Exemplu de metode statice de moștenire

Dezvoltăm un lanț de clase moștenite de cele mai simple figuri geometrice de bază, un punct și un cerc.

Ca bază, luăm o clasă care nu are câmpuri și conține doar o funcție virtuală pentru calculul zonei și o "funcție pur virtuală" pentru tipărire.

Exemplu de moștenire statică # 150; creare obiect normală, atribuirea de câmpuri de date (sau coordonatele coordonatele punctului centrului cercului și raza) a unor valori aleatoare în intervalul de la 0 la 100 și imprima aceste valori.

Codul sursă al programului:







Articole similare

Trimiteți-le prietenilor: