Namnrymd

Från Wikipedia
Hoppa till: navigering, sök
För Wikipedias namnrymder, se Wikipedia:Namnrymder.

Namnrymd (engelska: namespace) är en omgivning eller kontext i vilken alla namn är unika, dvs inte innehåller några homonymer eller andra tvetydigheter. Ofta definieras och används olika namnrymder just för att särskilja homonymer.

Namnmängd[redigera | redigera wikitext]

Enligt definitionen är mängden möjliga namn i en namnrymd oändligt, men i praktiken finns det oftast begränsningar som gör namnmängden ändlig. Ofta brukar ordet namnrymd användas även för dess namnmängd.

Exempel[redigera | redigera wikitext]

I programmering[redigera | redigera wikitext]

Inom programmering i allmänhet och objektorienterad programmering i synnerhet används namnrymder för att underlätta för programmeraren. Exempel på programspråk som implementerar namnrymder är C++, C# och VB.NET. Java använder sig av ett liknande koncept, paket, eller packages.

I C++ deklareras klasser, variabler och funktioner inuti en namnrymd:

namespace foo {
  int bar;
}

För att få tillgång till medlemmarna från en annan namnrymd importerar man alla medlemmar med följande kodrad:

using namespace foo;

De går då att referera till på samma sätt som om de hade befunnit sig i den aktuella namnrymden. I stället för att importera alla medlemmar kan man referera till en enstaka medlem genom att ange namnrymdens namn som ett prefix till medlemmens namn: foo::bar.

Även varje klass har sin egen namnrymd och det är enbart den namnrymden som används om inget annat anges. Det går dock bra att använda en variabel eller en funktion från en annan klass genom att ange den klassens namn som prefix.

class Box1 {
   int boxSide = 4;
}
 
class Box2 {
   int boxSide = 12; 
}
 
int main () {
  cout << Box1::boxSide << endl;  //output 4
  cout << Box2::boxSide << endl;  //output 12
  return 0;
}

I epostadresser[redigera | redigera wikitext]

E-postadresser är ett väldigt tydligt exempel på namnrymder. E-postadressen bill@example.com är unik; Det kan bara finnas en mottagare med just den adressen. Det kan finnas andra personer på andra företag som också har användarnamnet ”bill”, men eftersom varje domän är en egen namnrymnd så är deras adresser också unika.

En del organisationer som inte har beaktat problematiken med namnmängder har drabbats av problem när de har infört e-postadresser på formen förnamn.efternamn@example.com. Då har de inskränkt sin namnmängd för epostadresser så att den blir oanvändbar om där finns två eller fler personer med samma för- och efternamn.

I postadresser[redigera | redigera wikitext]

Det finns till exempel 160 stycken gatuadresser som heter ”Storgatan 17”[1] i Sverige, en del av dem ligger dessutom i samma kommun. För att särskilja dem används postnummer och postorter för namnrymdsindelning.

Referenser[redigera | redigera wikitext]

Noter[redigera | redigera wikitext]

  1. ^ ”Eniro”. 2011-02-15. http://kartor.eniro.se/query?what=maps&geo_area=storgatan+17. 

Källor[redigera | redigera wikitext]

Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, 2011-02-15.