이름공간
개체를 구분할 수 있는 범위
위키백과의 이름공간에 대해서는 위키백과:이름공간 문서를 참고하십시오.
이름공간 또는 네임스페이스(영어: namespace)는 개체를 구분할 수 있는 범위를 나타내는 말로 일반적으로 하나의 이름 공간에서는 하나의 이름이 단 하나의 개체만을 가리키게 된다.
저명한 예는 다음을 포함한다:
- 파일 시스템은 파일에 이름을 할당하는 이름공간이다.[1]
- 일부 프로그래밍 언어들은 이름공간 안에 변수와 함수를 조직한다.[2][3][4] 컴퓨터 프로그래밍 언어인 C에서는 전역 지역 공간과 지역 이름 공간이라는 이름 공간에 대한 개념이 있는데, 각각의 이름 공간에서는 같은 변수나 함수 이름을 사용할 수 없지만, 영역이 다르면 변수나 함수명이 같을 수도 있다. C++와 Java 프로그래밍 언어에서는 이름 공간을 명시적으로 지정하여 사용할 수 있다.
- 컴퓨터 네트워크와 분산 시스템은 이름을 컴퓨터, 프린터, 웹사이트, (원격) 파일 등의 자원에 할당한다.
네이밍 시스템
편집이름공간의 이름은 이름공간 식별자와 로컬 이름으로 구성된다. 이름공간의 이름은 일반적으로 로컬 이름에 대한 두문자로 적용된다.
ABNF 형식으로는 다음과 같이 나타낸다.
name = <namespace identifier> separator <local name>
예
편집컨텍스트 | 이름 | 이름공간 식별자 | 로컬 이름 |
---|---|---|---|
경로 | /home/user/readme.txt | /home/user (path) | readme.txt (file name) |
도메인 네임 | www.example.com | example.com (domain) | www (host name) |
C++ | std::array | std | array |
UN/LOCODE | US NYC | US (country) | NYC (locality) |
XML | xmlns:xhtml="http://www.w3.org/1999/xhtml" <xhtml:body> |
http://www.w3.org/1999/xhtml | body |
펄 | $DBI::errstr | DBI | $errstr |
자바 | java.util.Date | java.util | Date |
URN (URN) | urn:nbn:fi-fe19991055 | urn:nbn (National Bibliography Numbers) | fi-fe19991055 |
핸들 시스템 | 10.1000/182 | 10 (Handle naming authority) | 1000/182 (Handle local name) |
디지털 객체 식별자 | 10.1000/182 | 10.1000 (publisher) | 182 (publication) |
MAC 주소 | 01-23-45-67-89-ab | 01-23-45 (en:organizationally unique identifier) | 67-89-ab (NIC specific) |
PCI ID | 1234 abcd | 1234 (Vendor ID) | abcd (Device ID) |
USB VID/PID | 2341 003f[5] | 2341 (Vendor ID) | 003f (Product ID) |
프로그래밍에서의 예
편집아래는 C++에 사용한 이름공간의 예이다.
#include <iostream>
using std::cout;
using std::endl;
namespace Box1{
int boxSide = 4;
}
namespace Box2{
int boxSide = 12;
}
int main () {
cout << Box1::boxSide << endl; //output 4
cout << Box2::boxSide << endl; //output 12
return 0;
}
같이 보기
편집- 디지털 객체 식별자 (DOI)
- IP 주소
- 학명
- 듀이 십진분류법
- 도메인 네임 시스템
- 미국의회도서관 분류법
- 성표
각주
편집- ↑ Adya, Atul; Bolosky, William; Castro, Miguel; Cermak, Gerald; Chaiken, Ronnie; Douceur, John; Howell, Jon; Lorch, Jacob; Theimer, Marvin; Wattenhofer, Roger (2002). 《FARSITE: Federated, Available, and Reliable Storage for an Incompletely Trusted Environment》 (PDF). Proc. USENIX Symp. on Operating Systems Design and Implementation. 2010년 7월 28일에 원본 문서 (PDF)에서 보존된 문서.
The primary construct established by a file system is a hierarchical directory namespace, which is the logical repository for files.
- ↑ “C# FAQ: What is a namespace”. http://en.csharp-online.net/: C# Online Net. 2013년 10월 20일에 원본 문서에서 보존된 문서. 2010년 2월 23일에 확인함.
A namespace is nothing but a group of assemblies, classes, or types. A namespace acts as a container—like a disk folder—for classes organized into groups usually based on functionality. C# namespace syntax allows namespaces to be nested.
- ↑ “An overview of namespaces in PHP”. 《PHP Manual》.
What are namespaces? In the broadest definition namespaces are a way of encapsulating items. This can be seen as an abstract concept in many places. For example, in any operating system directories serve to group related files, and act as a namespace for the files within them.
- ↑ “Creating and Using Packages”. 《Java Documentation》. Oracle.
A package is a grouping of related types providing access protection and name space management. Note that types refers to classes, interfaces, enumerations, and annotation types. Enumerations and annotation types are special kinds of classes and interfaces, respectively, so types are often referred to in this lesson simply as classes and interfaces.
- ↑ Stephen J. Gowdy. "List of USB ID's". 2013.
이 글은 컴퓨터 과학에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |