ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Espaço de nomes - Wikipédia, a enciclopédia livre

Espaço de nomes

Origem: Wikipédia, a enciclopédia livre.

Um espaço de nomes é um container abstrato que fornece contexto para os itens que armazena (nomes, termos técnicos, conceitos...), e que fornece desambiguação para itens que possuem o mesmo nome mas que residem em espaços de nomes diferentes. Tendo em vista que é fornecido um contexto distinto para cada container, o significado de um nome pode variar de acordo com o espaço de nomes o qual ele pertence.

Por definição, dois conceitos de um espaço de nomes não podem compartilhar o mesmo nome. Entretanto, um mesmo conceito pode existir em mais de um espaço de nomes. Por exemplo, João trabalha para a empresa X e seu código é 123. José trabalha para a empresa Y e seu código também é 123. A razão pelo qual João e José podem ser identificados pelo mesmo código é porque eles trabalham para empresas diferentes. As diferentes empresas representam espaços de nome distintos para o código de identificação de funcionário. Na empresa Z, o código 123 identifica uma das geladeiras sendo montada na linha de produção: nota-se que o contexto do mesmo identificador variou entre a empresa Z e as outras empresas.

[editar] Ciência da computação

Em um sistema operacional, um exemplo de espaço de nomes é um diretório, que possui arquivos e sub-diretórios que devem ter nomes distintos entre si.

Em várias linguagens de programação, um espaço de nomes é um contexto para identificadores. Um mesmo espaço de nomes não pode possuir duas funções ou variáveis com o mesmo nome. No entanto, é permitido em linguagens de programação embarcar espaços de nomes em outros espaços de nomes, formando uma árvore de espaços de nomes. A raiz da árvore é conhecida como o espaço de nomes global, que é visível para todos os outros espaços de nomes de um programa de computador. Esse recurso é usado para organizar projetos de programas de computador de forma modular. Também é usado para evitar colisão de nomes: quando utilizam-se duas bibliotecas de rotinas distintas em um mesmo projeto, pode acontecer que uma mesma função está declarada em ambas. Sem o uso de espaço de nomes, as bibliotecas não podem ser usada em conjunto (em um mesmo módulo).

O escopo de uma função ou de uma classe pode ser entendido como um espaço de nomes implícito, associado com a visibilidade, acessiblidade e tempo de vida dos identificadores membros.

Em C++, um espaço de nomes é declarado através de um bloco. Para utilizar um identificador de um espaço de nomes em outro, deve-se especificar o prefixo do identificador, isto é, o caminho em profundidade desde o espaço de nomes global até o espaço de nomes o qual o identificador pertence (separados por ::).

namespace foo
{
   int var;
}
 
namespace bar
{
   int var; // note que "var" já também foi declarado no espaço de nomes acima
 
   namespace embarcado // embarcando um espaço de nomes em outro
   {
      int i;
   }
}
 
int valor; // variável declarada no espaço de nomes global
 
void func()
{
   int valor; // uma função pode ser entendida como um espaço de nomes:
              // não há colisão de nomes como a variável global de mesmo nome
 
   bar::embarcado::i = 3; // utilizando um identificador de um espaço de nomes em outro
}

Em Java, a idéia de espaço de nomes é embarcada na funcionalidade de pacotes. Todo o código pertence a um pacote, e identificadores de pacotes diferentes são utilizados atráves da especificação por prefixos. Diferente de C++, os espaços de nomes em Java não possuem hierarquia que a sintaxe da linguagem conheça. Entretanto, a nomeação de pacotes é feita de forma hierárquica.

[editar] Ver também


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -