Yeni başlayanlar üçün obyekt yönümlü proqramlaşdırma.

H.Cavid
Pragmatech
Published in
4 min readAug 14, 2020

Bu məqalədə object oriented programming(OOP) və yaxud digər adı ilə obyekt yönümlü proqramlaşdırma(OYP) onun prinsipləri və yaranma səbəblərindən danişacam.Məqalə 4 hissədən ibarət olacaq.

1.OYP(OOP)-nın yaranma səbəbləri.

Obyekt yönümlü proqramlaşdırmanın mahiyyətini başa düşmək üçün tarixə qısa səyahət etmək faydalı olardı. Ötən əsrin 50–70-ci illərində kompüterlər ağlagəlməz dərəcədə baha idi. Onların qiymətləri ilə müqayisədə proqramçıların əmək haqqı çox cüzi idi. Bu münasibət proqramlaşdırmaya da təsir göstərirdi. O illər proqramların yazılmasına və sazlanmasına proqramçının nə qədər vaxt sərf etməsi o qədər də önəmli deyildi. Əsas məsələ kompüteri çox yükləməmək idi, çünki kompüterin hər dəqiqəsi böyük məbləğlərlə hesablanırdı. Hər şey 80-ci illərin ortalarında fərdi kompüterlərin meydana çıxması ilə dəyişdi. Kompüterlərin kütləvi istehsalı onlar üçün çoxlu sayda proqramların olmasını da tələb edirdi. Bu zaman aydın oldu ki, peşəkar proqramçının bir aylıq işinin dəyəri onun kompüterinin qiymətindən aşağı deyil. Bundan əlave kodların qarışıq və səliqəsiz olması isə lahiyələrin gecikməsinə və inkişaf etdirilməsinin çətinliyinə gətirib çıxarırdı. Onda insanlar proqramçıların vaxtını hədər yerə sərf etməmək üçün proqramlaşdırma mühitinin özünü təkmilləşdirməyə başladılar.Beləliklə OYP(OOP)-nın yaranması ilə proqramçılar həm vaxtlarına qənaət etdilər həm də kodların kompüter və proqramçılar tərəfindən oxunmasını asanlaşdırdılar.

2.Hansı proqramlaşdırma dilləri OYP(OOP)-nı dəstəkləyir?

Bu suala cavab vermək üçün bəzi texniki biliklərə sahib olmalıyıq.Bu haqda qısa danışacam.Hər bir proqramlaşdırma dili 2 əsas proqramlaşdırma pradigması ilə yaradılır.Bunlar inperative və declarative proqramlasdirma paradigmalarıdır.Aşagıdakı şəkildə bunu daha aydın şəkildə görəcəyik.

Şəkil 1. Proqramlaşdırma paradigmaları.

Şəkil 1-dən göründüyü kimi OYP(OOP) imperative paradiqmanın əsas paradigmalarından biridi və imperative paradigmani dəstəkləyən proqramlaşdırma dilini öyrənən proqramçı OYP(OOP)-nın dərinliklərini bilməlidir.

OYP(OOP) paradigmasını dəstəkləyən dillərə misal olaraq JAVA,C,C++,C#,PYTHON-ı misal göstərmək olar.

3.OYP(OOP)-nın əsas prinsipləri:

Obyektlər arasında münasibəti təmin edən paradiqma OYP(OOP)adlanır.OYP(OOP)haqqında danışarkən bəzi anlayışları bilmək mütləqdir.Bunlardan biri sinif anlayışıdır.Sinif-xüsusiyyetlər(properties) və metodlardan(methods)ibarət şablondur.Siniflər proqram işlədiyi müddətcə heç bir dəyişikliyə məruz qalmırlar.Digər anlayış isə obyekt anlayışıdır.Obyekt-sinifin bir nüsxəsidir.Sinifdən fərqli olaraq obyektlər yalnız proqram işləyən müddətdə mövcud olurlar və dəyişikliyə məruz qalırlar.

OYP(OOP)-nın 4 əsas prinsipi vardır.Bunlar aşağıdakılardır:

1.Encapsulation

2.Abstraction

3.Inheritance

4.Polymorphism

