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

34
Obyekt yönümlü proqramlaşdırma Samir Həsənov Orient İTM

Upload: samir-hasanov

Post on 11-Jan-2015

287 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Obyekt yönümlü proqramlaşdırma

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

Samir HəsənovOrient İTM

Page 2: Obyekt yönümlü proqramlaşdırma

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

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

Obyekt yönümlü proqramlaşdırma dilləri

Page 5: Obyekt yönümlü proqramlaşdırma

Obyekt ??

Page 6: Obyekt yönümlü proqramlaşdırma

Sinif, Obyekt, Konstruktor və Metod

Page 7: Obyekt yönümlü proqramlaşdırma

Sinif və Obyekt

Page 8: Obyekt yönümlü proqramlaşdırma

Sinif, Obyekt və Konstruktor

Page 9: Obyekt yönümlü proqramlaşdırma

Metod

Page 10: Obyekt yönümlü proqramlaşdırma

Metod Overload və Override

Page 11: Obyekt yönümlü proqramlaşdırma

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

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

Metod Overriding• Metodların override olunması prinsipinin izahı

polimorfizm bölümündə verilmişdir.

Page 14: Obyekt yönümlü proqramlaşdırma

OOP əsas 3 konsepti

• İnkapsulyasiya (Encapsulation)• Varislik (İnheritance)• Polimorfizm (Polymorphism)

Page 15: Obyekt yönümlü proqramlaşdırma

İnkapsulyasiya (Encapsulation)

Page 16: Obyekt yönümlü proqramlaşdırma

İ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

İnkapsulyasiya (Encapsulation)İnkapsulyasiya olunmamış İnkapsulyasiya olunmuş

Page 18: Obyekt yönümlü proqramlaşdırma

İ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

Varislik (İnheritance)

Page 20: Obyekt yönümlü proqramlaşdırma

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

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

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

Varislik (İnheritance)

Page 24: Obyekt yönümlü proqramlaşdırma

Varislik (İnheritance)Superclass Subclass

Page 25: Obyekt yönümlü proqramlaşdırma

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

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

Polimorfizm (Polymorphism)

Page 28: Obyekt yönümlü proqramlaşdırma

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

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

Polimorfizm (Polymorphism)

Page 31: Obyekt yönümlü proqramlaşdırma

Polimorfizm (Polymorphism)Animal sinfinin iki subclass-ını yaradaq: Cat və Dog

Page 32: Obyekt yönümlü proqramlaşdırma

Polimorfizm (Polymorphism)• Polimorfizm konseptini işlədək

Nəticə:

Page 33: Obyekt yönümlü proqramlaşdırma

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

Sual ??