Pemrograman D - Modul

Modul adalah blok bangunan D. Mereka didasarkan pada konsep sederhana. Setiap file sumber adalah modul. Karenanya, file tunggal tempat kami menulis program adalah modul individual. Secara default, nama modul sama dengan nama filenya tanpa ekstensi .d.

Ketika ditentukan secara eksplisit, nama modul ditentukan oleh kata kunci modul, yang harus muncul sebagai baris non-komentar pertama di file sumber. Misalnya, asumsikan bahwa nama file sumber adalah "karyawan.d". Kemudian nama modul ditentukan oleh kata kunci modul diikuti oleh karyawan . Seperti yang ditunjukkan di bawah ini.

module employee;

class Employee {
   // Class definition goes here. 
}

Garis modul adalah opsional. Jika tidak ditentukan, itu sama dengan nama file tanpa ekstensi .d.

Nama File dan Modul

D mendukung Unicode dalam kode sumber dan nama modul. Namun, dukungan Unicode untuk sistem file bervariasi. Misalnya, meskipun sebagian besar sistem file Linux mendukung Unicode, nama file dalam sistem file Windows mungkin tidak membedakan antara huruf kecil dan huruf besar. Selain itu, sebagian besar sistem file membatasi karakter yang dapat digunakan dalam nama file dan direktori. Untuk alasan portabilitas, saya menganjurkan agar Anda menggunakan hanya huruf kecil ASCII dalam nama file. Misalnya, "employee.d" akan menjadi nama file yang cocok untuk kelas bernama employee.

Oleh karena itu, nama modul akan terdiri dari huruf ASCII juga -

module employee;  // Module name consisting of ASCII letters 

class eëmployëë { }

Paket D

Kombinasi modul terkait disebut paket. Paket D juga merupakan konsep sederhana: File sumber yang ada di dalam direktori yang sama dianggap milik paket yang sama. Nama direktori menjadi nama paket, yang juga harus ditentukan sebagai bagian pertama dari nama modul.

Misalnya, jika "employee.d" dan "office.d" ada di dalam direktori "company", maka menentukan nama direktori bersama dengan nama modul membuatnya menjadi bagian dari paket yang sama -

module company.employee; 
 
class Employee { }

Demikian pula, untuk modul kantor -

module company.office; 
 
class Office { }

Karena nama paket sesuai dengan nama direktori, nama paket modul yang lebih dalam dari satu tingkat direktori harus mencerminkan hierarki itu. Misalnya, jika direktori "perusahaan" menyertakan direktori "cabang", nama modul di dalam direktori itu juga akan menyertakan cabang.

module company.branch.employee;

Menggunakan Modul dalam Program

Kata kunci import, yang telah kami gunakan di hampir setiap program sejauh ini, adalah untuk memperkenalkan modul ke modul saat ini -

import std.stdio;

Nama modul mungkin berisi nama paket juga. Misalnya, std. bagian di atas menunjukkan bahwa stdio adalah modul yang merupakan bagian dari paket std.

Lokasi Modul

Kompilator menemukan file modul dengan mengubah nama paket dan modul langsung ke nama direktori dan file.

Misalnya, dua modul karyawan dan kantor akan ditempatkan masing-masing sebagai "perusahaan / karyawan.d" dan "hewan / kantor.d" (atau "perusahaan \ karyawan.d" dan "perusahaan \ kantor.d", bergantung pada sistem file) untuk perusahaan.pekerja dan perusahaan.kantor.

Nama Modul Panjang dan Pendek

Nama-nama yang digunakan dalam program ini dapat dieja dengan modul dan nama paket seperti yang ditunjukkan di bawah ini.

import company.employee; 
auto employee0 = Employee(); 
auto employee1 = company.employee.Employee();

Nama yang panjang biasanya tidak diperlukan tetapi terkadang ada konflik nama. Misalnya, ketika merujuk ke nama yang muncul di lebih dari satu modul, kompilator tidak dapat memutuskan yang mana yang dimaksud. Program berikut mengeja nama panjang untuk membedakan antara dua struct karyawan terpisah yang ditentukan dalam dua modul terpisah: perusahaan dan perguruan tinggi. .

Modul karyawan pertama di perusahaan folder adalah sebagai berikut.

module company.employee; 
 
import std.stdio;
  
class Employee {
   public: 
      string str; 

   void print() {
      writeln("Company Employee: ",str); 
   } 
}

Modul karyawan kedua di folder college adalah sebagai berikut.

module college.employee;
  
import std.stdio;  

class Employee {
   public: 
      string str;
	
   void print() {
      writeln("College Employee: ",str); 
   } 
}

Modul utama di hello.d harus disimpan di folder yang berisi folder kampus dan perusahaan. Itu adalah sebagai berikut.

import company.employee; 
import college.employee; 
 
import std.stdio;  

void main() {
   auto myemployee1 = new company.employee.Employee();
   myemployee1.str = "emp1"; 
   myemployee1.print();
   
   auto myemployee2 = new college.employee.Employee(); 
   myemployee2.str = "emp2"; 
   myemployee2.print(); 
}

Kata kunci import tidak cukup untuk membuat modul menjadi bagian dari program. Ini hanya menyediakan fitur modul di dalam modul saat ini. Sebanyak itu hanya diperlukan untuk mengkompilasi kode.

Untuk program di atas yang akan dibangun, "perusahaan / karyawan.d" dan "perguruan tinggi / karyawan.d" juga harus ditentukan pada baris kompilasi.

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

$ dmd hello.d company/employee.d college/employee.d -ofhello.amx 
$ ./hello.amx 
Company Employee: emp1 
College Employee: emp2