Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Mục lục
Mục lục 1
Lời nói đầu 3
Phần 1 .Tổng quan về lập trình hướng đối tượng
1.1. Abstraction ( tính trừu tượng) 4
1.2 .Encap sulation (sự đóng kín) 5
1.3. Modularity (modun hóa) 6
1.4. Hierachy (hệ thống phân cấp) 6
1.5. Kiểm tra kiểu ( typing ) 6
1.6. Bản chất của đối tượng 7
1.7. Mối quan hệ giữa các đối tượng 7
1.8. Bản chất của lớp 8
1.9. Mối quan hệ giữa các lớp 8
Phần 2.Visual C++ 6.0
2.1.Cách cài đặt 10
2.2.Giao diện chương trình 16
2.3.Các thao tác cơ bản với Menu và Toolbar của VC++ 6.0 17
2.4.Các môi trường xây dựng ứng dụng trong VC++ 6.0 19
Phần 3. Hướng dẫn lập trình VC++6.0
Chương 1.Các thao tác với lớp, hàm, biến
3.1.1.Đưa các file có sẵn vào trong chương trình ứng dụng 20
3.1.2.Thêm lớp mới vào trong chương trình 23
3.1.3.Thêm một hàm mới nằm trong lớp 25
3.1.4.Cách thêm một biến mới. 27
Chương 2.Tạo các menu, toolbar và các thao tác cơ bản
3.2.1.Tạo Menu 31
3.2.2.Tạo ToolBar mới 33
3.2.3. Tác động các sự kiện lên đối tượng 34
3.2.4. Đẩy một icon lên nút bấm trong ứng dụng 35
3.2.5.Tạo các ToolTip(chú thích )cho đối tượng 36
3.2.6.Tác động tới biểu tượng chuột trong ứng dụng 38
Chương 3.Sử dụng font và giờ hệ thống
3.3.1.Lấy font hệ thống viết text và thao tác vẽ lên màn hình 39
3.3.2.Thiết kế một Dialog riêng đưa nó vào Dialog chính ,cập nhật giờ
hệ thống
45
Chương 4. Đọc, hiển thị và lưu file text
3.4.1.Đọc và hiển thị nội dung file 52
3.4.2.Ghi nội dung lên file 53
3.4.2.1.Ghi nội dung lên file có sẵn 53
3.4.2.2.Ghi dữ liệu lên một file mới 54
3.4.3.Ví dụ minh hoạ . 55
Chương 5.Sử dụng ActiveX trong ứng dụng 66
Chương 6.Giao tiếp máy tính
3.6.1.Các hàm trong VC++ trong giao tiếp máy tính 76
Hướng dẫn lập trình VC ++ 6.0
Trang 1
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
3.6.1.1.Hàm CreateFile 76
3.6.1.2.Hàm SetupComm 78
3.6.1.3.Hàm PurgeComm 79
3.6.1.4.Cấu trúc DCB 79
3.6.1.5.Hàm GetCommState 83
3.6.1.6.Hàm SetCommState 83
3.6.1.7.Cấu trúc COMSTAT 84
3.6.1.8.Hàm ReadFile 85
3.6.1.9.Hàm WriteFile 86
3.6.2.Giao tiếp máy tính với các thiết bị bên ngoài bằng chuẩn giao tiếp
RS232
87
Chương 7.VC++ với thiết kế 3D
3.7.1.Include file header và library 101
3.7.2.Sử dụng hàm PreCreateWindow 101
3.7.3.Hàm OnCreate 101
3.7.3.1.Mô tả PixelFormat 101
3.7.3.2.Chọn và thiết lập cho PixelFormat 102
3.7.3.3.Tạo một ngữ cảnh để tô bóng (Rendering Context ) 102
3.7.4.Hàm OnSize ( ) 102
3.7.5.Hàm OnEraseBkgnd 103
3.7.6.Hàm OnInitialUpdate 103
3.7.7.Hàm OnDraw(CDC*pDC) 103
3.7.8.Các hàm DrawScene 103
3.7.9.Ví dụ minh hoạ 103
Chương 8 .Đóng gói chương trình ,tạo bộ cài đặt .
3.8.1.Thêm thành phần Installshield for Microsoft Visual C++ 6.0 109
3.8.2.Các thao tác để đóng gói với InstallShield . 110
Chương 9.Thiết kế chương trình mô phỏng điều khiển máy CNC
3.9.1.Chức năng của chương trình 118
3.9.2.Thiết kế giao diện 119
3.9.2.1.Thiết kế giao diện chính 119
3.9.2.2.Thiết kế các hộp thoại phụ 122
3.9.2.3.Thiết kế thanh menu 127
3.9.3.Viết code cho chương trình 128
3.9.3.1.Viết code cho hộp thoại Configure 128
3.9.3.2.Viết code cho hộp thoại Define Zero Point 129
3.9.3.3.Viết Code cho hộp thoại Edit Code 130
3.9.3.4.Viết Code cho hộp thoại New 130
3.9.3.5.Viết code cho hộp thoại Tool Demension 131
3.9.3.6.Viết code cho hộp thoại To Any Point 131
3.9.3.7.Viết code cho chương trình chính 132
Tài liệu tham khảo 159
Hướng dẫn lập trình VC ++ 6.0
Trang 2
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
LỜI NÓI ĐẦU
Trong sự phát triển ngày càng lớn mạnh của khoa học công nghệ, vấn đề kết hợp các
lĩnh vực điện tử - tin học và cơ khí đang rất được quan tâm .Một trong những đề tài thu
hút được sự quan tâm của các sinh viên cơ khí đó là sử dụng ngôn ngữ lập trình để tạo
ra các ứng dụng điều khiển và mô phỏng quá trình của máy móc. Một trong những công
cụ lập trình hiệu quả và đạt kết quả tốt đó chính là Visual C++, được xây dựng trên nền
tảng là ngôn ngữ lập trình hướng đối tượng C++.
Trong bản đồ án tốt nghiệp với đề tài là “Hướng dẫn lập trình VC++ 6.0” sẽ trình bày
những cách thức làm việc hiệu quả và cơ bản với ngôn ngữ lập trình này , kèm theo đó
là các bài minh hoạ .
Nội dung của đồ án tốt nghiệp như sau :
-Phần I : Tổng quan về lập trình hướng đối tượng
-Phần II : Visual C++ 6.0
-Phần III : Hướng dẫn lập trình
+Chương 1 :thao tác với các hàm, biến.
+Chương 2 : tạo menu, toolbar và các thao tác cơ bản
+Chương 3 : sử dụng Font và giờ hệ thống .
+Chương 4 : đọc, hiển thị và lưu file text.
+Chương 5 : sử dụng Active X để đưa âm thanh vào trong ứng dụng.
+Chương 6 : Giao tiếp máy tính .
+Chương 7 : VC++ với thiết kế 3D.
+Chương 8 : đóng gói chương trình, tạo bộ cài đặt.
+Chương 9 : thiết kế mô phỏng chương trình điều khiển, mô phỏng gia công
máy CNC.
Do giới hạn về mặt thời gian cũng như những hạn chế về mặt kiến thức của người viết
nên không thể tránh khỏi những sai sót vì vậy rất mong được sự thông cảm của người
đọc.
Trong quá trình hoàn thành đề tài ,được sự hướng dẫn tận tình của TS.Bùi Quý Lực ,
công việc đã được hoàn thành đúng tiến độ.
Xin chân thành cảm ơn tới thầy Bùi Quý Lực .
Người thực hiện :
Sinh viên : Lê Văn Đảng
Hướng dẫn lập trình VC ++ 6.0
Trang 3
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Phần I: TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Visual C++ là môt phần mềm lập trình hướng đối tượng được phát triển trên cơ sở là
ngôn ngữ lập trình C và C++.
Phương pháp thiết kế hướng đối tượng vừa mới phát triển nhằm giúp nhà phát triển khai
thác được sức mạnh của đối tượng và ngôn ngữ lập trình hướng đối tượng, dùng các lớp
và đối tượng như là khối xây dựng cơ sở.
OOP (Object Oriented Programming ) là ngôn ngữ hiện thực trong đó chương trình
được tổ chức như tập hợp những đối tượng hợp tác với nhau, mỗi đối tượng đại diện
cho một instance của một vài lớp và những lớp mà chúng là thành viên của một lớp
phân cấp thông qua quan hệ thừa kế.
Ba điểm quan trọng trong định nghĩa này là :
1. Đối tượng được dùng như là những khối xây dựng cơ bản của OOP.
2. Mỗi đối tượng như là một instance của một số lớp.
3. Các lớp liên quan với nhau thông qua quan hệ thừa kế.
Ta có thể nói một ngôn ngữ là hướng đối tượng nếu và chỉ nếu nó thỏa mãn những yêu
cầu sau:
- Nó có thể tạo ra những đối tượng là dữ liệu trừu tượng với một giao tiếp của những
operation đã định và một trạng thái ẩn bên trong.
- Những đối tượng có một lớp kết hợp.
- Lớp có thể thừa kế thuộc tính từ lớp cha.
Một mô hình mà thiếu một trong những đặc tính trên thì không phải là hướng đối tượng.
1.1. Abstraction ( tính trừu tượng) :
Sự trừu tượng thể hiện những đặc tính cốt yếu của một đối tượng mà những đặc tính
này dùng để phân biệt đối tượng này với tất cả các loại đối tượng khác và do vậy cung
cấp một cách rõ ràng giới hạn ý niệm được ý nghĩa, liên quan đến viễn tượng của người
nhìn.
Trừu tượng tập trung vào cái nhìn bề ngoài của đối tượng và do đó thỏa mãn được các
hành vi chủ yếu của đối tượng riêng biệt từ hiện thực của nó.
Ta có thể có các loại trừu tượng sau:
- Thực thể trừu tượng : một đối tượng mà nó đại diện cho một mô hình hữu dụng của
một miền vấn đề hay thực thể miền giải quyết.
-Operation abstraction (hoạt động trừu tượng ) : một đối tượng mà nó cung cấp một tập
tổng quát của các operation, tất cả các operation thực thi cùng một loại chức năng.
- Máy ảo trừu tượng : một đối tượng mà nó nhóm các hoạt động với nhau, và tất cả các
hoạt động này được sử dụng bởi mức điều khiển cao hơn. Hoặc các hoạt động mà chúng
sử dụng tập hợp các hoạt động của mức thấp hơn.
-Trừu tượng ngẫu nhiên : một đối tượng mà nó đóng gói một tập hợp các hoạt động
mà chúng không có quan hệ lẫn nhau.
Hướng dẫn lập trình VC ++ 6.0
Trang 4
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Một client là bất kì đối tượng nào sử dụng nguồn tài nguyên của đối tượng khác ( gọi là
server). Chúng ta có thể biểu thị đặc điểm hành vi của đối tượngbằng cách xem xét
những dịch vụ mà nó cung cấp cho những đối tương khác, cũng như những hoạt động
mà nó có thể thực thi cho đối tượng khác. Quan điểm này buộc chúng ta phải tập trung
vào cái nhìn bề ngoài của đối tượng.
Chúng ta gọi toàn bộ tập hợp của các hoạt động mà một client có thể thi hành cho một
đối tượng, cùng với những câu lệnh hợp lệ mà chúng có thể được gọi là protocol. Một
protocol biểu thị những cách thức mà một đối tượng có thể hành động và phản ứng, và
do vậy có thể cấu thành tổng thể bề ngoài tĩnh và động của trừu tượng.
1.2. Encap sulation (sự đóng kín) :
Tính đóng kín là quá trình phân chia các phần tử của một trừu tượng để cấu thành nên
cấu trúc và hành vi của chính nó, đóng kín cho phép hoạt động giao tiếp của một trừu
tượng và hiện thực của nó.
Sự đóng kín là cơ chế liên kết mã và dữ liệu mà nó thao tác, và giữ cho cả 2 được an
toàn khỏi sự can thiệp từ bên ngoài và do sử dụng sai. Trong ngôn ngữ hướng đối
tượng, mã và dữ liệu liên kết với nhau để tạo thành một “hộp đen” độc lập. Trong hộp
này là tất cả mã và data cần thiết. Khi mã và data liên kết với nhau như thế một đối
tượng sẽ được tạo ra. Nói cách khác, đối tượng là một dụng cụ hỗ trợ cho sự đóng kín.
Trong một đối tượng , mã, data, hoặc cả 2 có thể là private (riêng) của đối tượng đó hay
public (chung). Mã hoặc data riêng là thuộc về đối tượng đó và chỉ được truy cập với bộ
phận của đối tượng. Nghĩa là mã hoặc data riêng không thể truy cập bởi các phần khác
của chương trình tồn tại ngoài đối tượng. Khi data là chung, các bộ phận khác có thể
truy cập đến nó mặc dù nó được định nghĩa trong một đối tượng. Các phần chung của
một đối tượng dùng để cung cấp một giao diện có điều khiển cho các phần riêng của đối
tượng.
Nói chung, một đối tượng là một biến thuộc kiểu do người sử dụng định nghĩa. Mỗi lần
ta định nghĩa một đối tượng mới, ta tạo ra một loại data mới.
Tính trừu tượng và đóng kín là hai khái niệm : trừu tượng thì tập trung vào những hành
vi có thể quan sát được của đối tượng, còn tính đóng kín tập trung vào hiện thực của
hành vi đó. Tính đóng kín thường đạt được thông qua che dấu thông tin, tức là quá trình
che dấu mọi bí mật của đối tượng mà không đóng góp vào đặc tính thiết yếu của đối
tượng đó ,thông thường cấu trúc của đối tượng được che dấu cũng như hiện thực của
những method của đối tượng.
Đặc biệt các thành viên có thể được đặt vào public, private, hay protected
của lớp. Thành viên được khai báo là public thì thấy được đối với mọi client, những
thành viên khai báo là private thì hoàn toàn đóng kín, và những thành viên khai báo là
protected thì chỉ thấy với chính lớp của nó và những lớp con của nó. C++ cũng còn cho
phép kí hiệu friend : là lớp cùng hợp tác được phép thấy những phần privated của nhau.
1.3. Modularity (modun hóa) :
Hướng dẫn lập trình VC ++ 6.0
Trang 5
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Modularity là tính chất của một hệ thống đã được phân tích thành một tập hợp dính kết
và ghép lại một cách lỏng lẻo thành những modun.
Việc phân chia chương trình thành những phần riêng lẻ có thể làm giảm độ phức tạp. Ở
ngôn ngữ này lớp, đối tượng hình thành cấu trúc luận lý của hệ thống. Chúng ta đặt
những trừu tượng này trong modun để tạo ra những kiến trúc vật lý của hệ thống.
Đối với những vấn đề nhỏ, nhà phát triển có thể quyết định vấn đề khai báo tất cả các
lớp và đối tượng trong cùng một gói. Ta thường nhóm những lớp vàø đối tượng có quan
hệ trong cùng một modun, và chỉ phơi bày những phần tử mà modun khác cần thấy.
Trong các hệ thống lớn, thì nó có quá nhiều modun và thật là khó cho người sử dụng tìm
thấy những lớp mà họ cần. Hơn nữa , khi quyết định thay đổi hàng trăm modun phải
được hiệu chỉnh hoặc biên dịch lại. Như vậy, modun hóa đôi khi cũng không tốt
Modun phục vụ như là những phần tử và những đơn vị không thể phân chia được của
phần mềm mà có thể sử dụng lại được qua các ứng dụng. Nhà phát triển sẽ chọn cách
đóng gói đối tượng thành các modun sao cho chúng thuận tiện để sử dụng lại.
1.4. Hierachy (hệ thống phân cấp) :
Hệ thống phân cấp là một sự sắp xếp theo thứ bậc hay sắp đặt các trừu tượng. Có hai
phân cấp quan trọng nhất trong một hệ thống phức tạp là : cấu trúc lớp của nó(phân cấp
“is a”), và cấu trúc đối tượng của nó ( phân cấp “part of “).
Thừa kế đơn giản: thừa kế là mối quan hệ “ is a “. thừa kế định nghĩa một mối quan hệ
giữa các lớp, trong đó một lớp chia sẻ cấu trúc và hành vi đã được định nghĩa trong một
lớp hay nhiều lớp ( tương ứng với thừa kế đơn giản và đa thừa kế ). Do đó thừa kế như
là sự phân cấp của các trừu tượng, trong đó một lớp con thừa kế một hay nhiều lớp cha.
Đa thừa kế đưa đến một số vấn đề phức tạp cho ngôn ngữ lập trình. Những ngôn ngữ
phải đưa ra hai vấn đề: xung đột giữa tên của các lớp cha khác nhau, và thừa kế được
lập lại nhiều lần. Sự xung đột xảy ra khi hai hay nhiều lớp cha cùng cấp cùng chia sẻ
một lớp cha chung. Và trong trường hợp như vậy, lớp lá có một hoặc nhiều bản sao cấu
trúc của lớp cha được dùng chung đó. Một số ngôn ngữ thì không cho phép thừa kế lập
lại, một số khác thì chọn hướng khác. C++ cho phép người lập trình quyết định: virtual
base class (lớp cơ sở ảo ) được dùng để chỉ ra sự dùng chung của cấu trúc lập lại, trong
khi đó nonvirtual base class có kết quả là trùng bản sao ở lớp con.
1.5. Kiểm tra kiểu ( typing ) :
Typing là sự tuân theo bắt buộc của lớp đối tượng, như là những đối tượng của các lớp
khác nhau không được thay thế lẫn nhau hoặc chúng có thể thay thế lẫn nhau chỉ theo
một cách thức rất hạn chế.
C++ có khuynh hướng kiểm tra kiểu chặt chẽ nhưng ta có thể lờ đi hay cấm kiểm tra.
- Tính đa dạng (polymorphism):
Là tính chất cho phép một tên được dùng cho hai hoặc nhiều mục đích khác nhau có
quan hệ về phương diện kỹ thuật. Mục đích của tính đa dạng khi được áp dụng cho OOP
là cho phép một tên được dùng để chỉ rõ một lớp tác động tổng quát, một tác
động cụ thể được xác định bởi loại data. Ví dụ, trong C, không có hỗ trợ tính đa dạng
nên một tác động giá trị tuyệt đối cần phải có ba hàm khác nhau:abs(), labs(), và
fabs( ). Các hàm này tính toán và lần lượt trả về một giá trị tuyệt đối của số nguyên, một
số nguyên dài, một giá trị dấu phẩy động. Tuy nhiên, trong C++ có đặc tính đa dạng nên
có hàm abs(). Loại data được dùng để gọi hàm xác định loại hàm nào thực sự được
Hướng dẫn lập trình VC ++ 6.0
Trang 6
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
dùng. Trong C++ có thể sử dụng một tên hàm cho nhiều mục đích khác nhau. Điều này
được gọi là quá tải hàm(function overloading).
Tổng quan hơn khái niệm tính đa dạng là ý tưởng “một giao diện, nhiều phương pháp”.
Điều này có nghĩa là có thể thiết kế một giao diện chung cho một nhóm các tác động có
liên quan. Tuy nhiên, tác động cụ thể được thi hành phụ thuộc vào data. Ưu điểm của
tính đa dạng là chúng làm giảm tính phức tạp bằng cách cho phép cùng một giao diện
được sử dụng để ghi rõ một lớp tác động tổng quát, chính trình biên dịch sẽ lựa chọn tác
động cụ thể khi áp dụng cho từng trường hợp. Là người lập trình ta không phải thực
hiện sự lựa chọn này bằng tay. Ta chỉ cần nhớ và sử dụng giao diện chung.
-Liên kết tĩnh và kiên kết động (Static and Dynamic Binding):
Khái niệm trong typing và static typing liên kết tĩnh là hoàn toàn khác nhau. Strong
typing đề cập tới sự nhất quán của kiểu. Stactic binding có nghĩa là kiểu của mọi biến và
biểu thức là cố định vào lúc biên dịch. Dynamic binding nghĩa là các kiểu của mọi biến
và biểu thức không cho biết cho tới khi chạy chương trình. Bởi vì Strong typing và
Dynamic binding là khái niệm độc lập cho nên một ngôn ngữ có thể vừa Strong và
Static typing.
1.6. Bản chất của đối tượng:
Một đối tượng có trạng thái, hành vi, đặc tính nhân dạng; cấu trúc và hành vi của các đối
tượng giống nhau được định nghĩa trong một lớp chung của chúng, thuật ngữ instance
và đối tượng là có thể thay thế lẫn nhau được.
- Trạng thái (state) : của một đối tượng bao gồm tất cả các đặc tính (thường là tĩnh) của
đối tượng trừ đi giá trị hiện tại ( thường là động ) của mỗi đặc tính đó.
-Hành vi (behavior ) : là đối tượng hoạt động và phản ứng như thế nào theo điều kiện
trạng thái của nó thay đổi và message truyền đến.
-Operations (hoạt động) : là một dịch vụ mà một lớp cung cấp cho khách hàng của nó.
Chúng ta thấy rằng một client thường thực thi năm loại opearation đối tượng. Ba loại
operation thông thường nhất là :
• Modifier : là operation thay đổi trạng thái của đối tượng. Selector: là Operation truy
xuất trạng thái của đối tượng nhưng không làm thay đổi trạng thái của nó.
• Iterrator : là operation cho phép tất cả các phần của một đối tượng được truy xuất theo
một thứ tự đã định nghĩa trước. Hai loại operation thông dụng khác cần thiết để tạo và
hủy những instance của một lớp là :
• Constructor :là operation tạo đối tượng và (hoặc) khởi động trạng thái của nó.
• Destructor :là operation giải phóng trạng thái của một đối tượng và (hoặc) hủy chính
đối tượng đó.
• Indentify(đặc điểm nhận dạng) : indentify là đặc tính của một đối tượng để phân biệt
nó với các đối tượng khác.
1.7. Mối quan hệ giữa các đối tượng
-Links( liên kết) : Link là nối kết vật lý hay ý niệm giữa các đối tượng. Một đối tượng
cộng tác với một đối tượng khác thông qua link của nó tới những đối tượng này. Hay
nói cách khác, một link vó nghĩa là một hợp tác cụ thể qua đó một đối tượng ( client)
áp dụng những dịch vụ của đối tượng khác (nhà cung cấp) hoặc qua đó một đối tượng
có thể điều khiển đối tượng khác.
- Một đối tượng có thể đóng các vai trò sau:
Hướng dẫn lập trình VC ++ 6.0
Trang 7
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
• Actor : một đối tượng có thể làm việc trên một đối tượng khác nhưng nó không bao
giờ cho một đối tượng khác làm việc trên nó, thuật ngữ actor và active object có thể thay
thế lẫn nhau.
• Server :một đối tượng không bao giờ làm việc trên một đối tượng khác, nó chỉ cho đối
tượng khác làm việc trên nó.
• Agent : một đối tượng vừa làm việc trên đối tượng khác vừa cho đối tượng khác làm
việc trên nó, một đại lý thường được tạo ra để làm công việc cho một actor hay một
agent khác .
• Đối tượng được cung cấp là global đối với client.
• Đối tượng cung cấp là một tham số cho các operation của client.
• Đối tượng cung cấp là một phần của đối tượng client.
• Đối tượng cung cấp được khai báo cục bộ trong operation của client.
Khi có multiple thread control, việc truyền thông tin giữa các đối tượng cần xử lý vấn đề
multual exclusion trong hệ thống xử lý đồng thời. Vấn đề đồng bộ hóa cũng phải xem
xét.
-Aggregation : Aggregation có nghĩa là một phân cấp tổng thể / bộ phận, với khả năng
điều khiển từ tổng thể ( còn gọi là aggregate ) tới những bộ phận (được hiểu là những
thuộc tính của nó).
1.8. Bản chất của lớp:
-Class (lớp) : là tập hợp của các đối tượng có cùng cấu trúc chung hay hành vi chung.
Một đối tượng đơn giản chỉ là một instance của lớp.
-Interface: của một lớp cho thấy bên ngoài của đối tượng và do đó nhấn mạnh đến vấn
đề trừu tượng trong khi che dấu cấu tr1c và hành vi bên trong.
- Implemention : của môt lớp là cái nhìn bên trong của nó. Implemention của một lớp
cơ bản bao gồm tât cả các operation được định nghĩa trong interface. Chúng ta chia
interface của lớp thành ba phần:
• Public : là khai báo được truy xuất đến mọi client.
• Protected : là khai báo được truy xuất chỉ chính lớp đó, lớp con của nó, và lớp friend.
• Private: là khai báo được truy xuất chỉ chính lớp đó và lớp friend.
1.9. Mối quan hệ giữa các lớp:
Phần lớn ngôn ngữ hướng đối tượng hỗ trợ trực tiếp một vài kết hợp của những quan hệ
sau đây:
• Association : gồm có quan hệ một-một, một-nhiều, nhiều-nhiều.
• Inheritance (thừa kế) : là một lớp chia sẽ cấu trúc và (hoặc) hành vi được định nghĩa
bởi một lớp (đơn thừa kế) hoặc nhiều lớp (đa thừa kế).
• Aggregation (kết tập) : quan hệ kết tập giữa các lớp giống như quan hệ kết tập giữa
các đối tượng tượng giữa các lớp đó. Đa thừa kế thường bị lẫn lộn với kết tập. Trong C+
+ thừa kế protected hay private dễ dàng bị thay thế bởi kết tập protected hay private của
instace của lớp cha, mà không mất tính ngữ nghĩa của nó.
Phần 2. VISUAL C++ 6.0
Hướng dẫn lập trình VC ++ 6.0
Trang 8
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
2.1.Cách cài đặt
Visual C++ 6.0 nằm trong bộ Visual Studio,là bộ phần mềm hỗ trợ lập trình trong
Windows do hãng Microsoft sáng chế. Cách cài đặt bộ phần mềm Visual Studio 6.0
Enterpise Edition như sau :
Có thể copy bộ đĩa vào máy và kích hoạt file Setup.exe để cài đặt chương trình, chương
trình sẽ tự khởi động và hiện lên cửa sổ cài đặt như hình dưới đây :
Hình 2.1 – Nhấn Next để tự động cài đặt Visual Studio 6.0
Hệ thống tự động cài đặt Java Virtual Machine.
Hình 2.2 – Chương trình đang giải nén các files cài đặt Microsoft VM
Hướng dẫn lập trình VC ++ 6.0
Trang 9
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.3- Chương trình yêu cầu khởi động lại máy để cài đặt có hiệu lực, nhấn Yes để
khởi động lại máy
Sau khi hoàn tất cài đặt Microsoft VM (Java Virtual Machine), tiếp tục cài đặt Visual
Studio 6.0.
Hình 2.4 – Nhấn Next để cài đặt Visual Studio 6.0 trong cửa sổ cài đăt hiện ra
Hướng dẫn lập trình VC ++ 6.0
Trang 10
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.5 – Nhấp dấu chọn vào ô tròn tại dòng “I accept the agreement” để đồng ý điều
khoản sử dụng, sau đó nhấn Next để tiếp tục cài đặt
Hình 2.6– Dòng màu xanh là nơi cài đặt VS 6.0, hãy để mặc định, nhấn Next để tiếp tục
Hình 2.7 – Khởi động trình cài đặt, chờ đến khi xuất hiện màn hình cài đặt
Hướng dẫn lập trình VC ++ 6.0
Trang 11
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.8– Đánh dấu chọn vào dòng Graphics để được hỗ trợ về đồ họa trong các ứng
dụng sau này. Chọn xong nhấn Continue.
Hình 2.9– Bỏ dấu chọn tại dòng Register Environment Variables và nhấn OK
Hình 2.10 – Nhấn Yes để tiếp tục
Hướng dẫn lập trình VC ++ 6.0
Trang 12
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.11 – Trình cài đặt đang thực hiện cài đặt VS C++6.0
Hình 2.12 – Firewall (tường lửa) của Windows sẽ chặn các ứng dụng lạ, hãy ấn
Unblock để mở khóa.
Hình 2.13 – Nhấn OK
Hướng dẫn lập trình VC ++ 6.0
Trang 13
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.14 – Cài đặt hoàn tất, nhấn Restart Windows để khởi động lại máy
Hình 2.15 – Chọn MSDN để cài đặt (nếu không có thư viện MSDN thì kích vào Exit để
kết thúc cài đặt ).
Hướng dẫn lập trình VC ++ 6.0
Trang 14
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.16. Chọn đường dẫn trong ổ cứng (hoặc ổ CD ) chứa thư viện MSDN 2001.
Sau khi kết thúc cài đặt có thể cài thêm Visual AssistX là công cụ hỗ trợ ngữ pháp trong
Visual Studio nói chung và Visual C++. Đến đây đã hoàn tất việc cài đặt Visual C++
6.0.
Hướng dẫn lập trình VC ++ 6.0
Trang 15
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
2.2.Giao diện chương trình .
Dưới đây là giao diện chương trình :
Hình 2.17.Giao diện chương trình VC++ 6.0
*Workspace : có 3 tab lựa chọn trong “vùng chuyển đổi các cây thư mục”
-Class View :hiển thị các cây lớp được sử dụng trong chương trình .Class View chính là
nơi quản lý các lớp các hàm một cách nhanh nhất .Nó chính là cây thư mục mà lớn nhất
là lớp ứng dụng, các nhánh bé hơn là các lớp và chia ra các hàm ta đã sử dụng , bé nhất
trong cây thư mục này chính là các biến có mặt .
-Resource View : Cây thư mục này chứa tất cả những gì liên quan đến phần giao diện
của ứng dụng , là nơi ta chỉnh sửa các thêm bớt các Dialog,các thanh công cụ, icon,các
nút bấm ( Button) hay ListBox, Picture, editbox …
-File View : nó là cây thư mục chứa các File có mặt trong ứng dụng , các file thư viện
thêm vào tạo nên ứng dụng. Khi muốn tác động lên đối tượng trong chương trình có thể
tác động trong ClassView hoặc chọn trực tiếp File trong File View để kích hoạt.
*Vùng soạn thảo : là vùng hiển thị các nhánh trong các cây thư mục hay chính là hiển
thị nội dung của chúng .
*Vùng thông báo : khi biên dịch chương trình các thông báo sẽ hiển thị ở đây, cho ta
biết chương trình có lỗi hay không và cụ thể lỗi ở đâu cũng như nêu ra các nguyên nhân
cơ bản gây ra lỗi .
Hướng dẫn lập trình VC ++ 6.0
Trang 16
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 2.18. Các Menu và ToolBar trong VC++ 6.0
2.3.Các thao tác cơ bản với Menu và Toolbar của VC++ 6.0
Đối với VC++ 6.0 chúng ta cần quan tâm tới các Menu View, Insert, Project, Debug,
Layout và toolbar Control , còn các menu khác cách sử dụng hoàn toàn tương tự như
các phần mềm khác .
Menu View : ta quan tâm tới 2 tab Class Wizard (Ctrl+W )có
tác dụng mở ra hộp thoại Class Wizard sử dụng các sự kiện
(Messages) tác động lên đối tượng thông qua các địa chỉ điều
khiển (Control IDs) và các lớp (Class Name). Và tab
ID=Resource Sybols mở ra hộp thoại
Resource Symbols lưu lại các địa chỉ
của các đối tượng được sử dụng trong
ứng dụng, ở đây ta có thể thay đổi
thông số qua tác động “change” xem
cách thức nó được sử dụng trong ứng
dụng “View Use” hay tạo mới “New”
Khi tạo sự kiện WM_TIMER ta phải
sử dụng các bộ định thời và nên dùng
hộp thoại này để tạo các địa chỉ điều
khiển chúng .
Hình 2.19.Menu View
Hướng dẫn lập trình VC ++ 6.0
Trang 17
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Menu Insert :
Quan tâm tới thao tác tạo lớp mới “New Class”
Hình 2.20.Menu Insert
Menu Project :
Ta quan tâm tới 2 tab hay dùng là Add to Project để đưa
các thành phần khác vào trong ứng dụng và Setting để
chỉnh sửa các hỗ trợ cho ứng dụng.
Hình 2.21.Menu Project
<-Hình 2.22.Menu Debug
Menu Debug : Menu này chứa các lệnh biên dịch cho
ứng dụng
Biên Dịch Chương trình : Ctrl-F7
Dịch và liên kết : F7
Thực thi : Ctrl+F5
Thực thi ở chế độ Debug :F5
Tạo Breakpoint : F9(chạy tiếp bằng cách ấn F5)
Nhảy đến vị trí con trỏ (Debug) : Ctrl +F10
Nhảy qua một dòng thực thi : F10
Nhảy vào trong 1 hàm : F11
Nhảy ra khỏi hàm : Ctrl-F11
Hiển thị Dialog xem thử ngay khi thiết kế :Ctrl+T
Đặt thứ tự tab giữa các control : Ctrl +D
Menu Layout :
Menu này cho phép căn chỉnh trái phải, trên dưới (Align ) của các đối tượng trên
Dialog(giao diện chính ) .
Space Evenly : để điều chỉnh các khoảng cách đều theo chiều ngang (across) chiều dọc
(down) .
Arrange Buttons : để điều chỉnh vị trí các nút bấm.
Center in Dialog : để căn chỉnh đối tượng vào giữa giao diện theo chiều ngang
(Horizontal) hay theo chiều dọc (vertical )….
Hướng dẫn lập trình VC ++ 6.0
Trang 18
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Để tác động lên 1 đối tượng ta chỉ cần kích vào đối tượng rồi chọn thao tác, nếu muốn
tác động lên nhiều đối tượng cùng lúc thì giữ Ctrl và kích
chọn lần lượt các đối tượng
Hình 2.23 .Menu Layout
ToolBar Control :
Đây là công cụ chính để tạo ra các thành phần cơ bản trong
giao diện , các nút bấm (button), editbox, listbox , combo
box, spin …, khi đưa thêm các ActiveX vào ứng dụng nó
cũng có mặt trong toolbar
control này .
Hình 2.24.ToolBar Control.
2.4.Các môi trường xây dựng ứng dụng trong VC++ 6.0
2.4.1.Dialog based
Là môi trường làm việc trên các cửa sổ đơn, Dialog based tương đối đơn giản dễ sử
dụng và có khả năng thiết kế giao diện đẹp .
2.4.2.Single Document Interface( SDI) : là môi trường tạo ra các ứng dụng đơn tài liệu
hỗ trợ một vùng quan sát và chỉ có thể làm việc với một kiểu tài liệu tại một thời điểm .
2.4.3.Multiple Document Interface (MDI) : môi trường cho phép tạo ra các ứng dụng
đa tài liệu , với mỗi tài liệu có một hoặc nhiều vùng quan sát .
Phần 3. HƯỚNG DẪN LẬP TRÌNH VC++ 6.0
Hướng dẫn lập trình VC ++ 6.0
Trang 19
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 3.1 .sơ đồ các bước xây dựng chương trình với VC++ 6.0
Chương 1. Các thao tác với lớp, hàm, biến
Ứng dụng cơ bản nhất chính là kiểu Dialog Based .Với kiểu ứng dụng này hệ
thống sẽ không có những hộ trợ ban đầu về thanh công cụ, các menu Tuy nhiên khi làm
việc trên kiểu ứng dụng này sẽ dễ dàng cho việc hình dung các thao tác hơn Chúng ta có
thể thiết kế các menu và toolbar riêng .
3.1.1.Đưa các file có sẵn vào trong chương trình ứng dụng :
Trong một số trường hợp, các ứng dụng có thể sử dụng dữ liệu có sẵn (đã được viết
cho một chương trình nào đó)như các header file, source file hay các thư viện được viết
riêng rẽ vì vậy sử dụng thao tác này để tiết kiệm được thời gian code chương trình .Khởi
động chương trình VC++ 6.0 và tạo một chương trình mới (Ở đây tạo một ứng dụng
MFC AppWizard , tên ứng dụng là VD):
Hướng dẫn lập trình VC ++ 6.0
Trang 20
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 3.2. Tạo một ứng dụng MFC.
Hình 3.3.Chọn Kiểu ứng dụng tạo ra là Dialog Cơ bản
Hình 3.4.Chọn Project>Add To Project>File để đưa thêm file vào ứng dụng.
Hướng dẫn lập trình VC ++ 6.0
Trang 21
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Sau khi chọn File trong Insert Files into Project ta chọn đường dẫn tới file cần đưa vào
ứng dụng :
Hình 3.5. Đường dẫn tới file cần đưa vào (chọn file> ok)
Đôi khi chúng ta cần đưa một ActiveX vào trong ứng dụng (đây chính là các thành phần
được thiết kế sẵn, độc lập, khi đưa vào sử dụng ta chỉ cần chỉnh sửa thông số cho phù
hợp), thì thay vì chọn File trong tab Add to Project ta chọn Components and Control để
đưa ActiveX vào ứng dụng .
Hình 3.6 . Đưa ActiveX vào ứng dụng.
Chọn đường dẫn tới ActiveX cần thêm :
Hướng dẫn lập trình VC ++ 6.0
Trang 22
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 3.7 . Nơi chứa các ActiveX .
3.1.2. Thêm lớp mới vào trong chương trình :
VS C++ quản lý các đổi tượng thông qua các lớp, trong các lớp này chứa thông tin
và kiểu dữ liệu cũng như cách thức sử dụng các thành phần của lớp .Vì vậy tạo ra một
lớp mới là một công việc diễn ra một cách thường xuyên, dưới đây là những thao tác cơ
bản để tạo ra một lớp mới .
VD: tạo một lớp đường thẳng chứa thông tin về 2 điểm được kích hoạt khi dùng chuột,
các hàm tạo điểm, lấy điểm, hàm vẽ nối 2 điểm .
Hình 3.8.Chọn tab Class View trong Workspace> kích chuột phải vào VD class>Chọn
New Class
Hướng dẫn lập trình VC ++ 6.0
Trang 23
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 3.9. Đặt tên lớp DuongThang. Ấn OK để kết thúc
Hình 3.10.Sau khi tạo lớp sẽ có các thành phần liên quan tới lớp vừa tạo ra.
Chúng ta sẽ tác động đến lớp này thông qua Header file và source file, chúng nằm trong
vùng làm việc cây thư mục File View.
Hình 3.11.Header DuongThang.h sẽ chứa các khai báo dùng trong lớp DuongThang
Hướng dẫn lập trình VC ++ 6.0
Trang 24
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49
Hình 3.12.Source File DuongThang.cpp sẽ thực thi những gì đã khai báo trong Header
file DuongThang.h
3.1.3. Thêm một hàm mới nằm trong lớp :
Hàm trong VS C++ được khai báo trong các lớp và được gọi trong ứng dụng để
thực thi lệnh. Các thuộc tính của hàm là
Kiểu hàm, Tên hàm, và kiểu truy cập dữ
liệu .Trong VC++ có một hệ thống thư viện
có sẵn, thực chất các thư viện là các
chương trình đã được đóng gói, bản thân nó
có cấu trúc như một lớp, có các hàm và các
hàm này đã được định nghĩa .Ta hoàn toàn
có thể tạo được một thư viện bằng cách viết
một chương trình với kiểu ứng dụng
Win32 static Library, công việc viết
chương trình hoàn toàn bình thường tuy
nhiên không có phần hiển thị và không có
giao diện chương trình, chúng chính là
phần thiết kế module. Các module thư
viện sẽ giúp cho công việc lập trình với Hình 3.13.Thêm hàm
VC++ có thể chia sẻ, phân tách cho nhiều người cùng làm, và để có một chương trình
hoàn chỉnh sẽ là gắn kết các module thư
viện này thành một .
Vì vậy các hàm có thể gọi trực tiếp từ các module thư viện hoặc có thể viết hàm trong
chương trình sau đó gọi tới nó bằng cách truyền cho nó tham số.
Để tạo hàm trong chương trình :
Chúng ta sử dụng 2 cách cơ bản để thêm hàm :
Cách thứ nhất là kích chuột phải vào tên Lớp trong vùng làm việc với cây thư mục
ClassView (ở đây là lớp đường thẳng ), chọn Add Member Function để mở ra hộp thoại
Add Member Function :
Hướng dẫn lập trình VC ++ 6.0
Trang 25