Ən azı proqramlaşdırma üzrə ən az məlumat sahibi olan hər kəs, üslubda əsas siniflərin nə üçün olduğunu merak etdi. Onların məqsədi nədir? Soyut bir sinif yaratmaq üçün necə? Praktikada verdikləri üstünlüklər hansılardır? Nəyə görə proqramlaşdırmalarda ehtiyac duyulur və bunların hansı xüsusiyyətləri nəzərə alınmalıdır?
Soyut dərslər
Beləliklə proqramlaşdırma proqram kodunun vahidi adlanır, hansı obyektlərin yaradılması mümkün deyildir. Qeyd etmək lazımdır ki, bu sinifin varisləri abstrakt ola bilməz. Ona görə də, onların əsasında obyektlərin yaradılması olduqca mümkündür. Java'dan nümunə götürsək, o zaman belə bir model qururuq: A sinfində konstruktorları təsvir edə bilərik amma biz onları istifadə edə bilmərik. Bu vəziyyətdən çıxış yolu bir dəyişən kimi istinad etməkdir. Və aydın şəkildə aydın olmalıdır ki, bu, sinfi A obyektinə yönəldir, lakin bu necə edilə bilər? Tökmə bu mövzuda bizə kömək edəcək. Qeyd etmək lazımdır ki, valideyn sinfi həmişə uşağa nisbətən daha universaldır. Çox proqramlaşdırma dillərində, tökmə avtomatik olaraq istifadə olunur. Ancaq belə bir mexanizmin mövcudluğuna heç bir güvən olmadıqda, o zaman obyektə bir istinad vurğulamalısınız.
Xülasə üsulları
Onlar nədir? Xülasə üsulları nəzərə alınan sinifdə tətbiq edilməyənlərdir. Beləliklə, parantezlərdən sonra (onların istifadə olunan dəlilləri siyahıda göstərildikdən sonra) açılmayan cırıltılar qoyulur (bundan sonra metod təsviri bloku yerləşdirilir), ancaq bir nöqtəli vergül. Beləliklə, bu vəziyyətdə nə etdiyinə dair heç bir məlumat yoxdur. Burada sual soruşa bilərsiniz: "Niyə tətbiq edilmədən üsuldur?" Axı, istifadə edilə bilməz! Əlbəttə ki, təsvir olunduğu sinifdə bu mümkün deyil. Ancaq əgər bu vəziyyəti nəvə baxımından düşünsək, o zaman bu çağırılacaq. Və bu sinifdə mövcud olan xüsusi təsvirlərə görə fəaliyyət göstərəcəkdir.
Soyut üsulların xüsusiyyətləri
Onların istifadəsində məhdudiyyətlər var. Java proqramlaşdırma dilinin nümunəsində bunu düşünün . Belə bir tələb var: əgər sinifdə ən azı bir belə üsul varsa, mütləq abstrakt olmalıdır. Hansı hallarda bu cür konstruksiyaları istifadə etmək düzgündür? Bu ev heyvanı dərsləri vəziyyətinə baxaq. Əvvəla, başa düşmək lazımdır ki, onların hamısı dərc olunduğu səs yoxdur. Buna görə, ən ümumi sinifdə səs metodunun tətbiqi müəyyənləşdirilmir. Lakin onun üçün bloklar ilə ayrılmış bir bədən yaradılır. Gələcəkdə, bir it, pişik və ya hamster sinfi yaradıldığı zaman, bunun üçün ayrı bir üsul təyin ediləcək, bütün xüsusiyyətlər ortaya çıxacaq.
İnterfeys
Proqramlaşdırmada, məqsədi şəxsin keyfiyyətli bir məhsula sahib olmasına kömək etmək üçün bir çox vasitələr yaradılmışdır. Baxılan mövzu çərçivəsində, hər kəsin özünəməxsus sinif və interfeys arasındakı fərqini bilməsi üçün bu istiqamətə diqqət yetirilməlidir. Beləliklə, sonuncunun xüsusiyyətləri onun xüsusiyyətlərinə malik deyildir və metodlar cəsədlər deyildir. Soyut sinif və interfeys arasındakı fərqləri araşdırarkən, bir daha xüsusiyyəti qeyd etməlidir. Beləliklə, birincisi miras alınır, ikincisi isə həyata keçirilir. Təcrübəsiz bir insana bu əhəmiyyətsiz görünə bilər. Fəqət yalnız bir sinifin miras alınması və istədiyiniz qədər həyata keçirə bilərsiniz. İnterfeys bu mücərrəd sinifdən necə fərqlənir . Java yalnız abstrakt ictimai metodları və statik sabitləri təsvir edə biləcək digər xüsusiyyətlərə malikdir. Amma interfeyslər də miras ola bilər. Bu halda, istifadə edilən operatorların ictimaiyyətdən istifadə etdiyini göstərmək lazımdır.
Birden çox interfeys mirası
Bu funksiya bir çox proqramlaşdırma dillərində (məsələn, düşündüyümüz Java) siniflər üçün mövcud deyildir. Bu, bir sıra problemlərdən ibarətdir. Beləliklə, miras qaldıqda ortaya çıxan qeyri-müəyyənliyi göstərir. Bu, birdən çox mirasçı interfeysin tətbiqi üçün səbəb olmuşdur. Bu, mövcud problemləri qismən həll edir, lakin hamısı deyil. Beləliklə, encapsulation və polymorphism prinsipləri sayəsində interfeys müxtəlif üsullarla müxtəlif siniflərdə müvəffəqiyyətlə tətbiq oluna bilər (eyni adı olmasına baxmayaraq). Ancaq mövcud problemləri unutma. Belə ki, birdən çox interfeyslə işləyərkən, həmişə demək istədiyimizi göstərməli olacaqsınız. Eyni adda iki metodla işləmək istəyərkən problemlər də olacaq, bu halda istifadə edilə bilməz. Buna görə də, belə hallarda ümumi tətbiqin mövcudluğuna diqqət yetirmək lazımdır.
Abstract data
Bu konsepsiya proqramlaşdırma açarıdır. Bu vəziyyətdə, abstraksiyanın müstəqil nəzərdən keçirilməsi və interfeysin ayrılması və həyata keçirilməsi kimi başa düşülür. Bir nümunəyə baxaq. Bir obyekt və ya modul olan bir TV var. Bir interfeys var. Beləliklə, bunun üçün nəzarət var, eləcə də səs və görüntü bərpası. Daha qabaqcıl interfeys istifadə olunur, televiziya istifadə prosesində daha rahatdır. Hər hansı bir düyməni basaraq proqramları dəyişə bilərik. Bu vəziyyətdə televiziyada fiziki proseslər barədə düşünməyə ehtiyac yoxdur. Onlar cihazı toplayan mütəxəssislər tərəfindən qorunur. Yalnız istifadəçilər kimi xüsusiyyətləri ilə maraqlanırıq. Proqramlaşdırmağa qayıdarkən, biz bu analoji işin interfeysi və tətbiqi olduğunu söyləyə bilərik. Həmçinin, bir şəxs öz biliklərinə əməl edərsə, hipotetik televiziyamızdakı örtüyü "götürə" və onu təkmilləşdirə bilər. Bu, yerli uğurlara gətirib çıxara bilərsə da, əksər hallarda son nəticə mənfi olur. Buna görə də, proqramlaşdırma abunə məlumatları əldə etmək üçün qadağan edir və daxili komponentləri gizlədir. Bu mexanizm prinsipi daxili komponentlərdə qəsdən və ya təsadüfi dəyişikliklərin qarşısını almaq yollarını nəzərdə tutur. Onlar mücərrəd data növləri haqqında söhbət etdikdə, onların ümumi birləşmələri onlara tətbiq edilə bilən çoxsaylı əməliyyatlar deməkdir.
Obyektlər
Biz ümumiyyətlə və ümumiyyətlə mücərrəd sinfi və interfeysini araşdırdıq. İndi biliklərimizə bir az ətraflı məlumat verək. Birincisi, biz obyektlərə diqqət yetirəcəyik. Ümumi vəziyyətdə onlara məkan və zaman içində olan ətrafdakı həqiqətin bir hissəsi aydındır. Ancaq proqramlaşdırma çərçivəsində obyektləri formal olaraq müəyyən etmək çox çətindir (bir fəlsəfi və nəzəri baxımdan). Buna görə də bu, xüsusiyyətlərinə görə həyata keçirilir. Bir nümunə olaraq, aşağıdakılara istinad edilə bilər: bir obyektin unikal şəkildə müəyyən edilə biləcəyi (unikal bir adı var), müəyyən bir vəziyyətdədir və müəyyən bir davranış modelini istifadə edir.
Mərhəmət
Proqramlaşdırma obyektlər arasındakı əlaqələrin hiyerarşik bir ağacının qurulmasına əsaslandığından, ana kod kitabxanalarının xüsusiyyətləri əsas növlərə ötürülməlidir. Mərhəmət başqa bir şeyin davranışını və quruluşunu təkrarlayan bir münasibət kimi başa düşülür. Adi həyatda bu hər yerdə tapıla bilər. Bu da soyut elementlərə aid proqramlaşdırmaya köçürülmüşdür. Bir müqayisə olaraq, quş kimi bir orqanizmin olmadığını göstərə bilərik. Bu abstrakt bir ad. Xüsusi bir nümunə olaraq, bir qəribə, bir bulud və ya bir sərçə gətirirsiniz. Vərəsəliklə əlaqədar olaraq, kitabxana kitabxanalarından istifadə edə bilərik və xüsusi bir proqram üçün onları inkişaf etdirə bilərik. Belə bir vasitə bizə yeni obyektlər yaratmaq, eyni zamanda hazırlanan birinin xüsusiyyətlərini əlavə etmək və ya dəyişmək imkanı verir. Vərəsə atasının bütün üsullarını və sahələrini alır və zəruri hallarda öz xüsusiyyətlərini əldə edir. Soyut elementlər və miras prinsipi olduğu üçün obyektin yönümlü proqramlaşdırma çərçivəsində dəyişikliklər üçün geniş imkanlar mövcuddur. Bundan əlavə, bu, vəzifələrin həllinə uyğunlaşmağa imkan verir. Devralınca, məlumatlar və funksiyalar yeni sinifə keçirilir.
Polimorfizm
Müxtəlif növ vəzifələri həll etmək üçün eyni funksiyaları tətbiq etmək lazımdır. Bu halda, məzmunu işin həyata keçirildiyi obyektin növündən asılı olacaq müxtəlif tədbirlərin həyata keçirilməsi ehtimalı mövcuddur. Polimorfizm bir ümumi valideynə malik elementlərin mülkiyyəti kimi başa düşülür, müxtəlif yollarla semantik mənada oxşar problemlər yaradır. Heyvanlarla bir analoq çəkirik. Qaçmaq üçün belə bir hərəkət var. Hamımız bunun necə olduğunu başa düşürük. Farklı heyvanlarla (aslan, fil, şempanze, timsah, tortoise) bu hərəkət fərqli olaraq həyata keçiriləcəkdir. Bu vəziyyətdə, geliştirici, onların lazım olduğu təqdirdə xüsusi bir iş üçün müəyyən bir alt proqram yaratmaq, alqoritmi hazırlamaq və onu uğurla həyata keçirə biləcək hərəkətlərindən məsuliyyət daşıyır. Bu bir sıra metodlardan istifadə etməklə həyata keçirilir. Bu halda, hər bir ayrı sinifdə, proqramçı hansı obyektin hansı xüsusiyyətlərə sahib olduğunu göstərir. Nəvələrdəki bir şeyin dəyişdirilməsi, bu vəziyyətdə lazımlı müəyyən və lazımlı nəticələr əldə edə bilərsiniz. Belə bir təsirə obyekt polimorfizmi deyilir. Ümumiyyətlə, mücərrəd sinif çox faydalı bir proqramlaşdırma vasitədir.