Namespace
Þ
Konsep namespaces dibuat untuk menghindari
timbulnya konflik penamaan variabel, konstanta, nama fungsi dan nama kelas.
Þ
Namespaces sangat berguna saat menyelesaikan
program-program besar yang memiliki kompleksitas yang tinggi. Artinya, program akan
dipecah atau dikelompokkan berdasarkan namespace-namespace yang berlainan.
Mendefinisikan
Namespaces
• namespace
nama_namespaces {
• Deklarasi
yang akan dilakukan
• }
Contoh :
namespace a {
int x;
void cetakx();
{
cout <<"Nilai x didalam namespace A :
"<<x<<endl;
}
}
Operator Scope
Resolution
¨
Operator Scope Resolution digunakan untuk
memanggil variabel, konstanta, fungsi maupun kelas yang terdapat di dalam suatu
namespace
¨
Menggunakan operator : :
Contoh Program:
#include <iostream.h>
using namespace std;
namespace A {
int
x;
void
setX(int nilai)
{
x=nilai;
}
int
getX()
{
return
x;
}
}
int main()
{
A::x=100;
cout<<"Nilai
x didalam namespaces A : "<<A::x<<endl;
A::setX(200);
cout
<<"Nilai X didalam namespaces A :
"<<A::getX()<<endl;
return
0;
}
Output :
Keyword Using
¨
Digunakan untuk memanggil sebuah namespace
¨
Contoh
¨
using nama_namespace::member;
¨
using namespace nama_namespaces;
Anonymous namespace
¨
Namespaces khusus yang hanya dapat digunakan di
dalam satu buah file saja.
¨
Juga disebut unnamed namespace
Contoh :
ð
namespaces {
ð
//deklarasi yang akan dilakukan
ð
}
Alias namespace
¨
Apabila sebuah namespace terlalu panjang, maka
kita dapat mebuat alias untuk namespace tersebut dengan nama yang pendek
sehingga akan mudah dalam penggunaannya.
¨
Alias namespace bukan berarti membuat namespace
baru, melainkan membuat nama baru untuk sebuah namespace
Contoh :
ð
namespace nama_alias = nama_namespace;
Contoh Program :
#include <iostream.h>
namespace ContohSebuahNamespaceYangPanjang
{
int
alas=0;
int
tinggi=0;
double
luas;
void
setAlas(int nilai)
{
alas=nilai;
}
void
setTinggi(int nilai)
{
tinggi=nilai;
}
double
HitungLuas()
{
luas=(alas*tinggi)/2;
return
luas;
}
}
int main()
{
namespace
hitungLuas=ContohSebuahNamespaceYangPanjang;
hitungLuas::setAlas(10);
hitungLuas::setTinggi(3);
cout<<"Luas
adalah "<<hitungLuas::HitungLuas()<<endl;
return
0;
}
Output :
Namespace Bersarang
¨
Sebuah namespace tidak dapat didefinisikan di
dalam lingkup (Scope) program lainnya. Sebagai contoh kita tidak dapat
mendefinisikan namespace baru didalam sebuah fungsi, blok perulangan maupun
lingkup program lainnya.
¨
Namun sebuah namespace dapat didefinisikan
didalam sebuah namespace lainnya
¨
Hal ini disebut nested namespace atau namespace
bersarang.
Contoh Program :
#include <iostream.h>
namespace A
{
int
a;
}
int main()
{
int
i;
for(i=0;i<=10;i++)
{
namespace
B;
}
return
0;
}
Error :
Contoh program :
#include <iostream.h>
namespace Induk {
int i;
namespace
Anak {
int j;
}
}
int main() {
Induk::i
= 10;
Induk::Anak::j = 20;
cout<<"Nilai i : "<<Induk::i<<endl;
cout<<"Nilai j :
"<<Induk::Anak::j<<endl<<endl;
using
namespace Induk;
i =
30;
Anak::j =
40;
cout<<"Nilai i : "<<i<<endl;
cout<<"Nilai j :
"<<Anak::j<<endl<<endl;
using
namespace Anak;
i =
50;
j =
60;
cout<<"Nilai i : "<<i<<endl;
cout<<"Nilai j : "<<j<<endl<<endl;
return 0;
}
Output :
Namespace Std
ð
Dalam c++ standar, semua library yang digunakan
berada di dalam sebuah namespace yang dinamakan dengan namespace std
Summary
• Namespace
• Cara
mendefinisikan namespace
• Anonymous
namespace
• Alias
namespace
• Nested
namespace
No comments:
Post a Comment