«Алгоритмдеу және бағдарламалау» пәнінен оқу тәжірибесі бойынша



бет36/64
Дата06.02.2022
өлшемі2,01 Mb.
#79582
1   ...   32   33   34   35   36   37   38   39   ...   64
Байланысты:
ПИТОН УМК

Инкапсуляция
Әдепкі бойынша, кластардағы атрибуттар жалпыға қолжетімді болып табылады, бұл дегеніміз, бағдарламаның кез келген жерінен объектінің атрибутын алып, оны өзгерте аламыз. Мысалы:

Бірақ бұл жағдайда біз, мысалы, жасына немесе адамның атына дұрыс емес мәнді бере аламыз, мысалы, теріс жасты көрсете аламыз. Мұндай әрекет қажет емес, сондықтан объект атрибуттарына қолжетімділікті бақылау туралы мәселе туындайды.
Бұл проблемамен инкапсуляция ұғымы тығыз байланысты. Инкапсуляция объектілі-бағытталған бағдарламалаудың іргелі тұжырымдамасы болып табылады. Ол шақырушы кодынан нысан атрибуттарына тікелей кіруді болдырмайды.
Python бағдарламалау тілінде тікелей инкапсуляцияға қатысты класс атрибуттарын жасыру оларды жеке немесе жабық етіп және қасиеттер деп аталатын арнайы әдістер арқылы оларға қолжетімділікті шектей отыруға болады.
Сипаттарды анықтау арқылы белгілі бір классты өзгертеміз:


Жеке атрибутты жасау үшін оның атауының басында қос асты сызылғын сызықша қойылады: self.__name. Мұндай атрибутқа біз тек сол кластан шыға аламыз. Бірақ кластан тыс қатынай алмаймыз. Мысалы, бұл атрибутқа мән беру ештеңе бермейді:

Оның мәнін алу қате әрекетке әкеліп соғады:

Дегенмен, біз пайдаланушымыздың жасын орнату қажет болуы мүмкін. Ол үшін қасиеттер жасалады. Бір сипатты пайдалана отырып, біз атрибуттың мәнін ала аламыз:

Бұл әдіс жиі геттер немесе аксессор деп аталады.
Жасты өзгерту үшін басқа сипат бар:

Мұнда біз шартқа байланысты жасын қалпына келтіру керек пе, жоқ па, соны шеше аламыз. Бұл әдіс сеттер немесе мьютейтор (mutator) деп те аталады.
Әрбір жеке атрибут үшін ұқсас сипаттардың жұбын жасау қажет емес. Сонымен, жоғарыда келтірілген мысалда адамның атын тек конструктордан ғана қоя аламыз. Ал алу үшін get_name әдісі анықталған.


Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   64




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет