Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Obyekt yönümlü proqramlaşdırma

4,243 views

Published on

Published in: Technology
  • Be the first to comment

Obyekt yönümlü proqramlaşdırma

  1. 1. Obyekt yönümlü proqramlaşdırma Samir Həsənov Orient İTM
  2. 2. 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
  3. 3. 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ı
  4. 4. Obyekt yönümlü proqramlaşdırma dilləri
  5. 5. Obyekt ??
  6. 6. Sinif, Obyekt, Konstruktor və Metod
  7. 7. Sinif və Obyekt
  8. 8. Sinif, Obyekt və Konstruktor
  9. 9. Metod
  10. 10. Metod Overload və Override
  11. 11. 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.
  12. 12. 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.
  13. 13. Metod Overriding • Metodların override olunması prinsipinin izahı polimorfizm bölümündə verilmişdir.
  14. 14. OOP əsas 3 konsepti • İnkapsulyasiya (Encapsulation) • Varislik (İnheritance) • Polimorfizm (Polymorphism)
  15. 15. İnkapsulyasiya (Encapsulation)
  16. 16. İ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.
  17. 17. İnkapsulyasiya (Encapsulation) İnkapsulyasiya olunmamış İnkapsulyasiya olunmuş
  18. 18. İ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.
  19. 19. Varislik (İnheritance)
  20. 20. 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.
  21. 21. 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
  22. 22. 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
  23. 23. Varislik (İnheritance)
  24. 24. Varislik (İnheritance) Superclass Subclass
  25. 25. 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:
  26. 26. 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.
  27. 27. Polimorfizm (Polymorphism)
  28. 28. 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.
  29. 29. Metod overriding Superclass-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.
  30. 30. Polimorfizm (Polymorphism)
  31. 31. Polimorfizm (Polymorphism) Animal sinfinin iki subclass-ını yaradaq: Cat və Dog
  32. 32. Polimorfizm (Polymorphism) • Polimorfizm konseptini işlədək Nəticə:
  33. 33. 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.
  34. 34. Sual ??

×