-->

Pemrograman #7 - Modularitas



Mempertimbangkan situasi, ketika kita memiliki dua orang dengan nama yang sama, Zara, di kelas yang sama. Setiap kali kita perlu membedakan mereka pasti kita akan hams menggunakan beberapa informasi tambahan bersama dengan nama mereka, seperti daerah jika mereka tinggal di daerah yang berbeda atau nama ibu atau ayah mereka, dll.

Situasi yang sama dapat muncul di aplikasi C ++ Anda. Misalnya, Anda mungkin akan menulis beberapa kode yang memiliki fungsi yang disebut xyz() dan ada perpustakaan lain tersedia yang juga memiliki fungsi yang sama xyz(). Sekarang compiler tidak memiliki cara untuk mengetahui versi xyz () fungsi yang Anda maksud dalam kode Anda.

Namespace dirancang untuk mengatasi kesulitan ini dan digunakan sebagai informasi tambahan untuk membedakan mirip fungsi, kelas, variabel dll dengan nama yang sama yang tersedia di perpustakaan yang berbeda. Menggunakan namespace, Anda dapat menentukan konteks di mana nama-nama didefinisikan. Pada intinya, namespace mendefinisikan lingkup.

NAMESPACE

Definisi namespace dimulai dengan namespace kata kunci diikuti dengan nama namespace sebagai berikut:
namespace namespace_name {
   // code declarations 
} 
Untuk memanggil versi namespace-enabled baik fungsi atau variabel, tambahkan nama namespace sebagai berikut:
name::code // code bisa dari variabel atau fungsi.
Mari kita lihat bagaimana lingkup namespace entitas termasuk variabel dan fungsi:
#include <iostream>
using namespace std;

// first name space
namespace first_space {
  void func() {
    cout << "Inside first_space" << endl;
  }
}

// second namespace 
namespace second_space {
  void func() {
    cout << "Inside second_space" << endl;
  }
}

int main() {
  // calls function from first name space.
  first_space::func();

  // calls function from second name space
  second_space::func();

  return 0;
}
Hasil compile;
Inside first_space
Inside second_space

Using Directive

Anda juga dapat menghindari mengawali dari namespaces dengan menggunakan namespace Directive. Direktive ini memberitahu compiler bahwa
kode berikutnya adalah membuat penggunaan nama dalam namespace tertentu. N amespace demikian tersirat untuk kode berikut:
#include <iostream>
using namespace std;

// first name space
namespace first_space {
  void func() {
    cout << "Inside first_space" << endl;
  }
}

// second namespace 
namespace second_space {
  void func() {
    cout << "Inside second_space" << endl;
  }
}

using namespace first_space;
int main() {
  // calls function from first name space.
  func();

  return 0;
}
Jika kita mengkompilasi dan menjalankan kode di atas, m1 akan menghasilkan hasil sebagai berikut:
Inside first_space


Nested Namespaces

Namespaces dapat bersarang di mana Anda dapat menentukan salah satu namespace dalam ruang nama lain sebagai berikut:
namespace namespace_name1 {
  // code declaration

  namespace namespace_name2 {
    // code declaration
  }
}
Anda dapat mengakses anggota bersarang namespace dengan menggunakan operator resultion sebagai berikut:
// to access members of namespace_name2 
using namespace namespace_name1::namespace_name2; 
// to access members of namespace:namel 
using namespace namespace_namel; 
dalam laporan di atas jika Anda menggunakan namespace_name1, maka hal itu akan membuat elemen namespace_name2 tersedia di ruang lingkup sebagai berikut :
#include <iostream>
using namespace std;

// first name space
namespace first_space {
  void func() {
    cout << "Inside first_space" << endl;
  }
}

// second namespace 
namespace second_space {
  void func() {
    cout << "Inside second_space" << endl;
  }
}

using namespace first_space::second_space;
int main() {
  // calls function from first name space.
  func();

  return 0;
}
Hasil compile nya akan menjadi :
Inside second_space 
Load Comments

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel