Именски простор: Разлика помеѓу преработките

[непроверена преработка][непроверена преработка]
Избришана содржина Додадена содржина
Нема опис на уредувањето
Нема опис на уредувањето
Ред 1:
'''Namespace''' или именски простор е апстрактен контејнер или околина направена да држи логичко групирање на единствени [[идентификатор]]и или [[симбол]]и (на пример имиња). Идентификаторот дефиниран во namespaceименскиот простор е поврзан со тој namespaceименски простор. Истиот идентификатор може да биде независно дефиниран во повеќе namespacesименски простори. Тоа е поврзано со идентификатор дефиниран во еден namespaceименски простор и може но и немора да го имаат истото значење како и истиот идентификатор дефиниран во друг namespaceименски простор. Јазиците кои го поддржуваат namespaceименскиот простор одредуваат правила со кои се одредува кој идентификатор на кој namespaceименски простор припаѓа.
 
Во големи компјутерски [[програма | програми]] или [[документ]]и не е необично да имаат стотина или илјада идентификатори. NamespacesИменските простори пружат механизам за прикривање на локалните идентификатори. Тие овозможуваат групирање на логички сродни идентификатори во одговарачки namespaceименски простори, со што го прават системот помодуларен.
 
Компјутерските уреди за складирање и многу модерни [[компјутерски јазици]] овозможуваат поддршка за namespace. Уредите за складирање користат користат директории (или фолдери) како namespace. Ова овозможува два податотеки со исто име да бидат зачувани на уредот толку долго колку тие ќе бидат зачувни во различни директории. Во некои програмски јазици (на пр. [[C++]], [[Python]]), идентификаторите именовани namespace сами се поврзуваат со приложените namespace. Значи, во овие јазици namespace може да се вгнезди, формирајќи namespace [[дрво]]. На коренот на ова дрво е неименуван глобален namespace.
 
Компјутерските уреди за складирање и многу модерни [[компјутерски јазици]] овозможуваат поддршка за namespaceименски простор. Уредите за складирање користат користат директории (или фолдери) како namespaceименски простор. Ова овозможува два податотеки со исто име да бидат зачувани на уредот толку долго колку тие ќе бидат зачувни во различни директории. Во некои програмски јазици (на пр. [[C++]], [[Python]]), идентификаторите именовани namespaceво именски простор сами се поврзуваат со приложените namespaceименски простори. Значи, во овие јазици namespaceименскиот простор може да се вгнезди, формирајќи namespaceименски простор [[дрво]]. На коренот на ова дрво е неименуван глобален namespaceименски простор.
,
==Употреба во заеднички јазици==
Во C++, namespaceименскиот простор е дефиниран со namespaceименски простор - блок.
 
----
 
<source lang="cpp">
namespace abc {
int bar;
}
Ред 17 ⟶ 16:
 
----
Во овај блок идентификаторите можат да користат онака како што се објавени. Надвор од тој блок е namespaceименскиот простор и назначувачот мора да биде со префикс. На пример, надвор од namespaceименскиот простор abc, bar мора да биди напишана abc::bar за да биди пристапенo. C++ вклучува уште еден конструктор кој го причинува овај излив на зборови непотребно. Со додавање на линијата
 
Во овај блок идентификаторите можат да користат онака како што се објавени. Надвор од тој блок е namespace назначувачот мора да биде со префикс. На пример, надвор од namespace abc, bar мора да биди напишана abc::bar за да биди пристапенo. C++ вклучува уште еден конструктор кој го причинува овај излив на зборови непотребно. Со додавање на линијата
----
 
Ред 29 ⟶ 27:
----
на дел од кодот, префиксот abc:: не е потребен повеќе.
Кодот кој не е јасно деклариран со namespaceименски простор се смета за глобален namespaceименски простор.
NamespaceИменски простор резолуцијата во C и C++ е хиреархиски подредена. Тоа значи дека внатре во хипотетички namespaceименскиот простор храна: пилешко, супа идентивикаторот се однесува на храна: супа:: пилешка ако постои. Ако тоа не постои , тогаш се однесува на храна:: пилешко ако постои. Ако не постои, пилешкото се однесува и на идентификатор во глобален namespaceименски простор.
NamespaceИменскиот простор во C++ најчесто се користи за да се избегнат судари од имиња. Иако namesaceименскиот простор се користи значително во новиот C++ код, но кај постариот код не се користи овај објект. На пример, целата C++ стандардна библиотека е дефинирана во namespace std, но пред многу стандардизација на компонентите се изорно во глобален namespaceименски простор.
Во Java програмскиот јазик, идеата за namespaceименски простор e отелотворена во Java пакетот. Сите кодови припаѓаат на пакетот, иако тој пакет не треба да биди јасно именуван. Кодот од другите пакети е пристапен со префиксирање на името на пакетот пред погодниот иденитфикатор. На прмер: Стринг класата во пакетот java.lang може да биди позната java.lang.String ( ова е познато како потполно погодно име на класата).
Како и C++, Java нуди градење кое прави да е непотребно пишувањето на името на пакетот (внесување) . Меѓутоа одредени белези бараат од програмерот за користење на целосно квалифициран израз.
 
 
==XML namespaceименски простор==
 
Во [[XML]], [[XML namespace]] овозможува имињата на [[елемент]]ите и [[атрибут]]ите во XML [[документ]] да бидат единствени, слично како и namespaceименскиот простор во [[Програмски јазик | програмските јазици]]. Користејќи XML namespaceименски простор, XML документите можат да содржат елементи или атрибути на имиња од повеќе од еден XML [[речник]].
 
==Имитација на NamespaceИменскиот простор==
 
Во програмските јазици кои не пружат поддршка за namespaceименски простор, namespaceименскиот простор може да биде имитиран од одреден идентификатор. На пример, [[C Библиотека]]та како и [[Libpng]] често користат фиксирани [[префикс]]и за сите [[функција | функции]] и [[променлива | променливи]] што се дел од нивните изложени функции. Libpng изложува идентификатори, како што се:
 
png_create_write_struct
Ред 51 ⟶ 50:
Нажалост, оваа техника има неколку недостатоци:
*Поединци или организации може да користат драматично недоследно именување
*Сложените и испитувачките операции на идентификаторските групи, базирани на namespaceименски простор во кој се извршуваат, донесуваат непрактичност.
 
[[Категорија:Интернет]]
Ред 58 ⟶ 57:
[[en:Namespace_(computer_science)]]
[[de:Namensraum]]
[[fa:فضای نام‌نام (علوم رایانه)]]
[[fr:Espace de noms (programmation)]]
[[it:Namespace]]