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