[CPP01] Tạo Class trong file riêng với Visual Studio 2010

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
#include "stdafx.h"
#include “iostream
using namespace std;
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.
Thay vào đó, trong file header của class, hãy thêm câu lệnh sau:
#ifndef TÊNCLASS_H
#define TÊNCLASS_H
các thư viện cần thiết
các dòng lệnh
#endif
Sau đó, trong hàm main, bạn include thêm file header.h vừa tạo
Để giúp các bạn hình dung rõ hơn, bạn có thể xem một số screen shot
04-11-2011 7-41-49 PM
Khai báo tên class trong PhoneNumber.h
04-11-2011 7-44-18 PM
Sau đó, trong file định nghĩa cc1 hàm thành viên của PhoneNumber, ta include thêm file “PhoneNumber.h”
04-11-2011 7-45-44 PM
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


04-01-2012 10-57-58 AM


Chọn loại Project mong muốn, đặt tên cho nó và nhấn OK


04-01-2012 10-59-17 AM


Bấm Finish ở Wizard tạo Project


04-01-2012 11-04-33 AM


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


04-01-2012 11-08-05 AM


Để 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…


04-01-2012 11-11-10 AM


Chọn Header File


04-01-2012 11-12-04 AM


Đặt tên cho nó và nhấn Add


04-01-2012 11-12-53 AM


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


04-01-2012 11-15-05 AM


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


04-01-2012 11-18-01 AM


04-01-2012 11-18-17 AM


04-01-2012 11-18-38 AM


04-01-2012 11-19-08 AM


Sau đó, hãy định nghĩa các thuộc tính và hàm của lớp MyInt trong file MyInt.cpp


04-01-2012 11-22-36 AM


Ở 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…


04-01-2012 11-27-20 AM


Chọn CPP class rồi bấm Add


04-01-2012 11-28-47 AM


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


04-01-2012 11-29-46 AM


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


04-01-2012 11-33-11 AM


Code tạo sẵn trong file header MyInt2.h


04-01-2012 11-32-08 AM


Code tạo sẵn trong file source MyInt2.cpp


04-01-2012 11-35-12 AM


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.


04-11-2011 7-49-27 PM


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ó.

Nhận xét

Đăng nhận xét

Vui lòng để lại ý kiến đóng góp của bạn cho bài viết được hoàn thiện hơn