OOP. Kapsülləmə(Encapsulation)

Verdiyev Mahammad
2 min readFeb 4, 2021

--

Bloqu oxumazdan əvvəl Obyekt Yönümlü Proqramlaşdırmanın nə olduğunu, hansı üstünlüyünün olması və bəzi anlayışlar haqqında ilkin biliklərə sahib olmağınız faydalı olacaq.

Bildiyimiz kimi Obyekt yönümlü proqramlaşdırma 4 əsasdan ibarətdir. Bunlar:

Encapsulation, Abstraction, Inheritance, Polymorphism.

Bu blogda encapsulation yəni kapsülləməni izah edəcəyəm.

Nədir bu Encapsulation?

Proqramlaşdırmada obyektin dəyişənlərini, yəni statelərini private edib, hər bir dəyişən üçün public olaraq setter getter metodların yaradılmasıdır. Biz obyekti kapsülləməklə, o obyektin komponentlərinə əlçatanlığı qısıtlamış oluruq.

Yəni əgər bizim kapsüllənmiş “Car” tipindən olan obyektə car1 referansımız varsa, biz onun weight dəyişəninə car1.weight = 1000 deyib dəyər mənimsədə bilməyəcəyik.

Sual oluna bilər, biz bir obyektə əlçatanlığı nə üçün qısıtlayaq ki? Bu haqda biraz düşünün, əlimizdə dəyəri birbaşa olaraq dəyişilə bilən bir obyektə olan referansın olması bizə hansı problemləri yarada bilər? Olmaması gərəkən insanın əlində bu referans təhlükəli bir silahdır. Səbəb isə budur:

car1.weight = 0;

Kütləsiz maşın olmadığı üçün yuxarıdakı ifadə mənitiqi cəhətdən yanlış olacaq. setter metodlardan istifadə edərək bunun qarşısını ala bilərik. Belə ki, bu metodlarda arqument olaraq göndərilən dəyərləri müəyyən mərhələdən keçirərək doğruladıqdan sonra mənimsətmə edə bilərik.

class Car {
private double weight;

// setter metod
public void setWeight(double weightParam)
{
// doğrulama
if(weightParam > 0)
{
weight = weightParam;
}
}
}

public class Main
{

public static void main(String[] args)
{
Car car1 = new Car();

car1.setWeight(1000);
}

}

Siz bu metoda arqument olaraq sıfır və sıfırdan kiçik hansı dəyər göndərsəniz obyektin dəyişəninə mənimsədilməyəcək, beləliklə istənməyən dəyərlərin mənimsədilməyin qarşısını almış olduq.

Yaxşı, bəs car1 obyektimizin weight dəyişənini necə əldə edək? Xatırlayırsınızsa dəyişənin private olması bizim ona birbaşa olan əlaqəmizi kəsirdi. Artıq biz bu dəyişənlərin qiymətini istifadə edə bilmərik. Bu problemi həll etmək üçün public metod yaradıb sözügedən dəyəri qaytara bilərik.

class Car {
private double weight;

// setter metod
public void setWeight(double weightParam)
{
// doğrulama
if(weightParam > 0)
{
weight = weightParam;
}
}

// getter metod
public double getWeight()
{
return weight;
}
}

public class Main
{

public static void main(String[] args)
{
Car car1 = new Car();

car1.setWeight(1000);

System.out.println( car1.getWeight() );
}

}

Vaxt ayırıb oxuduğunuz üçün təşəkkürlər.

Oxşar yazılar:

--

--

Verdiyev Mahammad
Verdiyev Mahammad

Written by Verdiyev Mahammad

In God we trust; all others bring data - W. Edwards Deming

No responses yet