Thói quen của sinh viên là viết Code luôn tuồn trên cùng một file. Khi biên dịch, file đó có kích thước rất lớn, chương trình chạy chậm, dễ phát sinh lỗi, vân vân và vân vân. Vậy làm thế nào để có thể tách các thành phần trong code ra thành những file riêng?
Nếu bạn chưa có nền tảng về lập trình hướng đối tượng bằng C++, hãy quay lại blog này sớm nhất có thể ngay khi bạn đủ khả năng nhé.
Việc tạo class trong file riêng bắt buộc bạn phải dùng câu lệnh include một thư viện nhiều lần. Trong file riêng và trong chương trình chính
Thay vào đó, trong file header của class, hãy thêm câu lệnh sau:
Để giúp các bạn hình dung rõ hơn, bạn có thể xem một số screen shot
Khai báo tên class trong PhoneNumber.h
Sau đó, trong file định nghĩa cc1 hàm thành viên của PhoneNumber, ta include thêm file “PhoneNumber.h”
Sau cùng là Include nó vào hàm Main.
Chương trình sẽ chạy trơn tru
Một cách khác mới hơn, đơn giản hơn (nhưng cũng đòi hỏi trình biên dịch là Visual Studio 2005 trở lên)
Thêm dòng này vào đầu của file .h. Nó sẽ thông báo cho trình biên dịch chỉ include các thư viện 1 lần duy nhất.
Bây giờ, chúng ta hãy xem cách tạo class trong file riêng nhé.
Để minh họa, tôi sẽ tạo một class MyInt đơn giản, dùng để biểu diễn số nguyên
Đầu tiên, khởi động Visual Studio
Chọn loại Project mong muốn, đặt tên cho nó và nhấn OK
Bấm Finish ở Wizard tạo Project
Sau đó, Visual Studio (VS) sẽ tạo một project mới cho bạn, với tên bạn đặt và header đã được biên dịch sẵn là stdadx.h
Để thêm mới một class bằng cách thông thường, click phải vào Header Files, chọn Add > New Item…
Chọn Header File
Đặt tên cho nó và nhấn Add
Một file mới hoàn toàn có tên MyInt.h được tạo ra. Đây là file dành cho việc khai báo class MyInt. Bạn cũng có thể định nghĩa class trong file này, nhưng việc đó không được khuyến cáo
Như bạn có thể thấy, chúng ta sử dụng kỹ thuật “#pragma once” để tránh include quá nhiều thư viện
Tương tự, hãy Add một file MyInt.cpp mới trong thư mục Source Files
Sau đó, hãy định nghĩa các thuộc tính và hàm của lớp MyInt trong file MyInt.cpp
Ở dòng 7, vì class MyInt được khai báo ở file header MyInt.h, nên bạn phải include nó vào để sử dụng.
Thế là xong.
Có một cách khác để tạo class trong file riêng bằng Wizard của VS.
Trong thư mục Header Files, click phải, chọn Add > Class…
Chọn CPP class rồi bấm Add
Trong Wizard mới hiện ra, bạn chỉ cần gõ tên class, tên file header và file source sẽ được tạo tự động
Bấm Finish, ngay lập tức, 2 file mới sẽ được tạo, có sẵn code và được phân phối và thư mục tương ứng
Code tạo sẵn trong file header MyInt2.h
Code tạo sẵn trong file source MyInt2.cpp
Như vậy, tất cả công việc ta làm bằng tay đều được VS làm tự động, nhưng nó sinh ra một số code dư thừa. Nhiều lập trình viên không thích điều này, họ vẫn thích tự tạo class file cho mình hơn.
Về việc sử dụng Namespace
Như đã nói ở trên, lập trình hướng đối tượng với VC++ 2010, sinh viên thường “#include” rất nhiều thư viện dư thừa, rồi sau đó “using namespace std;”
Điều đó không cần thiết. Trong namespace “std”, tức STANDARD, có rất nhiều hàm xây dựng sẵn mà bạn không cần dùng. Dùng hàm nào, bạn khai báo hàm đó.
Ví dụ như hình trên, tôi dùng hàm cout, cin, endl nên chỉ khai báo 3 hàm đó thôi.
3 hàm này nằm trong thư viện iostream
Một số thư viện thường dùng:
Nếu bạn chưa có nền tảng về lập trình hướng đối tượng bằng C++, hãy quay lại blog này sớm nhất có thể ngay khi bạn đủ khả năng nhé.
Việc tạo class trong file riêng bắt buộc bạn phải dùng câu lệnh include một thư viện nhiều lần. Trong file riêng và trong chương trình chính
#include "stdafx.h"Không cần phải làm như vậy. Việc include một thư viện trùng lặp sẽ phát sinh lỗi.
#include “iostream”
using namespace std;
Thay vào đó, trong file header của class, hãy thêm câu lệnh sau:
#ifndef TÊNCLASS_HSau đó, trong hàm main, bạn include thêm file header.h vừa tạo
#define TÊNCLASS_H
các thư viện cần thiết
các dòng lệnh
#endif
Để giúp các bạn hình dung rõ hơn, bạn có thể xem một số screen shot
Khai báo tên class trong PhoneNumber.h
Sau đó, trong file định nghĩa cc1 hàm thành viên của PhoneNumber, ta include thêm file “PhoneNumber.h”
Sau cùng là Include nó vào hàm Main.
Chương trình sẽ chạy trơn tru
Một cách khác mới hơn, đơn giản hơn (nhưng cũng đòi hỏi trình biên dịch là Visual Studio 2005 trở lên)
#pragma once
Thêm dòng này vào đầu của file .h. Nó sẽ thông báo cho trình biên dịch chỉ include các thư viện 1 lần duy nhất.
Bây giờ, chúng ta hãy xem cách tạo class trong file riêng nhé.
Để minh họa, tôi sẽ tạo một class MyInt đơn giản, dùng để biểu diễn số nguyên
Đầu tiên, khởi động Visual Studio
Chọn loại Project mong muốn, đặt tên cho nó và nhấn OK
Bấm Finish ở Wizard tạo Project
Sau đó, Visual Studio (VS) sẽ tạo một project mới cho bạn, với tên bạn đặt và header đã được biên dịch sẵn là stdadx.h
Để thêm mới một class bằng cách thông thường, click phải vào Header Files, chọn Add > New Item…
Chọn Header File
Đặt tên cho nó và nhấn Add
Một file mới hoàn toàn có tên MyInt.h được tạo ra. Đây là file dành cho việc khai báo class MyInt. Bạn cũng có thể định nghĩa class trong file này, nhưng việc đó không được khuyến cáo
Như bạn có thể thấy, chúng ta sử dụng kỹ thuật “#pragma once” để tránh include quá nhiều thư viện
Tương tự, hãy Add một file MyInt.cpp mới trong thư mục Source Files
Sau đó, hãy định nghĩa các thuộc tính và hàm của lớp MyInt trong file MyInt.cpp
Ở dòng 7, vì class MyInt được khai báo ở file header MyInt.h, nên bạn phải include nó vào để sử dụng.
Thế là xong.
Có một cách khác để tạo class trong file riêng bằng Wizard của VS.
Trong thư mục Header Files, click phải, chọn Add > Class…
Chọn CPP class rồi bấm Add
Trong Wizard mới hiện ra, bạn chỉ cần gõ tên class, tên file header và file source sẽ được tạo tự động
Bấm Finish, ngay lập tức, 2 file mới sẽ được tạo, có sẵn code và được phân phối và thư mục tương ứng
Code tạo sẵn trong file header MyInt2.h
Code tạo sẵn trong file source MyInt2.cpp
Như vậy, tất cả công việc ta làm bằng tay đều được VS làm tự động, nhưng nó sinh ra một số code dư thừa. Nhiều lập trình viên không thích điều này, họ vẫn thích tự tạo class file cho mình hơn.
Về việc sử dụng Namespace
Như đã nói ở trên, lập trình hướng đối tượng với VC++ 2010, sinh viên thường “#include” rất nhiều thư viện dư thừa, rồi sau đó “using namespace std;”
Điều đó không cần thiết. Trong namespace “std”, tức STANDARD, có rất nhiều hàm xây dựng sẵn mà bạn không cần dùng. Dùng hàm nào, bạn khai báo hàm đó.
Ví dụ như hình trên, tôi dùng hàm cout, cin, endl nên chỉ khai báo 3 hàm đó thôi.
3 hàm này nằm trong thư viện iostream
Một số thư viện thường dùng:
- stdafx.h – tiêu chuẩn cho VC++ 2010
- iostream – chứa các hàm cout, cin, endl
- string – chứa các hàm xử lý chuỗi
- iomanip – chứa hàm định khoảng cho output (setw, serfill)
- conio.h – chứa hàm getch(). Hàm này thường được dùng để dừng màn hình. Nhưng không nên sử dụng nó.
THANK BAN RAT NHIEU
Trả lờiXóaban co the viet mot bai hoan chinh tu a ->z duoc ko?
Trả lờiXóa