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

Post on 11-Jan-2015

287 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

Samir HəsənovOrient İTM

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

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ı

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

Obyekt ??

Sinif, Obyekt, Konstruktor və Metod

Sinif və Obyekt

Sinif, Obyekt və Konstruktor

Metod

Metod Overload və Override

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.

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.

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

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

OOP əsas 3 konsepti

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

İnkapsulyasiya (Encapsulation)

İ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.

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

İ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.

Varislik (İnheritance)

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.

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

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

Varislik (İnheritance)

Varislik (İnheritance)Superclass Subclass

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:

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.

Polimorfizm (Polymorphism)

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.

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.

Polimorfizm (Polymorphism)

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

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

Nəticə:

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.

Sual ??

top related