Mənim bloqum

Abstraksiya Nədir ?

Abstraksiya (Abstraction) obyekt yönümlü proqramlaşdırmanın (OOP) əsas prinsiplərindən biridir və mürəkkəb sistemləri daha idarəolunan etmək üçün istifadə olunur. Abstraksiya, yalnız lazım olan məlumatları və funksiyaları təqdim edərək, detalları developerdən gizlədir. Başqa sözlə, bir sinif və ya komponentin nə etdiyini izah edir, lakin bunun necə həyata keçirildiyini gizlədir. Bu yanaşma, developerin yalnız təqdim olunan interfeyslərə və funksiyalara diqqət yetirməsini təmin edir. Bununla da proqram təminatını təkmilləşdirən şəxs sırf işlədiyi funksionallığa uyğun məlumatları görə, istifadə edə bilir. İşlədiyi konspetə aid olmayan məlumatlarla yüklənib, özünü çaşdırmır


Abstraksiyanın Məqsədləri:

Mürəkkəbliyin İdarə Edilməsi: Abstraksiya mürəkkəb sistemləri daha sadə və idarəolunan edir. Funksiyaları və modulları kiçik və asılı olmayan hissələrə bölmək, kodun qavranılmasını və genişləndirilməsini asanlaşdırır Kodun Təkrar İstifadəsi: Abstraksiya ümumi funksiyaların təkrar istifadəsini artırır, bu da kodun yenidən yazılmasının qarşısını alır və proqram təminatının inkşaf prosesini sürətləndirir Təhlükəsizlik: Abstraksiya istifadəçilərin lazımsız və zərərli əməliyyatları icra etməsinin qarşısını alır, beləliklə sistemin təhlükəsizliyini artırır Modulluq: Abstraksiya sistemin modulluğunu artırır, bu da müxtəlif komponentlərin müstəqil şəkildə inkişaf etdirilməsi və test edilməsinə imkan yaradır

image

Abstraksiya və Obyekt Yönümlü Dizayn

Abstraksiya sistemin müxtəlif hissələrinin necə əlaqələndirildiyini idarə etmək üçün vacibdir. Bu prinsipi həyata keçirmək üçün istifadə edilən vasitələr, məsələn, interfeyslər və abstrakt siniflər, abstraksiyanın tətbiqi üçün vasitədir. Bu vasitələr abstraksiyanı reallaşdırmağa kömək edir, lakin abstraksiyanın özü deyil.


Miras Almanın Məhdudluğu

Normal siniflərdən bir sinif miras alanda, o sinif yalnız başqa bir sinifdən miras ala bilər. Bu, müxtəlif davranışları həyata keçirməkdə məhdudiyyət yaradır. Problemi həll etmək üçün interfeyslər istifadə olunur, çünki bir sinif bir neçə interfeysi implementasiya edə bilər.


Abstraksiyaya Düzgün Yanaşma

İdeal yanaşma, proqramçının yalnız lazım olan kod bloklarına və funksiyalara əlçatanlıq əldə etməsidir. Bu, kodun daha təmiz və başa düşülən olmasını təmin edir və lazımsız mürəkkəbliyi aradan qaldırır.

image

Nümunə: Login Əməliyyatı

Misal üçün, sistemdə daxili və xarici login üsulları var. Daxili login standart istifadəçi adı və şifrə ilə həyata keçirilir, xarici login isə üçüncü tərəf xidmətləri vasitəsilə həyata keçirilir. Bu iki login üsulunu bir sinifdə birləşdirmək çətin ola bilər. Bunun əvəzinə, IAuthService interfeysi əlavə olaraq, IInternalAuth və IExternalAuth kimi iki ayrı interfeys istifadə edərək hər bir login üsulunu müstəqil idarə etmək mümkündür. AuthService class-ı bu interface-ləri istifadə edərək kodu daha yaxşı təşkil edir və sistemin mürəkkəbliyini azaldır.

                        
                                
//şərti kod bloklarından abstraksiyanın tətbiqinə nəzər yetirin

 public interface IExternalAuth
 {
        Task FacebookLoginAsync();
        Task GoogleLoginAsync();
 }

 public interface IInternalAuth
  {
        Task LoginAsync();
  }

 public interface IAuthService : IInternalAuth, IExternalAuth
 {      
        Task  LogoutAsync();
 }

  public class AuthService : IAuthService
  {
      public async Task LoginAsync()  {}   

      public async Task FacebookLoginAsync() {} 

      public async Task GoogleLoginAsync() {} 
    
      public async Task LoginAsync() {} 
 }

                                                                             
                                                                            

Abstraksiya, Encapsulation, Inheritance və Polimorfizm arasındakı əlaqə

Abstraksiya əsas prinsipləri təmin edir və bu, Encapsulation, Inheritance və Polymorphism tərəfindən reallaşdırılır - Encapsulation lazımlı məlumatları göstərib, digər hissələri gizlədir - Inheritance siniflər arasında müvafiq xüsusiyyətləri və metodları miras alır - Polymorphism müxtəlif implementasiyaların eyni interfeysdən istifadə etməsinə imkan verir


Xülasə

Nəticə olaraq, abstraksiya yalnız interfeyslərin və ya abstrakt siniflərin istifadəsi ilə məhdudlaşmır. O, Encapsulation, Inheritance və Polymorphism ilə birgə istifadə edilərək proqramın daha sadə, çevik və idarəolunan olmasını təmin edir.