Xem mẫu
- BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI
TỔNG CỤC DẠY NGHỀ
GIÁO TRÌNH
Môn học: LẬP TRÌNH NÂNG CAO
Mã số: ITPRRG03
NGHỀ: LẬP TRÌNH MÁY TÍNH
Trình độ Cao đẳng nghề
NĂM 2012
- Tuyên bố bản quyền :
Tài liệu này thuộc loại sách giáo trình
Cho nên các nguồn thông tin có thể
được
phép dùng nguyên bản hoặc trích dùng
cho các mục đích về đào tạo và tham
khảo .
Mọi mục đích khác có ý đồ lệch lạc hoặc
sử dụng với mục đích kinh doanh thiếu
lành
mạnh sẽ bị nghiêm cấm.
Tổng Cục Dạy nghề sẽ làm mọi cách để
bảo vệ bản quyền của mình.
Tổng Cục Dạy Nghề cám ơn và hoan
nghênh các thông tin giúp cho việc tu
sửa
và hoàn thiện tốt hơn tàI liệu này.
Địa chỉ liên hệ:
Dự án giáo dục kỹ thuật và nghề nghiệp
Tiểu Ban Phát triển Chương trình Học
liệu
………………………………………………
................................................................
- LỜI TỰA
Để đáp ứng nhu cầu học tập của người học, chúng tôi đã tiến hành biên soạn giáo trình
Lập trình nâng cao để làm tài liệu tham thảo cho người học và người nghiên cứu. Cuốn
sách này được biên soạn dựa trên các tài liệu tiếng Anh của C++ Builder, đặc biệt là
dựa trên tài liệu User Guide của Borland. Đồng thời lồng ghép những kinh nghiệm giảng
dạy các môn lập trình của chúng tôi.
Tài liệu này được biên soạn theo đề cương chi tiết môn học Lập trình nâng cao của
Tổng cục dạy nghề với mã ITPRG03. Mục tiêu của nó nhằm giúp các bạn sinh viên
chuyên ngành có một tài liệu cô đọng dùng làm tài liệu học tập, nhưng chúng tôi cũng
không loại trừ toàn bộ các đối tượng khác tham khảo. Chúng tôi hi vọng người đọc sẽ
tìm thấy được những kiến thức bổ ích trong tài liệu này.
Mặc dù đã rất cố gắng nhiều trong quá trình biên soạn giáo trình nhưng chắc chắn giáo
trình sẽ còn nhiều thiếu sót và hạn chế. Rất mong nhận được sự đóng góp ý kiến quý
báu
của của những người đọc và người học để giáo trình ngày một hoàn thiện hơn.
- MỤC LỤC
ĐỀ MỤC TRANG
BÀI 1 C++ BUILDER VÀ CÁC ƯU THẾ SO VỚI C++........................................................9
1.1 Lịch sử phát triển C++ Builder.......................................................................................9
1.2 Các tính năng tiên tiến.................................................................................................11
1.3 Ưu thế của C++ Builder so với Visual C++..................................................................12
BÀI 2 GIỚI THIỆU VỀ C++ BUILDER..............................................................................13
2.1 Giới thiệu C++ Builder.................................................................................................13
2.2 Môi trường phát triển tích hợp IDE và các công cụ đặc trưng.....................................18
2.3 Xây dựng chương trình Text Editor.............................................................................28
2.4. Thực hành.................................................................................................................. 37
BÀI 3 TỔNG QUAN VỀ VCL.............................................................................................38
3.1 Giới thiệu VCL............................................................................................................. 38
3.2 Mô hình phân cấp VCL................................................................................................39
3.3 Các thuộc tính, biến cố chung với TControl.................................................................40
3.4 Các thuộc tính, biến cố chung với TWinControl...........................................................44
3.5 Các đối tượng, thành phần chuẩn của VCL.................................................................47
3.6 Thực hành................................................................................................................... 80
BÀI 4 PHÁT TRIỂN GIAO DIỆN NGƯỜI DÙNG ỨNG DỤNG..........................................82
4.1 Tổng quan về phát triển giao diện người dùng............................................................82
4.2 Tạo và quản lý các form..............................................................................................84
4.3. Làm việc với thành phần.............................................................................................89
4.4 Xử lý đầu vào từ chuột................................................................................................89
4.5 Làm việc với bàn phím.................................................................................................92
4.6 Tạo và quản lý các menu.............................................................................................96
4.7 Các đối tượng hành động..........................................................................................102
4.8 Thực hành................................................................................................................. 103
BÀI 5 LÀM VIỆC VỚI CÁC ĐIỀU KHIỂN........................................................................104
5.1 Thực hiện các hành động kéo và thả.........................................................................104
5.2 Thực hiện các hành động rê và kết dính....................................................................116
5.3 Làm việc với văn bản trong các điều khiển................................................................117
5.4 Thêm đồ hoạ vào điều khiển......................................................................................119
5.5 Thực hành................................................................................................................. 121
BÀI 6 TƯƠNG TÁC GIỮA NGƯỜI DÙNG VỚI ỨNG DỤNG.........................................122
- 6.1 Sử dụng các hộp thoại...............................................................................................122
6.2 Hộp thoại Windows dùng chung................................................................................133
6.3 Tạo và quản lý các hộp thoại.....................................................................................134
6.4. Sử dụng đa biểu mẫu...............................................................................................143
6.5 Thực hành................................................................................................................. 160
BÀI 7 ĐỒ HOẠ VÀ MULTIMEDIA...................................................................................160
7.1 Tổng quan về lập trình đồ hoạ...................................................................................160
7.2 Các thành phần đồ hoạ VCL......................................................................................160
7.3 Sử dụng các thuộc tính và các phương thức của đối tượng Canvas........................161
7.4. Tạo và quản lý các bức vẽ........................................................................................164
7.5 Lập trình multimedia..................................................................................................196
7.6 Thực hành................................................................................................................. 216
BÀI 8 LIÊN KẾT CƠ SỞ DỮ LIỆU.................................................................................217
8.1 Các kỹ thuật truy cập dữ liệu trong C++ Builder........................................................218
8.2 Các thành phần truy cập cơ sở dữ liệu của C++ Builder...........................................218
8.3. Các điều khiển nhận biết dữ liệu của C++ Builder....................................................223
8.4 Các thành phần cơ sở dữ liệu cơ bản.......................................................................224
8.5. Xây dựng chương trình Marine................................................................................226
8.6 Thực hành................................................................................................................. 227
BÀI 9 XÂY DỰNG VÀ TRIỄN KHAI CÁC ỨNG DỤNG 260
9.1 Các kỹ thuật gỡ rối trong C++ Builder........................................................................261
9.2 Sử dụng tài nguyên Windows để xây dựng trợ giúp trực tuyến.................................261
9.3 Sử dụng chương trình InstallShield Express.............................................................263
9.4 Thực hành................................................................................................................. 264
BÀI 10 MỘT SỐ TÍNH NĂNG ĐẶC BIỆT KHÁC.............................................................266
10.1 Các tính năng đặc biệt khác trong C++ Builder........................................................266
10.2 Lập trình mạng với Socket.......................................................................................266
10.3 Thực hành............................................................................................................... 268
THUẬT NGỮ CHUYÊN MÔN..........................................................................................271
TÀI LIỆU THAM KHẢO....................................................................................................272
- GIỚI THIỆU VỀ MÔ ĐUN/MÔN HỌC
Vị trí, ý nghĩa, vai trò môn học :
Khi học lập trình căn bản, chúng ta đã lập trình và làm việc với ngôn ngữ C++ bằng
công cụ Turbo C++. Trong môn học này, chúng ta sẽ phát triển ứng dụng cao cấp dành
cho Windows bằng ngôn ngữ C++ với công cụ Borland C++ Builder. Do đó, để nghiên
cứu tốt môn học này, chúng ta cần phải nắm vững ngôn ngữ lập trình C++ và một số
khái niệm của Windows như ListBox, Button, Multimedia, …
Mục tiêu của môn học:
Sau khi học xong môn học này học viên có khả năng:
Nêu được tính năng tiên tiến và các ưu thế của các môi trường lập trình mới. Biết sử
dụng các đối tượng thành phần và điều khiển trong các thư viện lập trình thông dụng.
Biết thiết kế các giao diện người dùng ứng dụng,sử dụng các thao tác trên các điều
khiển. Biết tạo các tương tác giữa người dùng với ứng dụng. Biết tạo và xử lý các đối
tượng đồ hoạ, đưa âm thanh hay các video clip vào ứng dụng. Biết xây dựng các ứng
dụng cơ sở dữ liệu đơn giản, biết tạo các chương trình ứng dụng đơn giản.
Mục tiêu thực hiện của môn học:
Học xong môn học này học viên có khả năng:
Khái quát được quá trình phát triển phần mềm trên công cụ C++ Builder. Nêu các tính năng tiên tiến của
C++ Builder. Nhận biết các ưu thế của C++ Builder so với Visual C++.
Hiểu biết về môi trường lập trình Borland C++ Builder. Sử dụng IDE của C++ Builder để soạn thảo
chương trình nguồn, biên dịch, liên kết và chạy kiểm tra các chương trình. Mô tả một số công cụ đặc
trưng của C++ Builder. Hiểu cách xây dựng một ứng dụng Windows với C++ Builder.
Hiểu biết về thư viện nền Visual Component library (VCL). Mô tả vắn tắt về mô hình phân cấp của thư
viện VCL. Liệt kê các đối tượng, thành phần và điều khiển trong thư viện VCL. Sử dụng một số thành
phần chuẩn của thư viện VCL.
Tạo và quản lý các Form. Làm việc với các thành phần trên Form. Xử lý thông tin đầu vào từ chuột và
bàn phím. Tạo và quản lý các menu, sử dụng menu designer. Sử dụng các hành động, tạo, đăng ký, viết
các bộ soạn thảo danh sách hành động.
Xử lý các hành động rê và thả, rê và liên kết với các đối tượng trên form. Sử dụng các văn bản trong điều
khiển, sử dụng đối tượng clipboard. Thêm các đối tượng đồ hoạ vào các điều khiển.
Sử dụng các hộp thoại. Phân biệt các hộp thoại modal và modeless. Sử dụng các thành phần hộp thoại
Windows dùng chung. Tạo và quản lý các hộp thoại. Sử dụng đa biểu mẫu.
Hiểu biết về các thành phần đồ hoạ thuộc thư viện VCL. Sử dụng các thuộc tính của đối tượng Canvas.
Sử dụng các phương thức của Canvas để vẽ các đối tượng đồ hoạ. Tạo và quản lý các bức vẽ. Thêm
âm thanh hay các video clip vào ứng dụng.
Sử dụng các thành phần nhận biết dữ liệu, các thành phần truy cập dữ liệu và một số thành phần khác.
Hiểu biết cách xây dựng một ứng dụng cơ sở dữ liệu. Cơ bản về tổ chức, quản lý và khai thác các cơ sở
dữ liệu.
- Sử dụng một số kỹ thuật gỡ lỗi trong bộ công cụ C++ Builder. Sử dụng và khai thác các tài nguyên
Windows. Hiểu biết cách xây dựng các trợ giúp trực tuyến. Sử dụng chương trình cài đặt InstallShield.
Xây dựng một ứng dụng Windows đơn giản và hoàn chỉnh.
Nắm bắt các tính năng đặc biệt của bộ công cụ C++ Builder. Áp dụng vào việc lập trình Client/Server, lập
trình Internet, lập trình với Socket ở mức độ đơn giản.
- Sơ đồ quan hệ theo trình tự học nghề
Hệ thống Giao diện Lập trình Lập trình
máy tính người máy nâng cao Web
Lập trình Phân tích thiết
Lập trình hướng kế hệ thống
căn bản
đối tượng
Mạng căn bản Thiết kế
hướng đối
Kỹ năng tin học Cấu trúc dữ liệu tượng
và thuật giải
văn phòng
Kỹ năng Ứng dụng
CNTT trong
Giao tiếp
doanh nghiệp
Cơ sở dữ liệu
Kỹ năng Công nghệ
Internet & WWW phần mềm
Cơ sở toán học Thiết kế Web
Công nghệ Đa Quản lý dự án
phần mềm
phương tiện
Hệ cơ sở dữ
Lập trình Hướng dẫn đồ
liệu án tốt nghiệp
Visual Basic
Anh văn Phần cứng An toàn Thi
cho tin học máy tính lao động tốt nghiệp
- CÁC HÌNH THỨC HỌC TẬP TRONG MÔ ĐUN
1. Học tại phòng lý thuyết
- Trình bày đầy đủ các đối tượng và phương pháp triển khai các bài tập của từng bài
học.
- Phân tích và thiết kế các phép toán hợp lý bằng mô hình.
- Học sinh phải tập trung hết sức và phải tận dụng thời gian giải lao để giải lao thật tốt.
- Học sinh luôn rèn luyện khả năng tư duy logic để phân tích, tổng hợp các vấn đề cần
giải quyết. Không ngừng học hỏi các kiến thức về ngôn ngữ lập trình. Luôn chú ý rèn
luyện các thao tác chính xác, cẩn thận khi lập trình.
2. Học tại phòng thực hành
- Cài đặt các bài tập.
- Phân tích các bài toán thật kỹ lưỡng và cài đặt nhiều lần các bài tập.
- Học viên phải tập trung hết sức và phải tận dụng thời gian giải lao để giải lao thật tốt.
YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔ ĐUN/MÔN HỌC
Đánh giá thông qua kiểm tra trắc nghiệm:
Kiểm tra trắc nghiệm được thực hiện trên máy tính và chấm cho kết quả ngay
Xây dựng ngân hàng các câu hỏi. Học viên sẽ nhận được ngẫu nhiên các câu hỏi trắc
nghiệm 100 câu (mỗi chức năng 20 câu), Thời gian kiểm tra hạn chế trong 60 phút.
Thang điểm:
0-49 : Không đạt
50-69 : Đạt trung bình
70-85 : Đạt khá
86-100 : Đạt Giỏi
Đánh giá thông qua các tiểu đề tài :
Các tiểu đề tài được các nhóm học viên chuẩn bị và thực hiện trên máy tính có thể
chấm và cho kết quả ngay. Xây dựng một bộ các tiểu đề tài. Học viên sẽ được nhận
ngẫu nhiên các tiểu đề tài theo nhóm. Có thời gian chuẩn bị trước.
Nội dung chính của môn học :
9
- BÀI 1
C++ BUILDER VÀ CÁC ƯU THẾ SO VỚI C++
Mã bài : ITPRG03.1
Giới thiệu :
Trong nội dung môn học này, chúng ta sẽ quan sát sơ lược về lịch sử phát triển của
C++ Builder, các tính năng tiên tiến của C++ Builder, so sánh giữa C++ Builder với
Visual C++. Bài học này mang lại một tầm nhìn tổng quan về ưu thế của C++ Builder
cho chúng ta.
Mục tiêu thực hiện:
Học xong bài này học viên sẽ có khả năng:
Khái quát lịch sử phát triển C++ Builder
Liệt kê một số tính năng tiên tiến của C++ Builder.
Liệt kê các ưu thế của C++ Builder so với Visual C++.
Nội dung chính:
1.1 Lịch sử phát triển C++ Builder
C++ Builder originally targeted only the Microsoft Windows platform. Later versions
incorporated Borland CLX, a cross-platform development visual component library
based on Qt, that supports Windows and Linux.
Sau một số năm, Borland ấn bản phiên bản Borland C++ Builder 2006, cung cấp
chức năng quản lý mạnh và sửa các lỗi. C++ Builder 2006 là một phần của Borland
Developer Studio, một gói chứa Delphi, C++ Builder và C# Builder. Borland cũng làm
sống lại nhánh “Turbo” và ấn bản hai phiên bản “Turbo” của C++ Builder: Turbo C++
Professional và Turbo C++ Explorer (miễn phí):
Tên sản phẩm Mã Ngày ấn bản
?Delphi 2008? - ?CF? Highlander ?
Delphi for PHP - PHP a-la Delphi Astro 2007, Mar 27
Delphi 2007 for Windows Vista and
Spacely 2007, Mar 19
AJAX
Chrome 1.5.5 by RemObjects (VS
2006, Oct 27
2005, .Net 2.0)
Free Pascal 2.0.4 2006, Aug 28
Borland Developer Studio 2006 -
Delphi (W32 and .Net), C++ and C# DeXter 2005, Oct 10
under one IDE
10
- Chrome - Object Pascal in VS by
2005, May 1
RemObjects
Free Pascal 2.0 2005, May
Borland Delphi 2005 - C# and Delphi Diamondba
2004, Oct 12
under one IDE ck
Borland Delphi 8 for .Net Octane 2003, Dec 22
Borland C++BuilderX Tomahawk 2003, Aug 28
Sidewinder
Borland C#Builder 1.0 (Galileo IDE 2003, Jun 16
1.0)
Borland Delphi.NET compiler Morpheus
Borland Delphi 7 Aurora 2002, Aug 9
Borland C++ Builder 6.0 Riptide 2002, Feb 1
Borland Delphi 6 Illiad 2001, May 21
Free Pascal 1.0 2000, Jul
Borland C++ Builder 5.0 Rampage 2000, Jan 30
Borland Delphi 5 Argus 1999, Aug 10
Borland C++ Builder 4.0 1999, Jan 26
Borland Delphi 4 Allegro 1998, Jun 17
Borland C++ Builder 3.0 1998, Feb 8
Borland Delphi 3 Ivory 1997, Aug 5
Borland C++ 5.0 1997, Mar 25
Borland C++ Builder 1.0 1997, Feb 4
Borland Delphi 2 Polaris 1996, Feb 10
Borland C++ 4.5 1995, Aug 29
Turbo C++ for Windows 4.5 1995, Apr 28
Delphi95,
Wasabi,
Borland Delphi 1 1995, Feb 14
Mango,
AppBuilder
11
- Borland C++ 4.0 1993, Dec 15
Delphi project hatched mid 1993
Free Pascal (project born) 1993, Jun
Borland Pascal 7 1992, Oct 27
Borland C++ 3.1 1992, Jun 10
Turbo Pascal for Windows 1.5 1992, Jun 8
Turbo C++ for DOS 3.0 1992, Feb 18
Borland C++ 3.0 1991, Nov 11
Turbo C++ for Windows 3.0 1991, Nov 11
Turbo Pascal for Windows 1.0 1991, Feb 13
Borland C++ 2.0 1991, Feb 13
Turbo Pascal 6.0 1990, Oct 23
Turbo C++ for DOS 1.0 1990, May 4
Turbo C for DOS 2.0 1989, May 11
Turbo Pascal 5.5 1989, May 2
Turbo C for DOS 1.5 1988, Dec 10
Turbo Pascal 5 1988, Aug 24
Turbo C for DOS 1.0 1987, May 13
Turbo Pascal 4 1987, Nov 20
Turbo Pascal 3 1986, Sept 17
Turbo Pascal 2 1984, Apr 17
Turbo Pascal 1 (Compass Pascal 3.0) 1983, Nov 20
Pascal as Modula 1977
Pascal - first book by Wirth and Jensen 1975
Pascal implemented 1973
Pascal defined by Prof. Niklaus Wirth 1971
1.2 Các tính năng tiên tiến
12
- Tính năng tiên tiến nhất của C++ Builder là hỗ trợ kiểu dữ liệu AnsiString thay thế
cho kiểu dữ liệu chuỗi char truyền thống.
Nói tạm biệt với char* cho công việc điều tác chuỗi. Chúng ta chuyển sang sử dụng
lớp AnsiString để điều tác chuỗi. Một sự minh họa cho sự chuyển đổi sử dụng cho
chuỗi ở dưới đây:
int __cdecl printf(const char* format, ...);
int __cdecl cat_printf(const char* format, ...);
AnsiString& __cdecl sprintf(const char* format, ...);
AnsiString& __cdecl cat_sprintf(const char* format, ...);
Phiên bản này còn cung cấp một loạt các phương thức để làm việc chuỗi một cách
linh hoạt mang lại phong cách lập trình mới đối với chuỗi.
C++ Builder cung cấp thêm kiểu dữ liệu tập hợp, đây là một kiểu dữ liệu mới tương
thích với kiểu dữ liệu tập hợp của Pascal. Các giá trị được thêm vào kiểu tập hợp
qua phép toán >. Ví dụ, để thêm hai phần tử có
giá trị bằng mbNoToAll và mbNo vào kiểu tập hợp TMsgDlgButtons(), chúng ta sử
dụng lệnh TMsgDlgButtons()
- - C++ Builder cho phép chúng ta lập trình trên nền tảng chéo trong khi Visual C++ chỉ
lập trình trên Windows.
- C++ Builder sử dụng các thành phần VCL trong khi visual C++ sử dụng MFC.
Thành phần VCL được bao gồm vào bộ cài đặt C++ Builder giúp người lập trình có
thể tùy biến theo ý mình thích.
- C++ Builder cho phép phát triển các phần mềm trên nền tảng chéo (Linux và
Windows) trong khi Visual C++ chỉ cho phép phát triển trên nền Windows.
- Visual C++ kết nối với cơ sở dữ liệu chỉ sử dụng công nghệ dựa trên nền tảng ADO
trong khi C++ Builder còn có thể kết nối cơ sở dữ liệu có thể sử dụng BDE và SQL
Links.
BÀI 2
GIỚI THIỆU VỀ C++ BUILDER
Mã bài : ITPRG03.2
Giới thiệu :
Trong bài học này học viên sẽ làm quen với các khái niệm mà C++ Builder đưa ra, các
công cụ của C++ Builder cũng như có thể hiểu được môi trường làm việc của Borland
C++ Builder 6.0. Bài học này càng cung cấp cho chúng ta các thuật ngữ mới, các
phương pháp làm việc cũng như quy tắc lưu trữ của C++ Builder. Để nghiên cứu thành
công nội dung bài học, chúng ta phải cố gắng quan sát và ghi chép những điều cần thiết
của các công cụ trong môi trường cũng như những thuật ngữ mới.
Mục tiêu thực hiện:
Học xong bài này học viên sẽ có khả năng:
Mô tả các thành phần chính của C++ Builder
Mô tả một số công cụ đặc trưng của C++ Builder.
Mô tả các bước để xây dựng một chương trình Windows với C++ Builder.
Nội dung chính:
2.1 Giới thiệu C++ Builder.
Borland C++ Builderlà một trong những bộ biên dịch đầu tiên cho phép bạn sử dụng
các đối tượng được gọi là những thành phần bằng cách sử dụng chuột và di chuyển
xung quanh để thay đổi thiết kế trực quan của chương trình hơn là sử dụng các đoạn
mã lệnh để thực hiện điều này. Cốt lõi của kỹ thuật này là lập trình thành phần, các
thành phần có thể chạy với một tốc độ rất nhanh, thậm chí một đối tượng có thể hiện
ra và ẩn đi mà mắt chúng ta chưa kịp nhìn thấy và nhấn chuột lên nó.
Lập trình với Borland C++ Builder dễ đến mức bất ngờ. C++ Builder tạo thêm sự sôi
nổi cho ngôn ngữ lập trình C++. Đây là một công cụ tốt để chúng ta phát triển nhanh
các chương trình một cách dễ dàng và tạo được các chương trình mạnh. C++
Builder cho phép sử dụng đầy đủ các thành phần cao cấp của C++, bao gồm mẫu
(templates), không gian tên (name spaces), phép toán nạp chồng và toàn bộ hàm
Windows API, kể cả các hàm dùng cho DirectX, OLE và ActiveX.
Ngôn ngữ C++ vẫn là cốt lõi của C++ Builder. C++ Builder đưa ra một cấp độ cao
hơn để hỗ trợ ngôn ngữ C++. Borland C++ Builder tích hợp thư viện các thành
14
- phần trực quan (Visual Component Library) vào để dùng cho ngôn ngữ C++. Vấn đề
nằm ở chỗ C++ Builder sử dụng ngôn ngữ Pascal, trong khi đó C++ Builder lại sử
dụng ngôn ngữ C++. Tuy nhiên, dựa trên sự phê chuẩn của ANSI, Borland đã thêm
các thành phần để hỗ trợ cho C++.
Trong ngôn ngữ lập trình hướng đối tượng, các biến thành viên dùng để lưu trữ các
giá trị hoặc trạng thái của đối tượng trong suốt thời gian sống của nó. Tuy nhiên,
những biến lại được truy cập trực tiếp, do đó, có thể một phần nào đó của chương
trình sẽ làm gãy chương trình vì đã đưa vào các giá trị không phù hợp.
Để giải quyết vấn đề trên, rất nhiều nhà phát triển ứng dụng hướng đối tượng tạo ra
các hàm thành viên gọi là hàm lấy giá trị và cài đặt giá trị nhằm mục đích không cho
phép truy cập trực tiếp các biến thành viên đồng thời cũng tạo ra các truy bắt ngoại
lệ nhằm áp đặt giá trị luôn luôn phù hợp với biến lưu trữ. Phương pháp này còn cho
phép lập trình viên có thể ẩn được các dạng biến dùng để lưu trữ dữ liệu chẳng hạn
như tập tin, cơ sở dữ liệu, hoặc một kiểu dữ liệu phức hợp.
Borland tạo ra ngôn ngữ C++ Builder đã cung cấp thuộc tính nhằm thống nhất hai
hàm thành viên lấy giá trị và cài đặt giá trị thành một thành viên trong lớp. Trong lớp
của C++ Buider, một thuộc tính thường gồm một biến khai báo với bổ từ private và
một hàm dùng để lấy giá trị và cài đặt giá trị được khai báo với bổ từ protected, một
khai báo thuộc tính với bổ từ public. Sau đây là một minh họa:
class aClassWithAProperty //khai báo lớp aClassWithAProperty
{
private:
int myMemberVariable; //biến thành viên
protected:
int __fastcall GetMemberVariable(void) //hàm lấy giá trị
{
return myMemberVariable;
};
void __fastcall SetMemberVariable(int theMemberVariable)
//hàm cài đặt giá trị
{
myMemberVariable = theMemberVariable;
};
public:
__property int MemberVariable = //thuộc tính
{
read=GetMemberVariable,
write=SetMemberVariable
};
Khi đó, chúng ta có thể sử dụng cài đặt của lớp để truy cập thuộc tính
MemberVariable như sau:
15
- AClassWithAProperty ClassWithAProperty;
ClassWithAProperty.MemberVariable = 2;
int Something = ClassWithAProperty.MemberVariable;
Các thuộc tính được sử dụng rất nhiều trong các thành phần C++ Builder. Để trợ
giúp cho môi trường trực quan được cung cấp bởi C++ Buidler, Borland đã tạo ra
một phần đặc biệt cho lớp, được định nghĩa bởi __published tương tự như hai phần
public và private ở ví dụ trên. Nếu một thuộc tính được đặt trong phần __published,
nó sẽ được nhìn thấy trong cửa sổ điều chỉnh thuộc tính trong quá trình thiết kế.
Sau đây là minh họa về thuộc tính được đặt trong phần published:
class aClassWithAProperty: public TComponent
{
private:
int myMemberVariable;
protected:
int __fastcall GetMemberVariable(void)
{
return myMemberVariable;
};
void __fastcall SetMemberVariable(int theMemberVariable)
{
myMemberVariable = theMemberVariable;
};
__published:
__property int MemberVariable =
{
read=GetMemberVariable,
write=SetMemberVariable
};
};
Khi đó thuộc tính MemberVariable có thể được điều chỉnh trực tiếp trong cửa sổ điều
chỉnh thuộc tính của Borland C++ Builder (Object inspector).
Như đã nói ở trên, C++ Builder thưa hưởng rất nhiều đặc tính của C++ Builder. C++
Builder cung cấp một thuộc tính mặc định. Với thuộc tính này, chúng ta có thể truy
cập bằng cách dùng phép toán chỉ số. Chúng ta có thể truy cập thuộc tính mặc định
này như sau:
(*StringListVariable)[Index]
hoàn toàn tương thích với cách truy cập sau vì Strings là thuộc tính mặc định:
StringListVariable->Strings[Index]
16
- Ngôn ngữ C++ Builder giới thiệu một thành phần cho phép truy bắt ngoại lệ được
chấp nhận bởi Java. Trong C++ Builder, chúng ta dùng __finally và try để truy bắt
các ngoại lệ.
Ví dụ:
TStringList *List = new TStringList;
try
{
// thực hiện các câu lệnh
}
__finally
{
delete List;
Đoạn lệnh đặt trong __finally sẽ thực hiện khi các câu lệnh trong try đã được thực
hiện xong hay có một ngoại lệ xảy ra.
Khi viết chương trình bằng Borland C++ Builder, chúng ta dùng thư viện thành phần
trực quan (VCL – Visual Component Library). VCL là nguồn gốc cho các thành phần
được sử dụng để tạo các ứng dụng C++ Builder (các thành phần tương tự VCL dùng
đê phát triển đa nền tảng gọi là CLX). Một thành phần là một đối tượng, thường trực
quan, chẳng hạn một hộp đánh dấu (checkbox), một danh sách chọn ổ đĩa, hoặc một
hình ảnh. Các thành phần cũng có thể không trực quan, chẳng hạn như các kết nối
cơ sở dữ liệu hoặc các kết nối mạng. Các thành phần có thể được chọn từ bảng
thành phần (component palette) của IDE bằng dùng chuột trái để chọn và đặt chúng
lên vùng làm việc.
Hình 1 – IDE của Borland C++ Builder
Chúng ta cũng có thể thêm hoặc viết thêm cái thành phần của chúng ta, VCL thực
sự đã giảm bớt mức độ khó cho quá trình làm việc của chúng ta.
Tất cả các thành phần đều có các thuộc tính, chúng ta có thể điều chỉnh bằng cửa sổ
object inspector (xem hình 1)
17
- Khi chúng ta tạo một ứng dụng mới trong C++ Builder, một biểu mẫu (form) trống sẽ
được tạo một cách tự động. Để xây dựng giao diện ứng dụng của chúng ta, một
cách đơn giản là thêm các đối tượng trực quan vào biểu mẫu, sau đó điều chỉnh vị trí
và kích thước cho phù hợp. Chúng ta cũng có thể thêm các thành phần không trực
quan vào một biểu mẫu, chẳng hạn như các timer; những thành phần này sẽ hiển thị
một biểu tượng trong quá trình thiết kế nhưng sẽ không nhìn thấy khi chương trình
được thực thi. Chúng ta cũng có thể tạo các biểu mẫu đặc biệt như tool window hoặc
dialog. Một chương trình có thể có nhiều biểu mẫu nhưng chỉ có một biểu mẫu làm
biểu mẫu chính (main form). Mặc định, khi người sử dụng chạy chương trình của
chúng ta, biểu mẫu chính sẽ hiển thị lên màn hình, các biểu mẫu sẽ hiển thị đúng vị
trí mà chúng ta đã thiết kế trên màn hình IDE, vị trí này có thể được điều chỉnh lại bởi
Object Inspector.
Để đưa các thành phần vào biểu mẫu, chúng ta phải sử dụng các thành phần trong
bảng thành phần.
Bảng thành phần (Component Palette) nằm ở dưới menu chính, chứa tất cả các
thành phần trong VCL. Các thành phần này được nhóm thành từng nhóm theo tên
chủ đề trên các ngăn (tab) trên các thành phần. Để lựa chọn một thành phần, nhấn
chuột trái lên nó, sau đó nhấn lại một lần nữa lên biểu mẫu để đặt đối tượng vào vị
trí mà chúng ta muốn. Như đã đề cập ở trên, chúng ta có thể điều chỉnh các thuộc
tính của thành phần bằng Object Inspector. Chúng ta cũng có thể điều chỉnh lại các
thành phần trực quan bằng cách rê cạnh biên để điều chỉnh kích thước của nó, hoặc
có thể rê nó đến vị trí mới.
Để đối tượng có thể tương tác được với người sử dụng, chúng ta phải viết mã lệnh
để thực thi nhằm đáp ứng các sự kiện (events) do người dùng phát sinh hay do hệ
điều hành phát sinh. Các mã lệnh để đáp ứng một sự kiện nào đó gọi là giải quyết
sự kiện.
Một ví dụ đầu tiên về việc sử dụng sự kiện trong C++ Builder, chúng ta hãy đưa một
nút nhấn (Button) đơn giản vào giữa màn hình như sau:
Hình 2-Nút nhấn Button1 nằm giữa biểu mẫu
C++ Builder đã tạo một nút nhấn như một phần của chương trình. Tại thời điểm này,
nút nhấn này vẫn chưa thể thực hiện được gì, nghĩa là nếu chương trình được biên
dịch và thực thi thì sẽ không có kết quả gì khi chúng ta nhấn chuột vào nút trên.
Chúng ta có thể dùng các đoạn mã lệnh để đáp ứng sự kiện nhằm thực hiện một vài
hành động như: lưu thông tin người sử dụng nhập vào, hiển thị một hộp thoại thông
báo, hoặc bất cứ việc gì có thể.
18
- Khi nút nhấn được nhấn chuột tại thời điểm thực thi, một sự kiện được phát sinh.
Ứng dụng của chúng ta phải có đoạn mã lệnh để xử lý, đoạn mã lệnh này sẽ tự động
thực hiện mỗi khi sự kiện tương ứng được phát sinh. Để giải quyết vấn đề này, C++
Builder đã tạo ra sự kiện OnClick để viết các mã lệnh nhằm thực thi khi sự kiện nhấn
chuột được phát sinh. Để viết lệnh cho sự kiện này, trong cửa sổ Object Inspector,
chúng ta chọn ngăn Events, chọn tên sự kiện OnClick, nhấn đôi chuột trái lên nó
hoặc đơn giản hơn, chúng ta có thể nhấn đôi chuột lên đối tượng Button1 trên biểu
mẫu. Khi đó, cửa sổ soạn thảo mã lệnh (Source code editor Window) sẽ xuất hiện
với văn bản như sau:
Cấu trúc của sự kiện OnClick như sau:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
}
Nếu chúng ta nhấn chuột phải trong cửa sổ soạn thảo mã lệnh và chọn Open
Source/Header File, chúng ta sẽ nhìn thấy được đoạn mã lệnh sau:
//----------------------------------------------------------------------------
#ifndef Unit1
#define Unit1
//----------------------------------------------------------------------------
#include
#include
#include
#include
//----------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//----------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//----------------------------------------------------------------------------
#endif
Đoạn mã lệnh trên được sinh ra một cách tự động bởi C++ Buider. Tôi đưa vào đây
để chúng ta có thể nhìn thấy những gì mà C++ Builder có thể làm cho chúng ta một
cách tự động.
19
- Bây giờ, chúng ta sẽ thêm một đoạn mã lệnh để hiển thị một hộp thoại thông báo khi
người sử dụng nhấn chuột lên nút nhấn trên. Trong cửa sổ soạn thảo mã lệnh,
chúng ta nhấn vào ngăn Unit1.cpp để chuyển về vị trí viết mã lệnh cho sự kiện của
Button. Thêm đoạn mã lệnh vào để có được đoạn mã lệnh sau:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Hello world! This is a test application! Press OK");
Close();
}
Khi chương trình thực thi, người sử dụng nhấn chuột vào nút nhấn và sự kiện được
phát sinh, đoạn mã lệnh trên sẽ được thực thi và hiển thị lên màn hình một thông
báo. Khi người sử dụng đóng thông báo này lại, chương trình sẽ được dừng bởi câu
lệnh Close().
2.2 Môi trường phát triển tích hợp IDE và các công cụ đặc trưng
Khi chúng ta khởi động C++ Builder, chúng ta được đặt trong một môi trường phát
triển tích hợp gọi là IDE (Integrated Development Environment). IDE cung cấp cho
chúng ta tất cả các công cụ cần thiết để thiết kế, phát triển, kiểm tra, gỡ rối (debug)
và triển khai các ứng dụng, cho phép phát triển các ứng dụng với thời gian phát triển
nhanh hơn.
IDE gồm các công cụ sau:
* Cửa sổ chính và các công cụ
Cửa sổ chính của IDE khít với phần trên của màn hình. Nó chứa các công cụ khác
nhau, bao gồm hệ thống thực đơn (menu bar), tất cả chúng có thể được di chuyển.
Chúng ta có thể thêm hoặc loại bỏ các nút nhấn bằng cách sử dụng chức năng
Customize từ thực đơn đổ xuống (Popup menu) trên bất kỳ thanh công cụ nào.
Chúng ta cũng có thể kéo và thả (drag and drop) bất kỳ lệnh nào được liệt kê trong
hộp thoại ngăn Commands của hộp thoại Customize vào bất kỳ thanh công cụ nào.
Chúng ta chỉ có thể sử dụng những công cụ đã có mà không được tạo ra bất kỳ
công cụ nào cũng như xóa chúng đi. Sử dụng cách tương tự như trên để loại bỏ các
nút nhấn bằng cách chọn chức năng customize và kéo nút nhấn ra khỏi thanh công
cụ đang giữ nó.
* Project Manager
Project Manager không hiển thị một cách mặc định nhưng nó thường rất quan trọng.
Để hiển thị cửa sổ này (dĩ nhiên trong trường hợp nó chưa hiển thị), chúng ta chọn
nó từ thực đơn View. Project Manager cho phép chúng ta quản lý dự án (project)
đang làm việc.
20
nguon tai.lieu . vn