Encapsulation- məlumat və bu məlumat üzərində yerinə yetirilməli olan əməliyyatların vahid tərkib formasında birləşməsi nəzərdə tutulur. Yəni verilmiş məlumatlar üzərində aparılmalı olan əməliyyatları tapmaq üzün başqa heç yeri axtarmalı deyilsən.Başqa sözlə desək hər hansısa bir məlumatın kimlərin,harada istifadə edəcəyinə yalnız sən qərar verirsən.Bunlar giris modifikatorları(acces modifiers) sayəsində baş verir.Əsas giriş modifikatorları aşağıdakılardır:

Public- public kimi elan olunan həddlərə proqramın istənilən yerindən müraciət etmək olar. Eləcə də digər siniflərdən.

Private- OYP(OOP)texnologiyasına görə sinfin məlumat həddləri yalnız sinfin öz funksiyaları üçün əlçatan olmalıdır. Proqramın digər yerlərindən sinfin məlumat həddlərinə birbaşa müraciət olunması doğru hesab edilmir. Müraciət və dəyişiklik yalnız bunun üçün xüsusi nəzərdə tutulmuş funksiya həddləri vastəsilə həyata keçirilir.Beləliklə,sinifin hər hansı məlumat və ya funksiya həddini proqramın digər hissələrindən gizlətmək üçün private tənzimləyicisindən istifadə olunur.

Protected-bu sinfdən olan melumata oldugu sinifdən və bu sinifinin alt siniflərindan giriş mümkündür.

Abstraction- Abstraksiya işin detalların bizdən gizlədərək yalnız bizim istifadə etdiklərimizi göstərməkdir.Bir növ məlumata məsuliyyətlilik verir.Məsələn mən sinifə daxil olub adın nədir? sualını versəm dəqiq cavab ala bilmiyəcəm,amma bir şəxsin özündən soruşsam dəqiq cavab əldə edə biləcəm, və yaxud mən telefonda hansısa nömrəni yığıb yes düyməsinə basıram. Zəng çalınır, amma yes düyməsin basdıqdan sonra hansı proseslərin getdiyi, nə cür getdiyi mənə aydın deyil. Bunlar hamısı alt fonda yerinə yetirilir, mənə ancaq lazımlı nəticə təqdim olunur.

Inheritance- Varislik müəyyən tərtib olunmuş kodun bir daha təkrar yazılmasının qarşısını almaq üçündür.Meselen Samsung 4 çıxır, sonra samsung 5-in üzərində işləyəndə daha hər şeyi 0-dan başlamırlar, samsung 4-dən olan funksiyaları hazır götürüb daha da təkmilləşdirirlər.

Polymorphism- Eyni bir obyektin vəziyyətdən asılı olaraq özünü müxtəlif cür aparmasıdır, çoxformalı deməkdir. Bunu eyni adlı əməliyyatın vəziyyətdən asılı olaraq müxtəlif formalarda icra olunması kimi başa düşmək lazımdır. Yəni tutaq işin adı nəqliyyat vastəsini idarə etməkdir. Tutaq ki, elə sürücü var ki, həm motosiklet, həm yük maşını, həm kater və eləcə də təyyarəni idarə edə bilir. Bu sürücüdə bu nəqliyyat vastələrinin hər birini idarəetmə bacarığı var. Lakin motoskilet idarəetmək lazım olanda o özünü motosiklet sürücüsü, təyyarə idarə etmək lazım olanda o özünü pilot v.s. kimi aparır. Yəni eyni bir iş — nəqliyyat vastəsinin idarə edilməsi işi müxtəlif formalarda yerinə yetirilir. Konkret hansı formanın seçilməsi isə vəziyyətə görə müəyyən olunur.

4.OYP(OOP)-a kod nümunəsi

C# proqramlasdırma dilindən aşağıdakı kod nümunəsinə baxaq.

Ümid edirəmki yeni başlayanlar üçün azda olsa ilkin anlayış formalaşdıra bildim.Gələcək məqalələrimdə PYTHON üzərində daha geniş şəkildə izah edəcəm.Hər kəsə uğurlar!!!

MƏNBƏLƏR:

https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/

https://www.youtube.com/watch?v=7vUlrVLOxZA

https://medium.com/javascript-in-plain-english/oop-concepts-for-interviews-f1f0136a7d4

--

--