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