Enkapsulyasiya vs Abstraksiya
Enkapsulyasiya və Abstraksiya OOP (Obyekt yönümlü Proqramlaşdırma) dillərində tapılan iki fərqli, lakin əlaqəli anlayışlardır. İnkapsulyasiya məlumat və davranışın vahid bir varlıq kimi birləşdirilməsi anlayışıdır. Digər tərəfdən, Abstraksiya müəssisənin necə davrandığını, necə həyata keçirildiyindən fərqli olaraq necə göründüyünü təqdim etmək prosesidir.
Enkapsulyasiya nədir?
Enkapsulyasiya məlumatların və onların üzərində işləyən əməliyyatların vahid bir quruma yığılması prosesidir. Bu, mahiyyətcə o deməkdir ki, verilənlərə daxil olmaq üçün əvvəlcədən müəyyən edilmiş müəyyən üsullardan istifadə edilməlidir. Başqa sözlə, kapsullaşdırılmış məlumatlara birbaşa daxil olmaq mümkün deyil. Bu, məlumatların bütövlüyünün qorunduğuna əmin olur, çünki istifadəçi məlumatlara birbaşa daxil ola və istədiyi kimi dəyişdirə bilmir. İstifadəçilər məlumat dəyərlərini yalnız istifadəçilər üçün açıq olan metodlar vasitəsilə əldə edəcək və ya təyin edəcəklər. Bu üsullar adətən verilənlərin yoxlanılmasını təmin edir ki, sahələrə yalnız müvafiq formatda olan verilənlərin daxil edilməsinə icazə verilir. Buna görə də, Encapsulation faydaları üçqatdır. Encapsulation vasitəsilə proqramçı sinif sahələrini yalnız oxumaq üçün edə və ya yalnız yaza bilər. İkincisi, sinif öz sahələrində saxlananlara tam nəzarət edə bilər. Nəhayət, bir sinfin istifadəçiləri onun məlumatlarının necə saxlandığından narahat olmağa ehtiyac duymurlar. Java-da proqramçı bütün instansiya dəyişənini özəl elan edə bilər və şəxsi sahələrə daxil olmaq və onları dəyişdirmək üçün əldə və təyin üsullarını (ümumi olan) təmin edə bilər.
Astraksiya nədir?
Abstraksiya təqdimat detallarının icra detallarından ayrılması prosesidir. Bu, tərtibatçının daha mürəkkəb icra detallarından azad olması üçün edilir. Bunun əvəzinə proqramçı diqqətini təqdimata və ya obyektin davranış detallarına yönəldə bilər. Sadə dillə desək, abstraksiya müəyyən bir varlığın necə həyata keçirildiyinə deyil, necə istifadə oluna biləcəyinə diqqət yetirir. Abstraksiya mahiyyətcə icra təfərrüatlarını gizlədir, belə ki, tətbiqetmə metodologiyası zamanla dəyişsə belə, proqramçı bunun onun proqramına necə təsir edəcəyindən narahat olmasın. Sistem bir neçə təbəqədə və ya səviyyədə mücərrəd ola bilər. Məsələn, aşağı səviyyəli abstraksiya təbəqələri aparat təfərrüatlarını aşkar edəcək, yüksək səviyyəli abstraksiya isə yalnız müəssisənin biznes məntiqini aşkar edəcək. Abstraksiya termini həm varlığa, həm də prosesə istinad etmək üçün istifadə edilə bilər və bu, bəzi qarışıqlıqlara səbəb olur. Bir proses olaraq, abstraksiya bir elementin və ya bir qrup elementin əhəmiyyətsiz təfərrüatlarına məhəl qoymadan əsas təfərrüatların çıxarılması deməkdir, bir varlıq olaraq, abstraksiya yalnız əsas detalları olan bir varlığın modeli və ya görünüşü deməkdir. Java-da proqramçı sinfi mücərrəd varlıq kimi elan etmək üçün abstract açar sözündən istifadə edə bilər ki, bu da real dünya varlığının əsas təyinedici xüsusiyyətlərini təmsil edir.
Enkapsulyasiya və Abstraksiya arasındakı fərq nədir?
Enkapsulyasiya və Abstraksiya obyekt yönümlü proqramlaşdırma dillərində çox əlaqəli anlayışlar olsa da, onların əsas fərqləri var. Abstraksiya nəyin görünməli, nəyin gizlədilməli olduğunu müəyyən etməyə kömək edən bir texnikadır. İnkapsulyasiya, görünməli olanı görünən və gizlədilməli olanı gizlədən məlumatı qablaşdırma üsullarıdır. Başqa sözlə, Encapsulation abstraksiyadan bir addım kənarda müəyyən edilə bilər. Abstraksiya real dünya obyektini onun əsas təyinedici xüsusiyyətlərinə endirsə də, inkapsulyasiya həmin obyektin bu funksionallığını modelləşdirmək və əlaqələndirməklə bu ideyanı genişləndirir.