Именно пространство: Разлика между версии

Изтрито е съдържание Добавено е съдържание
obvious factual error
м Bot: Automated text replacement (-( +(); козметични промени
Ред 120:
Класифицирането по именни пространства в C++ е йерархично. Например, ако разгледаме именното пространство храна::супа, идентификаторът пиле се отнася до храна::супа::пиле. Ако храна::супа::пиле не съществува, тогава се отнася до храна::пиле. Ако нито храна::супа::пиле, нито храна::пиле съществуват, тогава пиле се отнася до ::пиле, идентификатор в глобалното именно пространство.
 
Именните пространства в C++ най-често се използват, за да се избегнат т.нар "сблъсъци" при именуване. въпреки че именните пространства са широко използвани в този език, по-старите програми, които са писани на него, не ползват тази негова функционалност. Например, цялата стандартна библиотека на C++([http://en.wikipedia.org/wiki/C%2B%2B_standard_library standard library]) е дефинирана във namespace std, но преди стандартизацията много от компонентите ѝѝ се намират във глобалното именно пространство.
 
Следният пример демонстрира употребата на именни пространства в C++:
Ред 163:
В Java, идеята за именно пространство е пренесена в пакети(packages). Целият код представлява част от пакет, въпреки че изричното му посочване не е задължително. Достъпът до код от други пакети се осъществява чрез използването на името на пакета като представка пред съответния идентификатор, например класът String в пакета java.lang може да бъде достъпен като: java.lang.String([http://en.wikipedia.org/wiki/Fully_qualified_name тази конструкция представлява цялото име на даден клас]). Подобно на C++, Java предлага конструкция, която прави ненужно изписването името на пакета.
 
Въпреки това, определени функции( като [http://en.wikipedia.org/wiki/Reflection_(computer_science) отражението]) изискват от програмиста да използва пълната конструкция при извикването им. За разлика от C++, в Java именните пространства не са подредени йерархично по отношение на синтаксиса на езика. Въпреки това, именуването на пакетите е йерархично. Например, всички пакети започващи с java са част от платформата на езика — пакетът java.lang съдържа основните класове в Java и пакетът java.lang.reflect съдържа основните класове се отнасят конкретно за [http://en.wikipedia.org/wiki/Reflection_(computer_science) отражението].
 
В Java(както и Ada, C# и др.), именните пространства/пакетите изразяват семантични категории код. Например, в C# именното пространство System съдържа код, осигурен от .NET Framework.
 
Колко специфични са тези категории и от колко задълбочена йерархия са част, е различно при различните езици.