Mündəricat[Gizlət][Göstər]
Tərtibatçılar arasında obyekt yönümlü proqramlaşdırma xeyli sayda izləyici cəlb etdi. Populyar kompüter dili Python da obyekt yönümlü paradiqmaya uyğundur.
OOP prinsiplərinin əsasını təşkil edən Python-da obyektlərin və siniflərin müəyyənləşdirilməsi ilə məşğul olur. “Python-da obyekt yönümlü proqramlaşdırma” mövzusunda bu dərslikdə siz Python siniflərini necə elan etməyi, onlardan obyektlər yaratmağı və dörd OOP texnikasından istifadə etməyi öyrənəcəksiniz.
Beləliklə, ilk növbədə.
Obyekt yönümlü proqramlaşdırma nədir?
Obyekt yönümlü proqramlaşdırmanın (OOP) əsas diqqəti “obyektlərin” yaradılmasıdır. Bir-biri ilə əlaqəli dəyişənlər və funksiyalar toplusu obyekti təşkil edir.
Bu dəyişənlərə tez-tez obyektin atributları, davranışlarına isə tez-tez funksiyaları deyilir. Bu elementlər tətbiqi daha effektiv və başa düşülən strukturla təmin edir. Avtomobil bir əşyanın nümunəsidir.
Əgər avtomobil bir əşya olsaydı, onun atributlarına rəngi, modeli, qiyməti, markası və s. kimi şeylər daxil olardı. Bundan əlavə, o, sürətləndirər, sürətini azaldar və dişliləri dəyişdirərdi.
Başqa bir nümunə: Əgər iti bir əşya kimi düşünsək, onda onun bəzi xüsusiyyətləri rəngi, cinsi, adı, çəkisi və s. ola bilər. O, hərəkət edir, hürər, oynayır və s.
O, obyektlər, gizlənmə, miras və s. kimi real dünya anlayışlarını proqramlaşdırmaya daxil etdiyi üçün obyekt yönümlü proqramlaşdırma yaxşı məlumdur. Bu, real dünya şəraitinə çox bənzədiyi üçün vizuallaşdırma daha sadələşdirilmişdir.
Obyekt yönümlü proqramlaşdırma anlayışları
Python-da siniflər və obyektlər
Bütün digər obyekt yönümlü dillər kimi, Python sizə obyektlər yaratmaq üçün siniflər dizayn etməyə imkan verir. Sətirlər, siyahılar, lüğətlər və digər obyektlər daxil olmaqla Python-da ən populyar məlumat növləri daxili siniflərdir.
Sinif, müəyyən bir növ obyekti təyin edən əlaqəli metodlar və nümunə dəyişənləri qrupudur. Sinif obyekt üçün model və ya şablon kimi görünə bilər. Bir sinfi təşkil edən dəyişənlər atributlar kimi tanınır.
Obyekt müəyyən edilmiş atributlar dəstinə malik olan sinifin üzvüdür. Buna görə eyni sinifdən istifadə edərək istənilən sayda obyekt yaradıla bilər.
Python sinifləri sinif sözündən istifadə etməklə müəyyən edilir, ondan sonra sinif adı və iki nöqtə qoyulur. Bir tutuquşu sinfinin təsviri ola bilər:
Burada biz class açar sözündən istifadə edərək boş sinif Parrot elan edirik. Siniflərdən nümunələr yaradırıq. Nümunə müəyyən bir sinifdən hazırlanmış xüsusi bir obyektdir. 'pass' tez-tez kod üçün stand-in kimi istifadə olunur, onun tətbiqindən bu an imtina edə bilərik. Biz “pass” açar sözündən istifadə etməklə Python kodunu xəta yaratmadan icra edə bilərik.
Bir sinfin nümunəsi obyekt (nümunə) ilə nəticələnir. Sinif yaradılarkən yalnız obyektin təsviri müəyyən edilir. Nəticədə heç bir yaddaş və ya RAM ayrılmır.
Bir tutuquşu sinfi obyektinin nümunəsi:
Obj bu instansiyada Parrot sinif obyektidir.
Tutuquşular haqqında spesifikliyi bildiyimizi deyək. İndi biz tutuquşu sinfini və onun obyektlərini necə yaratmağı nümayiş etdirəcəyik.
Xüsusi Metod ( __init__ )
İnit adlı metod hər Parrot obyektinin () malik olmalı olduğu atributları müəyyən edir. Yeni Parrot obyekti yarandıqda __init__ funksiyası obyektin xassələri daxilində təqdim etdiyimiz dəyərləri təyin etməklə obyektin ilkin vəziyyətini yaradır.
Beləliklə, sinfin hər bir yeni nümunəsi __init__() istifadə edərək işə salınır. __init__() istənilən sayda parametr qəbul edə bilsə də, self həmişə birinci parametrdir.
Aktiv sinif nümunəsinə istinad öz-arqumentə daxil edilir. Sinfin cari obyektinin ünvanı ilə əlaqə saxlayan və onun (obyektin) dəyişənlərinin məlumatlarına giriş imkanı verən self parametri bunu ifadə edir.
Məsələn 1
Yuxarıdakı kodda Parrot adlı bir sinif qurduq. Sonra xüsusiyyətlər müəyyən edilir. Bir şeyin xüsusiyyətləri onun xüsusiyyətləridir. Sinfin __init__ funksiyası bu xüsusiyyətlərin təyin olunduğu yerdir.
Bir obyekt yarandıqda, başlanğıc metodu əvvəlcə çağırılan metoddur. Sonra Parrot sinfinin nümunələri yaradılır. Bu nümunədə Blaze və Wonda yeni obyektlərimizə istinadlardır (dəyərlər). __class .species bizə sinif atributuna daxil olmaq imkanı verir.
Bir sinfin hər bir nümunəsi eyni xüsusiyyətlərə malikdir. Nümunə xüsusiyyətlərinə blaze.name və blaze.age istifadə edərək də daxil olmaq olar. Bununla belə, bir sinfin bütün nümunələri unikal nümunə atributlarına malikdir.
Məsələn 2
metodika
Sinfin gövdəsində müəyyən edilmiş funksiyalara metodlar deyilir. Onlar bir maddənin necə davranacağını müəyyən etmək üçün istifadə olunur.
İki üsul, oxumaq () və rəqs, yuxarıda qeyd olunan tətbiqdə () müəyyən edilmişdir. Onlar alov kimi bir nümunə obyektində çağırıldığı üçün bunlar nümunə metodları adlanır.
OOPS konsepsiyasının əsasları
Obyekt yönümlü proqramlaşdırmanın dörd əsas ideyası bunlardır:
- Miras
- Kapsülləşdirmə
- Polimorfizm
- Abstraksiya
Miras
İnsanlar tez-tez yeni doğulmuş uşaqlara valideynlərininkinə bənzəyən üz xüsusiyyətlərinə sahib olduqlarını və ya valideynlərindən müəyyən xüsusiyyətləri miras aldıqlarını söyləyirlər.
Ola bilsin ki, siz də valideynlərinizlə bəzi xüsusiyyətləri paylaşdığınızı müşahidə etmisiniz. Real dünya vəziyyəti mirasla da kifayət qədər oxşardır.
Lakin bu halda “valideyn sinifləri”nin xüsusiyyətləri “uşaq siniflərinə” ötürülür. Bu aspektlərə bu kontekstdə “xassələr” və “metodlar” deyilir.
Bir sinif miras kimi tanınan texnikadan istifadə edərək öz metodlarını və atributlarını başqa bir sinifdən əldə edə bilər. Varislik ana sinifin xassələrini qəbul edən uşaq sinfinin prosesidir.
misal:
Ana sinif İnsan yuxarıdakı misalda uşaq sinif Boy tərəfindən miras qalmışdır. Oğlan İnsandan miras qaldığı üçün biz Boy sinfinin nümunəsini yaratdıqda onun bütün metod və atributlarına daxil ola bilərik.
Oğlan sinfində schoolName adlı metod da müəyyən edilmişdir. Ana sinif obyekti schoolName metoduna daxil ola bilmir. Bununla belə, schoolName metodu uşaq sinif obyekti (Boy) yaratmaqla çağırıla bilər.
Kapsülləşdirmə
Dərslərlə işləyərkən və həssas verilənlərlə işləyərkən proqramdakı hər dəyişənə qlobal girişin verilməsi müdrik addım deyil.
Proqrama bu dəyişənlərin hər hansı birinə tam giriş imkanı vermədən, kapsulyasiya bizə lazımi dəyişənləri əldə etmək üçün bir mexanizm təmin edir.
Məqsəd üçün açıq şəkildə müəyyən edilmiş üsullar dəyişənlərdən məlumatları yeniləmək, redaktə etmək və ya silmək üçün istifadə edilə bilər. Bu proqramlaşdırma metodu məlumatların daxil edilməsi üzərində gücləndirilmiş təhlükəsizlik və nəzarət üstünlüklərinə malikdir.
Aşağıdakı nümayişdə dəyişənlərin nə qədər tez əldə edilə biləcəyinə baxın:
Polimorfizm
Tutaq ki, gözdən keçirmək üçün telefonunuzdan istifadə edirsiniz Instagram lentləri. Musiqiyə qulaq asmaq istəyi yarananda Spotify-a daxil oldunuz və sevimli mahnınızı ifa etməyə başladınız.
Bir müddət sonra sizə zəng gəldi, ona görə də ona cavab vermək üçün arxa planda etdiyiniz hər şeyi dayandırdınız. Dostunuz zəng etdi və onlara müəyyən bir şəxsin telefon nömrəsini yazmağınızı xahiş etdi.
Beləliklə, siz ona SMS vasitəsilə telefon nömrəsini göndərdiniz və tapşırıqlarınızı yerinə yetirdiniz. Nəsə götürmüsən? Yalnız bir cihazla - mobil telefonunuzla siz lentlər arasında gəzə, musiqi dinləyə, telefon zənglərini qəbul edə və edə və mesaj göndərə bilərsiniz.
Buna görə də, polimorfizm bununla müqayisə edilə bilər. Poly çoxsaylı, morf isə müxtəlif formaları bildirir. Buna görə də, bütövlükdə polimorfizm müxtəlif formaları olan bir şeyə aiddir.
Və ya vəziyyətdən asılı olaraq müxtəlif davranışlar nümayiş etdirə bilən “bir şey”. OOPS-də polimorfizm eyni adlı, lakin fərqli davranışları olan funksiyaları təsvir edir. Alternativ olaraq, eyni funksiya adına malik fərqli funksiya imzası (funksiyaya ötürülən parametrlər).
misal:
Burada biz dəyişən heyvandan Zebra və Dovşanın obyektləri arasında təkrarlamaq üçün onların müvafiq nümunə metodlarından istifadə edə bilərik. Nəticədə həm Zebranın, həm də Dovşanın davranışı (color() & eats()) burada heyvan adlı tək dəyişənlə təmsil olunur. Buna görə də polimorfizm qaydalarına riayət edir.
Abstraksiya
Bu məzmunu oxumaq üçün çox güman ki, noutbuk, telefon və ya planşetdən istifadə edirsiniz. Onu oxuyarkən, ehtimal ki, siz qeydlər aparırsınız, əsas hissələrin altını çəkirsiniz və ola bilsin ki, bəzi məlumatları şəxsi sənədlərinizdə saxlayırsınız.
Bunu oxuduğunuz zaman görə biləcəyiniz yeganə şey sizə göstərilən məlumatların olduğu "ekran"dır. Yazdığınız zaman sadəcə klaviaturanın düymələrini görürsünüz, ona görə də düyməni basmağın həmin sözün ekranda görünməsinə necə səbəb ola biləcəyi kimi daxili incəliklərdən narahat olmaq lazım deyil.
Alternativ olaraq, ekranınızdakı düyməni basmaqla yeni tabı necə işə sala bilərsiniz.
Buna görə də, bu vəziyyətdə müşahidə edə biləcəyimiz hər şey mücərrəddir. Biz yalnız onun yaratdığı nəticəni görə bilirik, daxili incəlikləri yox (bu bizim üçün önəmlidir).
Buna bənzər şəkildə, abstraksiya yalnız hər hansı bir tətbiqi və ya daxili detalları gizlətməklə hər şeyin sahib olduğu funksiyaları ortaya qoyur.
Abstraksiyanın əsas məqsədi insanların yalnız görməli olduqlarını görmələri üçün fon məlumatlarını və hər hansı kənar məlumatların tətbiqini gizlətməkdir. Bu kodun mürəkkəbliyini idarə etməyə kömək edir.
misal:
Burada nəqliyyat vasitəsi ilə bağlı mücərrəd sinif mövcuddur. Mücərrəd ABC sinfindən miras qaldığı üçün mücərrəddir. Mücərrəd metodlar müəyyən edilmədiyinə və ya boş qaldığına görə, Vehicle sinfində tərifi olmayan təkərlərin sayı adlanan mücərrəd metodu var.
Onlar metodun həyata keçirilməsini vermək üçün mücərrəd sinifləri miras alan sinifləri gözləyirlər.
OOPS konsepsiyalarının üstünlükləri
- İnkapsulyasiya etməklə yüksək təhlükəsizlik və məlumatların məxfiliyinə nail olunur.
- Eyni sinifin çoxlu polimorfik versiyalarına malik olmaqda çeviklik.
- Kod mürəkkəbliyinin yüksək səviyyəsi abstraksiya ilə azaldıldı.
- Bir problemi tapmaq üçün yüzlərlə kod sətirindən keçmək əvəzinə, proqramlaşdırmanın modulluğu sazlamağı asanlaşdırır.
- Kodun təkrar istifadəsi uşaq sinifinin ana sinif xüsusiyyətlərini miras alması ilə əlaqədardır.
- Problemin effektiv həlli ona görə mümkündür ki, biz hər bir mini problem üçün lazımi hərəkətləri edən siniflər yaradırıq. Aşağıdakı problemi daha tez həll etmək olar, çünki biz həmin sinifləri təkrar istifadə edə bilərik.
Nəticə
Sonda biz hazırda ən isti proqramlaşdırma paradiqması olan Python-da OOPS ideyaları haqqında öyrəndik.
Bunu oxuduqdan sonra, OOPS paradiqmasının tamamilə siniflər və obyektlər ideyası ilə məşğul olduğunu başa düşməlisiniz. və inkapsulyasiya, polimorfizm, irsiyyət və abstraksiya kimi OOPS anlayışları.
Cavab yaz