Объектілер мен кластар. Инкапсуляцияның тағы бір маңызды категориясы – объектілер түсінігі. Жоғарыда айтылғандай, инкапсуляцияның негізгі мақсаты модуль шекараларында жарияланған элементтердің көрінуін реттеу болып табылады, яғни бір модуль декларация, бағалау және ондағы төмен деңгейлі ақпарат тұрғысынан екіншісінен тәуелсіз болады. Нысандар дәл осылай жасайды. Дегенмен, пассивті бірліктер болып табылатын модульдердің нақты анықтамасынан айырмашылығы, объект орындау уақытында жасалуы, шақырылуы және орындалу уақытында есептеу күйіне ие болатын белсенді бірлік болып табылады. Нысандар жад аймағын динамикалық жады аймағына локализациялайтын конструктормен жасалады.
Әрбір нысан деректер элементтері мен әдістерін - осы деректер элементтеріне қолданылатын тәртіптер мен функцияларды инкапсуляциялайды. Инкапсуляция деректерді жасыруды қамтамасыз етеді. Нысан ішіндегі деректер мүшелеріне <нысан-атауы>.<деректер-элемент-аты> пішінінің абстрактілі синтаксисі арқылы қол жеткізуге болады, ал әдістерге <нысан-аты> пішінінің синтаксистік ережесі арқылы қатынасуға болады.<әдіс- аты >.
Бағдарламалау тілдерінің бір қызықты категориясы объектілі-бағытталған бағдарламалау болып табылады. Ол объект кластарына негізделген. Әдетте, класс анықтамасынан кейін иерархиялық құрылым келеді, бұл ағаштың түбір түйіні жоғарғы деңгейлі класс анықтамасында, 1-деңгейде түбір класының ішкі сыныптары болып табылатын класс анықтамалары, ішкі сынып анықтамасының бұл қасиеті 2-деңгей, 3-деңгей және т.б. .d. Нысан орындалу уақытында жасалуы немесе шақырылуы мүмкін сыныптың немесе ішкі сыныптың мысалы болып табылады. Сонымен қатар, сынып иерархиясы әдістердің мұралануын қамтамасыз етеді - негізгі сыныпта жарияланған тәртіптер мен функциялар - және оларды қайта анықтау немесе тікелей импорттау қажет емес. Дегенмен, ішкі сынып жаңа әдістердің өзіндік анықтамасын қоса алады немесе ата-аналық немесе аталық сыныптағы әдістер анықтамасын қайта жаза алады.
Класс анықтамалары анық модуль анықтамаларынан ерекшеленеді, себебі сыныптарда сынып даналары ретінде нысандар бар және мұраны қолдау; модульдерді нақты анықтау даналарға немесе мұраға қолдау көрсетпейді. Төменде дерексіз класс синтаксисі берілген
<сынып> ::= сынып
<идентификатор>
[ішкі сынып]
<идентификатор>
[жеке {<декларация-
деректер>}*]
[қорғалған {<декларация-
деректер>}*] [жалпыға ортақ
{<деректер декларациясы>}*]
[жеке {<декларация-
әдіс>}*] [қорғалған
{<метод-декларация>}*]
жалпыға ортақ {}+
Жалпы әдіс басқа нысандарға көрінеді, жеке әдіс басқа класстардың немесе ішкі сыныптардың объектілеріне көрінбейді; қорғалған әдістер сынып ішінде анық мөрленгендерді есептемегенде, ішкі сыныпқа ғана көрінеді. Тілге байланысты жария мәлімдеме де, жеке мәлімдеме де анық болуы мүмкін. Ішкі класс нысаны объектінің сақтау аймағын орналастыратын, идентификатор мен сақтау аймағын байланыстыратын және нысандағы деректер мүшелерін бастапқы мәндеріне инициализациялайтын конструктормен жұмыс уақытында жасалады. Әрбір нысанның өз күйі бар және нысандар шақырылатын жалпы әдістерге хабарламалар жіберу арқылы бір-бірімен байланысады.
Достарыңызбен бөлісу: |