Кіріспе

Компьютерлік бағдарламалау принципі

Компьютерлік бағдарламалаудың бірыңғай қолжетімділік принципі алғаш рет Бертран Мейердің "Объектіге бағытталған бағдарламалық жасақтама құрастыру" кітабында ұсынылған. Онда былай делінген: "Модуль ұсынатын барлық қызметтер бірыңғай жазу арқылы қолжетімді болуы керек, олар сақтау арқылы немесе есептеу арқылы іске асырылғандығын көрсетпеуі тиіс". Бұл принцип, көбінесе объектіге бағытталған бағдарламалау тілдерінің синтаксисіне қатысты қолданылады. Тұжырымдаманы қарапайым түрінде айтқанда, объектінің атрибутымен, алдын ала есептелген қасиетімен немесе әдісімен/сұрауымен жұмыс істеу арасында ешқандай синтаксистік айырмашылық болмауы керек. Көптеген мысалдар принциптің "оқу" жағына (яғни мәнді алуға) назар аударса, Мейер принциптің "жазу" (яғни мәнді өзгерту) салдарымен күресудің қиындығын Эйфель бағдарламалау тілінің ресми веб-сайтындағы ай сайынғы бағанында көрсетіп береді.

Түсіндірме

Мейер қарастырған мәселе үлкен бағдарламалық жобаларды немесе бағдарламалық кітапханаларды қолдауды қамтиды. Бағдарламалық жасақтаманы әзірлеу немесе күтіп-ұстау кезінде, көп код жазылғаннан кейін, сыныпты немесе объектіні өзгерту қажет болуы мүмкін, бұл жай ғана атрибутқа қатынауды әдіс шақыруына айналдырады. Бағдарламалау тілдері көбінесе атрибуттарға қол жеткізу және әдісті шақыру үшін әртүрлі синтаксис қолданады (мысалы, . және ). Синтаксистік өзгеріс сол кездегі танымал бағдарламалау тілдерінде атрибут қолданылған барлық жерде бастапқы кодты өзгертуді қажет етеді. Бұл бастапқы кодты өте үлкен көлемдегі, көптеген әртүрлі орындарда өзгертуді талап етуі мүмкін. Жағдай одан да нашар болады, егер өзгеріс жүздеген клиенттер пайдаланатын нысандар кітапханасында жасалса, онда әрбір клиент өз кодын қарап, атрибут қолданылған барлық жерді тауып, өзгертіп, бағдарламаларын қайта құрастыруға мәжбүр болады. Кері жағдайда (әдістен қарапайым атрибутқа) проблема тумайды, себебі функцияны сақтап, одан атрибут мәнін қайтаруға болады. Мейер бағдарламашылардың кодты жазу қажеттілігін түсінді, осылайша объект атрибутын әдіс шақыруына немесе керісінше түрлендіретін өзгерістерден туындайтын каскадтық өзгерістерді азайтуға немесе жоюға болады. Ол осы мақсатта Бірыңғай қолжетімділік қағидасын (Uniform Access Principle) әзірледі. Көптеген бағдарламалау тілдері UAP-ті қатаң түрде қолдамаса да, оның кейбір формаларын қолдайды. Бірқатар бағдарламалау тілдерінде ұсынылған қасиеттер (Properties) Мейердің UAP-мен шешкен мәселені басқа тәсілмен шешеді. Бірде-бір бірыңғай белгілеудің орнына, қасиеттер атрибутқа қатынау үшін қолданылатын белгілеуді пайдалана отырып, объектінің әдісін шақыруға мүмкіндік береді. Әдіс шақыру синтаксисі бұрынғысынша қолжетімді.

C++ тілінде

C++-да UAP та, қасиеттер де жоқ. Объект өзгерген кезде атрибут (мысалы, түс) екі функцияға айналады. Осы объектінің инстанциясын пайдаланатын және атрибут мәнін орнататын немесе алатын кез келген жерде, осы функциялардың бірін шақыру үшін өзгеріс енгізілуі керек. (немесе). Үлгілерді (templates) және операторларды жүктеу арқылы қасиеттерді имитациялауға болады, бірақ бұл қасиеттерді тікелей қолдайтын тілдерге қарағанда қиынрақ. Бұл C++ бағдарламаларын күтуді уақыттырақ етеді. C++ объектілерінің бөлінген кітапханалары мүшелік деректерге қол жеткізуді қамтамасыз етуде сақтық танытуы керек.

JavaScript-ті қолдану

JavaScript 2009 жылдан бері есептелген қасиеттерді қолдайды.