obyekt yönümlü proqramlaşdırma
DESCRIPTION
TRANSCRIPT
![Page 1: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/1.jpg)
Obyekt yönümlü proqramlaşdırma
Samir HəsənovOrient İTM
![Page 2: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/2.jpg)
Məzmun
• OOP nədir? Ümumi məlumat• Sinif, obyekt, konstruktor və metod anlayışı• OOP əsas konseptləri• İnkapsulyasiya (Encapsulation)• Varislik (İnheritance)• Polimorfizm (Polymorphism)• Sual-cavab
![Page 3: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/3.jpg)
OOP nədir?
• Proqramlaşdırma paradiqması• 1950-1960 illərdə MİT-də “obyekt”
anlayışı• Bütün hissələr obyekt və onların bir-biri
ilə olan əlaqəsindən ibarətdir• Prosedur proqramlaşdırmadan üstün
cəhətləri• Yazılan kodun təkrar istifadə olunması• Böyük həcmdə kodun asan idarə
olunması
![Page 4: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/4.jpg)
Obyekt yönümlü proqramlaşdırma dilləri
![Page 5: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/5.jpg)
Obyekt ??
![Page 6: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/6.jpg)
Sinif, Obyekt, Konstruktor və Metod
![Page 7: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/7.jpg)
Sinif və Obyekt
![Page 8: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/8.jpg)
Sinif, Obyekt və Konstruktor
![Page 9: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/9.jpg)
Metod
![Page 10: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/10.jpg)
Metod Overload və Override
![Page 11: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/11.jpg)
Metod Overloading• Eyni sinif daxilində eyni adlı və qəbul etdiyi
arqumentlərin sayı və tipi eyni olan birdən çox metod yaratmaq kompilyasiya səhvi ilə nəticələnir. Belə ki, kompilyator yazılan metodları hansı xassəsinə görə ayıracağını təyin edə bilmir.
![Page 12: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/12.jpg)
Metod Overloading• Kompilyator metodları
ayırmaq üçün onların adlarına, qəbul etdiyi arqument saylarına və arqumentlərin tiplərinə (ardıcıllıqla) baxır. Metodun qaytardığı tip kompilyator tərəfindən yoxlanılmır.
• Sinif daxilində eyni adlı, lakin qəbul etdiyi arqumentlərin sayı və ya tipi fərqli bir neçə metod yarada bilərik. Bu üsul metod overloading adlanır.
![Page 13: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/13.jpg)
Metod Overriding• Metodların override olunması prinsipinin izahı
polimorfizm bölümündə verilmişdir.
![Page 14: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/14.jpg)
OOP əsas 3 konsepti
• İnkapsulyasiya (Encapsulation)• Varislik (İnheritance)• Polimorfizm (Polymorphism)
![Page 15: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/15.jpg)
İnkapsulyasiya (Encapsulation)
![Page 16: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/16.jpg)
İnkapsulyasiya (Encapsulation)• Məlumat gizlətmə və ya “Qara qutu” anlayışı
• İnkapsulyasiya sinifin dəyişənlərini “private” göstərməklə digər siniflərdən onlara birbaşa əlaqənin qarşısını almaq prosesinə deyilir. Bu zaman sinif dəyişənlərinə müraciət birbaşa deyil, yalnız “public” nişanlanmış metodlar vasitəsilə həyata keçirilir.
![Page 17: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/17.jpg)
İnkapsulyasiya (Encapsulation)İnkapsulyasiya olunmamış İnkapsulyasiya olunmuş
![Page 18: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/18.jpg)
İnkapsulyasiyanın faydaları
• Sinif dəyişənlərinə birbaşa əlaqə olmadığından bu dəyişənlər ”read-only” və ya “write-only” kimi istifadə oluna bilər
• Sinif öz daxili dəyişənləri üzərində tam idarəyə malik olur. Belə ki, dəyişənlərə olan müraciət yalnız metodlar vasitəsilə olduğundan, bu məlumatın nə tip və necə saxlanılacağına metod daxilində tam nəzarət edə bilərik.
• Sinifdən istifadə edən digər istifadəçilər dəyişənlərin necə saxlanıldığı haqqda xəbərsiz olurlar. Hətta gələcəkdə proqramçı tərəfindən dəyişənlərin tipi dəyişilərsə, istifadəçilərin öz kodunu dəyişməyə ehtiyac olmur.
![Page 19: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/19.jpg)
Varislik (İnheritance)
![Page 20: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/20.jpg)
Varislik (İnheritance)• Üst sinifdən alınan daha konkret sinif “subclass” adlanır• Bu əlaqədə daha abstrakt olan üst sinif isə “superclass”
adlanır.• Java proqramlaşdırma dilində Object sinifi varislik
ierarxiyasının ən üst pilləsində durur və bütün digər siniflərin superclass-ı sayılır.
• Java proqramlaşdırma dilində Object sinfindən başqa bütün siniflər birbaşa əlaqə ilə yalnız bir sinifdən törəmə sayılır. Javada birbaşa bir neçə sinifdən varisliyə icazə verilmir.
• Bir sinif digər birindən törəyir, digər sinif öz növbəsində başqa sinifdən törəyir, ən üst sinif isə Object sinfindən törəmiş olur. Beləcə varislik ierarxiyası alınır.
![Page 21: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/21.jpg)
Varislik (İnheritance) Subclass-da nə edə bilərik?• Keçid modifikatorlarından asılı olaraq superclass-dan
alınma sinif dəyişənləri ilə birbaşa əlaqə yarada bilərik• Superclass-da olan hər hansı dəyişən ilə eyni adlı
dəyişən təyin edə bilərik, beləliklə superclass-dakı dəyişəni gizləmiş olarıq (məsləhət görülmür)
• Superclass-da olmayan yeni dəyişənlər təyin etməklə sinfimizi daha konkretləşdirə bilərik
• Superclass-dan alınma metodlara birbaşa müraciət edə bilərik
![Page 22: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/22.jpg)
Varislik (İnheritance)
Subclass-da nə edə bilərik?• Superclass-da olan metod ilə eyni göstəricili metod
yaradaraq bu metodu override etmiş olarıq• Superclass-da olan metod ilə eyni göstəricili static
metod yaradaraq superclass-dakı metodu gizləmiş olarıq
• Yeni metodlar təyin etməklə sinifi daha konkretləşdirə bilərik
• Superclass-ın konstruktoruna gizli və ya aşkar müraciət edən konstruktor yarada bilərik
![Page 23: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/23.jpg)
Varislik (İnheritance)
![Page 24: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/24.jpg)
Varislik (İnheritance)Superclass Subclass
![Page 25: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/25.jpg)
Varislik (İnheritance)
“IS-A” əlaqəsi:• Varislik zamanı daha konkret subclass ilə
superclass arasında “IS-A” əlaqəsi mövcüd olur. Baxdığımız misalda: RoadBike is a Bicycle. Buna əsasən subclass-ın obyektinə istinad edən dəyişənə superclass tipini mənimsədə bilərik:
![Page 26: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/26.jpg)
Varisliyin faydaları
• Varislik konseptinin məntiqi çox sadədir, lakin kodun təkrarlanmasının qarşısını alır. Yazdığınız bir sinif ilə ümumi oxşar cəhətləri olan sinif yaradarkən yenidən kod yazmağa ehtiyac olmur. Belə ki, ümumi dəyişən və metodları superclass-a ötürərək varislik konseptindən istifadə edib daha az kod ilə daha geniş siniflər yaratmaq mümkündür. Bu öz növbəsində kodun keyfiyyətini artırır və proqram yaratma prosesini sürətləndirir.
![Page 27: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/27.jpg)
Polimorfizm (Polymorphism)
![Page 28: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/28.jpg)
Polimorfizm (Polymorphism)• Polimorfizm sözü
biologiya elmində bir orqanizmin bir neçə hal və ya şəkil alması mənasını daşıyır. Bu prinsip obyekt yönümlü proqramlaşdırmada da istifadə oluna bilər. Belə ki, sinifin sublass-ı özünün unikal davranış metodlarını təyin edə bilər və bununla yanaşı superclass ilə ümumi xassələri paylaşa bilər. Bu zaman subclass superclass-ın metodlarını override edərək özünə uyğunlaşdırır.
![Page 29: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/29.jpg)
Metod overridingSuperclass-da təyin edilmiş metodlar (statik olmayan) eyni ad, qəbul etdiyi arqument sayı və tipi eyni olmaqla subclass-da da təyin edilərsə, bu zaman subclass superclass-ın metodunu override etmiş sayılır.
![Page 30: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/30.jpg)
Polimorfizm (Polymorphism)
![Page 31: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/31.jpg)
Polimorfizm (Polymorphism)Animal sinfinin iki subclass-ını yaradaq: Cat və Dog
![Page 32: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/32.jpg)
Polimorfizm (Polymorphism)• Polimorfizm konseptini işlədək
Nəticə:
![Page 33: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/33.jpg)
Polimorfizmin faydası• Polimorfizmin əsas məqsədi daha az kod ilə
daha üstün məhsuldarlıq əldə etməkdir. Yazılan kodun oxşar xassələrə malik bir neçə sinif üçün təkrarlanmadan ümumi yazılmasına nail olmaq.
![Page 34: Obyekt yönümlü proqramlaşdırma](https://reader033.vdocuments.site/reader033/viewer/2022061216/54b1fe9c4a795961608b4618/html5/thumbnails/34.jpg)
Sual ??