TểM TẮT CHƯƠNG 4 : C++/CLI NÂNG CAO
2) Header file và source file
Trong các ví dụ đãđ ềcập trong các chương trước, chương trìnhứng dụng mà chúng ta xây dựng chỉ bao gồm một file duy nhất. Tuy nhiên, cách này chỉ thích hợp đối với các chương trình nhỏ không phức tạp. Đối với những chương trình ứng dụng lớn, phức tạp, nên chia thành nhiều thành phần nhỏ, mỗi thành phần thực hiện một nhiệm vụnhất định. Việc chia chương trình thành những phần nhỏ có thể được thực hiện bằng nhiều cách; cách thông dụng nhất là chia mã code thành những nhóm nhỏ, mỗi nhóm này được gọi là một thư viện (library). Mỗi thư viện này thực chất là một file riêng; khi biên dịch, mỗi file được biên dịch thành một file đối tượng riêng (file .obj), sau đó các file này sẽ được liên kết lại trong quá trình liên kết thành một file thực thi duy nhất (file .exe).
Việc khai báo các thư viện này còn có một ưu điểm nữa là nếu như ta xây dựng một chương trình ứng dụng khác và trong chương trình mới này có sử dụng những tài nguyên (hàm, biến hay class) đãđược xây dựng trong một thư viện của chương trình trước, ta có thểsửdụng lai những tài nguyên này mà không cần phải xây dựng lại bằng cách sửdụng lại thư viện này.
Hầu hết các thư viện thường được tách thành hai dạng file : header file và source file.
a) Header file :
Header file cũng tương tự như các file lập trình mà chúng tađã làm quen trong các chương trước. Điểm khác biệt là header file thường được lưu với đuôi .h thay vì .cpp. Chúng ta có thể dùng notepad đểxây dựng header file giống như cách chúng ta xây dựng các file .cpp trước đây (nhưng lưu filevới đuôi .h),hoặc xây dựng trực tiếp trong 1 project.
chuột phải vào dòng Header Files và chọn Add ->New Item (trong trường hợp muốn sửdụng một header file đã có sẵn thì chọn Existing Item).
Trong cửa sổAdd New Item, chọn kiểu file là header và nhập tên của file vào ô Name.
Thông thường, một thư viện sẽ bao gồm một header file và source file. Trong đó, header file chỉ chứa các khai báo về biến, hàm hay class còn source file chứa mã lệnh đầy đủ của các biến, hàm và class đãđược khai báo trong header file.
Header file + Source file = Complete source VD : //Sinh_vien.h
using namespace System;
int x,y,z;
String^ A,B,C;
void Print(String^ A);
UInt32 Fractorial (UInt16 a);
ref class Sinh_vien {
public:
String^ Ho_ten;
UInt32 MSSV;
String^ Nganh_hoc;
void Show();
};
Trong ví dụ trên, trong header file đã khai báo các biến x,y,z và A,B,C cùng các hàm Print() , Fractorial() và class Sinh_vien. Chú ý làđây chỉlà các khai báo vềbiến, hàm và class.
b) Source file :
Nếu như header file chứa các khai báo thì source file sẽchứa mã lệnh thực thi các khai báo.
Source file có đuôi .cpp.
Để tạo một source file trong 1 project, trong cửa sổ Solution Explorer của project, click chuột phải vào dòng Source Files và chọn Add ->New Item (trong trường hợp muốn sửdụng một sourcefile đã có sẵn thì chọn Existing Item).
Trong cửa sổAdd New Item, chọn kiểu file là C++ File và nhập tên của file vào ô Name.
Trong source file ta sẽxây dựng các hàm đã khai báo trong header file.
VD : //Sinh_vien.cpp
#include “Sinh_vien.h”
using namespace System;
x = 10;
y = 20;
z = 8111;
A = “Nguyen Van A”;
B = “Co dien tu”;
C = “SPKT”;
void Print(String^ A) {
Console::WriteLine(A);
}
UInt32 Fractorial (UInt16 a) {
if (a > 1) return (a*Factorial(a-1));
else return 1;
}
void Sinh_vien::Show() {
Console::WriteLine(Ho_ten);
Console::WriteLine(MSSV);
Console::WriteLine(Nganh_hoc);
}
thực hiện qua các chương trước.Hai điểm mới làở đầu chương trình có thêm dòng lệnh #include
“Sinh_vien.h” (được gọi là chỉ thị tiền xử lí) và khi tạo phương thức Show() của class Sinh_vien chúng ta cần phải khai báo class quản lí phương thứcvoid Sinh_vien::Show()(khác so với cách khai báo thông thường trong class là void Show()).
Lưuý : Trong header file và source file có thểkhai báo hàm main(). Tuy nhiên, nếu chúng ta chỉ sửdụng header file và source file làm thư viện cho chương trình ứng dụng thì không nên khai báo hàm main().
Nếu trong chương trình ứng dụng, chúng ta muốn sử dụng một thư viện nào đó, ta có thể gọi thư viện đó ra thông qua cácchỉthịtiền xửlí.
VD : //Program.cpp
#include “Sinh_vien.h”
#include “window.h”