Inheritance (miras alma)

Aydan Samedova
Pragmatech
Published in
3 min readSep 8, 2020

Qeyd : Bu məqaləni oxumazdan əvvəl obyekt yönümlü proqramlaşdırma barədə (OOP — Object-oriented programming) araşdırma aparmağınız məsləhətdir .

OOP, 1960-cı illərdən bəri proqram dünyasını təsir edən bir metodikadır. 1970-ci ildən bəri inkişaf etmiş bir çox dildə OOP dəstəyi var. OOP, yaradıldığı günə qədər davam edən proqramlaşdırma məntiqini əsaslı şəkildə dəyişdirdi. OOP-nin 4 prinsipi -encapsulation, abstraction, polymorphism, inheritancedir. Bu məqalədə inheritance(miras alma) və onun miras növləri haqqında danışacağıq.

İnheritance nədir ?

İnsanın şəxs olması ümumi baxışdır lakin həmin şəxsin işçi müştəri yaxud tələbə olması onun fərdi özəlliyidir.

Şəxsdən tələbəyə, işçiyə, müştəriyə münasibət ‘specialization’ (özəllik) adlanır. Əksinə, hər bir tələbə, işçi, müştəri bir insandır, buna ümumiləşdirmə deyilir. Bu UML (Unified Modeling Language-Vahid modelləşdirmə dili) konvensiyası kimi əsas sinfə doğru bir ox istifadə edirik.

Miras almanı kod üzərində anlamağa çalışaq. İki sinif (class) yaradırıq birincini insan sinifi, ikincini isə işçi sinifi adlandıraq :

Gördüyünüz kimi siniflərimiz yarandı və göndərdiyimiz dəyəri bizə geri qaytardı. Lakin burada ciddi bir prinsip pozulmuş olur- bu eyni kodların təkrarlanmasıdır. Eyni kodları yazmaq həm yorucudur həm də qeyri-professionaldır. Təkrarın qarşısını almaq üçün inheritance prinsipindən istifadə edək :

Artıq biz yuxarıda yazdığımız koddan fərqli olaraq işçi sinifində insan sinifindəki parametrləri təkrarlamırıq, insan sinifindən “name” və “surname” atributlarını miras alaraq təkrarın qarşısını almış olduq və şəxs obyektimizi yaratdıq. Bu zaman şəxs obyektinə insan sinifindəki “name” “surname” və özünün yaratdığı “vezife” atributuna və show() metoduna sahib olur ki, bunlara sinif elementləri (class memberler) deyilir. Diqqətlə baxsanız görəcəksiniz ki, bizim işçi sinfimizdə “name” ,“surname” atributları yoxdur biz “ad” “soyad” qabımıza insan sinfindən aldığımız “name” ,“surname” atributları ilə əvəz edərək nəticə əldə etmişik.

Miras aldığımız sinfə baza sinif( base class) miras götürən sinfə isə əldə edilən sinif (derived class) adlandırılır.

Override metodu .

Bir alt sinif, üst sinifdəki bir Python metodunun funksiyasını dəyişdirə bilər. Bunu yenidən təyin etməklə edir. Base sinfindeki metodu derived sinifinə götürüb dəyişdirmək məsələn yuxarıda yazdığımız kodlarda derived sinifindəki show metodu base sinifindəki show metodunu overrride edir. Şəkil üzərində bir daha diqqət yetirək :

Overload metodu .

Overlaoding, inheritance sərhədlərində istifadə edildikdə qarışıqlıq yarada bilər. Həddindən artıq istifadə edildikdə, overloading funksiyaları idarə etmək çətin olur. Tək bir metod və ya funksiya nəzərə alınaraq parametrlərin sayı sizin tərəfinizdən təyin edilə bilər. Eyni metodu müxtəlif yollarla çağırma prosesinə overload deyilir.

İnheritance prinsipi bizə vaxt, zəhmət və yaddaş baxımından kömək edir . Məqalədə Pythonın inheritance sintaksisi, overload,override metodları ilə tanış olduq.

MƏNBƏLƏR :

--

--