PYTON “OOP”

Mehman Mirzeyev
Pragmatech
Published in
5 min readAug 6, 2021

İlk öncə Python haqqında qısa məlumat vermək istəyirəm. Python dinamik dildir , C dilləri ailəsinə daxildir. Python C# , C++ , Java kimi dillərdən fərqli olaraq daha az addımda kodlama etməyə kömək edir. Yəni hər hansı bir məsələni C++ və ya digər dillərdə məsələn 50 sətir kod yazırıqsa Python da kod sətiri nisbətən az olur. Niyə Python diyə soruşsalar ona bele bir cavab verə bilirəm ;

1.Məlumt çox olması — Python çox məqsədli dildir. Buna görədə istilənən mövzuda qaynaq tapa bilərsiz.

2.Anlaşıqlı olması — Sintaksı sadə bir dildir. Digər dillərə nisbəti daha tez və asan öyrənilə bilən dildi.

3. Open source (Açıq qaynaq) — Bu dil haqqda istəlinən kitabxana və paketlər ödənişsizdir.

Əslində səbəb çoxdu özümə görə əsas səbəbləri bölüşdüm.

Python OOP nədir ? onun haqqnda sizə məlumat verəcəm.

. OOP-ingilis dilində (Object Oriented Programming) mənası Obyekt Yönümlü Programlaşdırma deməkdir. Birinci olaraq “obyekt” nədir ona aydınlıq gətirək. Obyekt -Ətrafımızda gördüyümüz hər şeydir. Misal olaraq kitab, dəftər, qələm, avtomobil, insan və.s

Proglamlaşdırma isə xüsusiyyəti və hərəkəti(bir məqsəd üçün gördüyü iş) olan hər bir şey obyektdir.

OOP- Bir kod yazmağ məntiqidir. Ətrafəmızda gördüyümüz hər şeyin proqramlaşdırmaya uyğunlaşdırılmış halıdır. Yəni gördümüz hər şeyi proqlaşdırmada obyekt olaraq tanımlıyırıq.

OOP Məntiqi ;

1. Bir proqram üçün yazacağımız kod funksional olaraq əssa hissələrə ayırılır.

2. Həmin bu ayrımış hissələrin xüsusiyyəti və hərəkəti(bir məqsəd üçün gördüyü iş) tək tək tanımlanır.

3. Bu hissələr normalda əlaqəsiz olur. Ancaq bu hissələri biz birləşdirməklə sistemi qururuq.

Misal olaraq ;

OOP — Bu qatar və vaqon kimi düşünmək olar. Göründüyü kimi əslində bu vaqon bir-biri ilə əlaqəsizdi (hərəsi ayrı ayrı vaqondu) belede başa düşmək olar ki 3 nömrəli vaqonu burdan çıxarıb başqa qatara qoşa bilərik. Bu vaqonlar hamısı bir yerdə sistemi əmələ gətirir(yəni qatarı).

Başqa bir örnək verək;

Universitet İdarəetmə Sistemi yazmaq istiyirik deyək. Onu hissələrə ayıraq;

Hissələr : Tələbələr, Müəllimlər, Rəhbərlər, Fənnlər. İndi bu hissələri hərəkəti (bir məqsəd üçün gördüyü iş) təyin edək. Tələbələr üçün xüsusiyyətləri : ad, soyad, yaş, qrup, tələbənin semestr boyu aldığı qiymətlər və.s. Gördüyü işlər (hərəkət) məsələn aldığı bala görə ya imtahandan keçə və ya kəsilə bilər. Bu şəkildə hər bir obyekt ayrı ayrı tanımlıyacəyıq. Eyni şəkildə məsələn Müəllim üçündə yaza bilərik , xüsusiyyətlər- ad, soyad ,yaş, şəxsi məlumatları, peşəsi ilə bağlı məlumatlar (məsələn hansı fənni tədris edir kimi) misal göstərmək olar. Müəlilim hərəkətlərinə məsələn desək tələbənin aldığı balları sistemə yazmaq və.s .Yəni biz hər bir şeyi bele parçalara ayırıb , sistem halına gətirməliyik.

OOP əsas anlayışları;

1.Class (sinif və ya klass)

2.Variable (dəyişən)

3.Function (Funksiya)

4. Object (obyekt)

Class — Yuxarıda qeyd etdiyimiz hissələr ayırdığımız şeyləri proqramlaşdırma içində

bu class anlayışında istifadə edib quracıyıq . Yəni məssələn yuxarıda yazdığımız Tələbə və Müəllim hərəsi ayrı ayrı bir class adlanır.

Variable — Obyekt aid xüsusiyyətlərin class içində tanımlanması üçün istifadə olunur.

Məsələn Tələbə classını anlaiz edək ;

Bu class içində Tələbələrə aid ad, soyad, qrup, yaş və.s kimi dəyərlər dəyişkənlə verilir.

Funcition — Obyektlərə hərəkəti(bir məqsəd üçün gördüyü iş) class -ın içində tanımlamaq üçün istifadə olunur.

Burdada yenə Tələbə classına baxaq . Aldığı bala görə ya imtahandan keçə və ya kəsilə bilər. Bu hərəkət məsələn funksiya vaistəsi ilə tanımlanır.

Object — Xüsusiyyətləri və hərəkəti tanımladığımız yəni class adlandırdığımız anlayış ilə yaradılan hər şey object adlanır.Yəni object class -dan yaranır.

Məsələn yuxarıda qeyd ediyimiz Tələbə class -nı istifadə edərək başqa tələbə adına əlavə edə bilərik. Yəni məsələn Həsən Və Akif üçün bu classı istifadə edib object yaradırıq.

Başqa bir misal verək ;

Avtomobil adında bir class yaradırıq. Onun xüsusiyyət (marka, rəng, istehsal ili, yanacaq növü) və gördüyü işi (işləməyi ,sürət yığmağı, tormuz verməyi) tanımladıq .Bu oldu class.

Bu avtomobil adında class dan başqa avtomobillər üçün yəni (bu dəyərləri daşıyan) anlayış olan obyekt .Yəni bu class -ın xüsusiyyətlərində məsələn “BMW” markalı (obyekt) avtomobilə aid edilir. Bir class -dan bir neçə obyekt yaratmış oluruq.

Bir sözlə ;

BMW obyekti

1.rəng : ağ

2. istehsal ili :2013

3. yanacaq növü : benzin

gördüyü işi (işləməyi ,sürət yığmağı, tormuz verməyi) Və.s bura aiddir (özəliklə bu məsələn avtomobilin gördüyü iş class aiddir).Ondan yaranan isə obyekt.

OOP prinsipləri;

1.Encapsulation — Bəzi hallarda class -ın içində olan dəyişənlərin(variables) bir başa dəyişdirməmək lazım ola bilər . Bunu niyə edirik?

Ona görə edirik ki həmin dəyərin kimsə dəyişdirə bilməsin. Kənarda həmin dəyərə müdaxilə edilməsinin qarşısını almaq üçün bu prinsipdən(. encapsulation) istifadə edirik. olunur. Misal olaraq belə izah edim ;

İLk öncə BankAccount adında bir class yaratdım. Daha sonra Constructor yazdım içərisinə “Name” və “Money” olan dəyərlər mənimsətdim, normal proqramı işə saldıqda məlumatlar görünür və dəyişdirilə bilir . Yəni:

Biz eləcəyimiz bu dataları “private” etməkdir .Bunun üçün self -dən sonra tanımdağımız dəyərlərin qabağına “__” qoymaq kifayət edir. Gördüyünüz kimi xəta verəcək . Çünki artıq o data “private” oldu.

Burda money dəyərinin yanına “__” artırdığım üçün belə bir dəyər yoxdu xətasını çıxarır. İndi isə həmin dəyərləri görmək dəyişdirmək üçün “get, set” keyword istifadə edirik.

2. İnheritance(Miras)- Bu prinsip də tutaq ki bir class yaradırıq , içində dəyişkənlər, metodlar yazırıq. Başqa bir class yaradanda sonra əgər bu class istifadə edecəmsə yenidən eyni şeyləri yazmıram , inheritance edirəm . Bir növ bir qəlib hazırlayıb sora həmin qəlibdən başqa class da istifadə edirəm.İnheritance da iki fərqli class növü var parent(super) və child(sub).

Child class parent class -ın atributlarını istifadə edən alt class dır.

Burda bir transport adlı class yaratdıq bu class parent adlanır. Digər class olardan törəyir və eyni dəyərli alır. Çünki Transport class mənimsətmisik child class -a

Abstraction — Super(parent) Sub(child) class üçün şablon vəzifəsində işləyir yəni istifadə olunacaq funksiyaları özündə saxlayır. Bu prinspdə əsas qayda odu ki , Parent class heç bir şəkildə initilaize edilə biməz . Yəni həmin class -dan obyekt yarada bilmərəm. Abstraction class üçün birinci onu import etməliyik.

--

--