Object yönlü proqramlaşdırma

Obyekt yönlü proqramlaşdırmanın əsas anlayışları: abstraksiya. nkapsulyasiya, varislik, polimorfızm- haqqında nə bilirsiniz?


Yadda saxlama
Kateqoriya: Proqramlaşdırma . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (5 cavab var)

(17:47, 29/03/2011 ) #2136

OOP – in əsas anlayışları :
1. Encapsulation – proqramçıya obyektləri qorumaq imkanı verir. Yəni private təyin etdiyimiz dəyişkənləri istifadəçidən gizlətmək mənasına gəlir ki, onsuz da istifadəçinin bunu istifadə etməsinə gərək yoxdur ve hətta istifadə etməməlidir.

2. İnheritance – bir sinifin metodlarını istifadə edən başqa siniflər yaratmağa kömək edir deyə bilərik.Məsələn bir şirkət sizdən işçiləri haqqında şirkətə lazımi məlumatlarını(maaş, ad, soyad və s.) saxlayan bir proqram qurulması istəyir. Və deyək ki, şirkətdə 3 növ işçi var: Manager, SalesPerson və Laborer.
Onda proqramçı üçün ən uyğun yol budur: İşçilərin adlarını, soyadlarını yaşlarını və maaşlarını təyin edən dəyişənlərdən və əlavə bonus verən bir metoddan ibarət Employee sinifi düzəltsin. Ondan sonra yaradacağımız Manager, SalesPerson və Laborer sinifləri artıq Employee sinifinin alt sinifləri olacaq. Yəni bu 3 sinif Employee base sinifindən törəyəcəklər. BU 3 sinif “Derived class”, onların törəndikləri sinif isə “Base class” adlanır. Əgər biz İnheritance – dan istifadə etməsəydik onda Employee sinifində yaratdığımız dəyişənləri və metodları yenidən bu 3 sinifdə yaratmalıydıq. Əgər daha çox dəyişən və metod olardısa onda bu inheritance-dan istifadə etməyən proqramçının xeyli vaxt itirməsinə və çox səliqəsiz bir proqram yaratmasına səbəb olardı. (Siz İnheritancedan istifadə edə-edə onun burda yazdığım səbəblərdən daha çox xeyirli olduğunu görəcəksiniz.)
Deməli, derived class-lar avtomatik olaraq base class-ın bütün özəlliklərinə sahib olurlar.

Və İnheritance C#-da iki nöqtə ilə qeyd edilir.

 //Manager class-ı Employee class-ından miras   //alır
class Manager : Employee 
{ 
}

Amma Javada extends keyword – ü ilə :

//Manager class-ı Employee class-ından miras   //alır
class Manager extends Employee {
}

3. Polymorphism – Polymorphism bizə bunlari etməyə imkan verir:

Bu bizə runtime zamanı (Proqramı çalıştırdığımız zaman) derived class-dakı metodları base class-dakı metodlara referans etməklə çağırmağa şərait yaradır.

Bu bizə fərqli classlarda fərqli işləri görən metodları eyni adla adlandırmamıza imkan yaradır.

Bəs Polymorphismdən necə istifadə edilir:
Bunun üçün bir base classımız və ondan mirasla yaranan derived classlar olmalıdır. Base classda yaradılan bir metod digər siniflərin hamısında istifadə ediləcək ama bu metodların hamısının içi fərqli olacaq.

Base classda təyin etdiyimiz ve bütün classlar üçün ortaq istifadə etmək istediyimiz metodu base classda yazarkən bunu “virtual” olaraq təyin edib, istifadə etməliyik. Derived classlarda ise metodu “Override”keyword -ü ilə qeyd edməliyik (C#-da).

Base classda: public virtual string MaashinTeyinEdilmesi()

Derived classda: public override string MaashinTeyinEdilmesi()

Mən bu mövzuları bilirdim amma, sizə daha yaxşı anlatmaq üçün internetdə yaxşıca araşdırdım. İnşallah yazdıqlarımın azda olsa köməyi olar.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(19:07, 29/03/2011 ) #2138

Abstract class-dan da mən yazım. Bəzən bunu OOP-in əsas cəhətlərindən biri kimi göstərirlər. Amma əsasən, yuxarıdakı trio keçərlidir.

Abstract class yarımçıq class da adlandırırlar. Çünki bu classlardan object yaratmaq olmur, sealed özəlliyi əlavə edə bilmirik(başqa classlar inherit edə bilmir sealed classlardan) və bu classlardan inherit(miras alan) edən classlar da ya abstract olmalıdır, yada abstract methodları override edilməlidir.

Abstract method necə olur?

Əvvəlcə abstract bir class tanımlayaq, abstract bir methodu olsun(VergiHesabla).
abstract class VergiHesablayici
{

public abstract double VergiHesabla();

}
İkinci bir class tanımlayaq. Həmin VergiHesablayici classından inherit etsin.
Bu zaman biz VergiHesabla methodunu override edəcəyik və override edərkən içini (body) dolduracağıq(abstract methodda body hissəsi olmur, prototype olur yalnız-içi doldurulmur).

class ElaveGelirVergisi: VergiHesablayici
{
public override double VergiHesablayici()
{
double vergi=maash*0.12;
return vergi;
}

}

p.s. İnterfacelər bütün methodları public və abstract olan istifadəçinin yaratdığı xüsusi typelardır.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(19:11, 29/03/2011 ) #2139

İkinci bir class tanımlayaq. Həmin VergiHesablayici classından inherit etsin.
Bu zaman biz VergiHesabla methodunu override edəcəyik və override edərkən içini (body) dolduracağıq(abstract methodda body hissəsi olmur, prototype olur yalnız-içi doldurulmur).

class ElaveGelirVergisi: VergiHesablayici
{
public override double VergiHesabla()
// method adını səhv yazmışdım, override etdiyi(absract) ilə adı eyni olmalı
{
double vergi=maash*0.12;
return vergi;
}

}

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:57, 30/03/2011 ) #2142

Cox sag olun. Ela yazmisiniz. minnetdaram.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:24, 26/03/2012 ) #11521

çox gözəl yazmısınız Maşallah… cpp-in azərb. dilində kitabı cıxsa zehmet olmasa mənə xəbər verin…yəniki təzəsi…

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Xif mn kodu (7 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (26 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (33 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (38 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (47 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (51 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (53 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (53 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (55 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (61 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (61 gün əvvəl)

Software Developer cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (61 gün əvvəl)

E. Hacı cavab verdi - Riyazi proqramlar üçün proqram (62 gün əvvəl)

Software Developer cavab verdi - Kursda xaricdə təhsil imkanı nece yaranır? (62 gün əvvəl)

darkpixel cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (62 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23287 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024