Lập trình .NET và COM Gvhd: Nguyễn Tấn Trần Minh Khang
248
{
file.Delete( );
Console.WriteLine("{0} deleted.", fullName);
}
}
newSubDir.Delete(true);
}
}
}
Kết quả (một phần):
c:\test\media\newTest\recycle.wav renamed to
c:\test\media\newTest\recycle.wav
c:\test\media\newTest\ringin.wav renamed to
c:\test\media\newTest\ringin.wav
Một lần nữa, chỉ nên gọi P/Invoke trong trường bất khả kháng. Sử dụng các lớp
.NET Framework để có đoạn mã được quản lý.
22.2 Con trỏ
Như đã đề cập ở trên, chỉ nên sử dụng con trỏ khi làm việc với các COM, WinAPI,
hàm DLL.
Các toán tử sử dụng với con trỏ tương tự như C/C++
&: toán tử lấy địa chỉ
*: toán tử lấy nội dung con trỏ
->: toán tử đến các thành viên của con trỏ
Ví dụ dưới đây sử dụng con trỏ làm tham số cho hai hàm WinAPI CreatFile và
ReadFile.
Ví dụ 22-2 Sử dụng con trỏ trong C#
using System;
fileHandle = CreateFile(
filename, // tập tin
GenericRead, // cách truy xuất - desiredAccess
UseDefault, // shareMode
UseDefault, // attributes
OpenExisting, // creationDisposition
UseDefault, // flagsAndAttributes
UseDefault); // templateFile
}
// unsafe: cho phép tạo con trỏ và
// ngữ cảnh unsafe (unsafe context)
public unsafe int Read(byte[] buffer, int index, int count)
{
int bytesRead = 0;
// fixed: cấm CLR dọn dẹp rác
fixed (byte* bytePointer = buffer)
{
ReadFile(
fileHandle, // hfile
bytePointer + index, // lpBuffer
count, // nBytesToRead
&bytesRead, // nBytesRead
0); // overlapped
}
return bytesRead;
}
const uint GenericRead = 0x80000000;
const uint OpenExisting = 3;
const uint UseDefault = 0;
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
251 Chương 23 Website dạy học ngôn ngữ C#
23.1 Hiện trạng và yêu cầu
Trước tiên chúng ta sẽ tìm hiểu sơ qua về những gì đang diễn ra trong thực tế, và
ứng dụng của ta liên quan đến khía cạnh nào. Sau đó ta phải xác định rõ các yêu
cầu mà ứng dụng cần phải thực hiện. Việc xác định thật rõ và đúng các yêu cầu
mà ứng dụng cần phải thực hiện là bước rất quan trọng, nó sẽ định hướng cho
toàn bộ ứng dụng của chúng ta.
23.1.1 Hiện trạng thực tế
23.1.1.1 Hiện trạng
Hiện nay, lĩnh vực công nghệ thông tin trên toàn thế giới đang phát triển hết sức
nhanh chóng cả về hướng công nghệ phần mềm và lẫn hướng công nghệ phần
cứng. Chỉ cần một vài tháng là sẽ có rất nhiều thay đổi, vì thế ta cần phải có một
phương pháp tốt để tiếp cận chúng.
Mặc dù có rất nhiều công cụ, ngôn ngữ giúp các nhà phát triển phần mềm tạo ra
hàng loạt các ứng dụng mạnh mẽ, nhưng giường như chưa đủ. Họ vẫn luôn muốn
tìm tòi những cái mới, công cụ tốt hơn để có thể tăng hiệu suất phát triển phần
mềm thật nhanh và thật hiệu quả. Một số tổ chức cung cấp các bộ phát triển phần
mềm nổi tiếng như :
1. Microsoft với hệ điều hành Windows, bộ Visual Studio 6.0 với các ngôn
ngữ lập trình như : Visual Basic, Visual C++ …
2. Tổ chức Sun với ngôn ngữ Java đã từng nổi tiếng một thời, thống trị trong
các ứng dụng Web.
Những năm đầu của thế kỷ 21, năm 2000 – 2002. Micrsoft đã tung ra thị
trường một công nghệ mới Microsoft Development Enviroment .NET với
mục đích :
3. Đánh bại các đối thủ khác : ngôn ngữ lập trình Java của Sun hay hệ quản trị
Hình 23-3 Liệt kê các ví dụ minh họa lý thuyết thuộc chủ đề theo nhóm
Minh họa lý thuyết qua ví dụ
Sau khi tìm hiểu lý thuyết, người dùng muốn tìm hiểu rõ hơn lý thuyết qua phần
mã nguồn của các ví dụ thuộc chủ đề đó. Tùy từng loại chủ đề mà người dùng
được hỗ trợ chức năng gõ mã tiếp vào cửa sổ Text, sau đó sẽ gửi trang mã này
lên máy chủ để nhận được kết quả của phần mã vừa gõ vào.
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
255
Hình 23-4 Minh họa lý thuyết qua ví dụ, cho phép người dùng tự gõ mã của họ
vào
Tổ chức thi trắc nghiệm cho chủ đề
Trong mỗi chủ đề, người dùng có thể tham gia thi trắc nghiệm kiến thức của
mình :
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
256
Hình 23-5 Tổ chức thi trắc nghiệm cho chủ đề
23.1.2 Xác định yêu cầu
Ứng dụng phải giúp người dùng có thể nắm bắt được kiến thức một cách nhanh
nhất, tránh tràn lan, dài dòng và phải hỗ trợ chức năng hiệu chỉnh ( Admin ).
23.1.2.1 Yêu cầu chức năng
Ứng dụng dự định sẽ có 5 chức năng chính sau :
1. Hiển thị lý thuết
2. Minh họa lý thuyết qua ví dụ
3. Tổ chức thi trắc nghiệm
4. Cho phép quảng cáo, giới thiệu sách và Link tới các Site liên quan khác
5. Cho phép chức năng hiệu chỉnh ( thêm, xóa, sửa ) các thành phần trên
Mô tả chi tiết về các yêu cầu chức năng trên :
• Các báo cáo thống kê về các mục trên nếu có.
23.1.2.2 Yêu cầu chất lượng
2. Ứng dụng phải hiển thị thông tin một cách súch tích, ngắn gọn, trực quan
đối với người dùng, phải giúp người dúng nắm bắt thông tin được nhanh
nhất.
3. Phải cho phép hiệu chỉnh (Admin) trực tiếp trên ứng dụng.
4. Nội dung phải chất lượng, phù hợp với từng chủ đề, dễ hiểu.
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
258
23.2 Phân tích hướng đối tượng
23.2.1 Sơ đồ lớp đối tượng
Hình 23-6 Lớp đối tượng
23.2.2 Ý nghĩa các đối tượng chính
23.2.2.1 CHỦ ĐỀ
Ứng dụng có thể có nhiều chủ đề, mỗi chủ đề sẽ lưu trữ các thông tin về chính nó
như : các thành phần thuộc chủ đề, giới thiệu về chủ đề, có nhiều chương.
23.2.2.2 CHƯƠNG
Chương thuộc về một chủ đề nào đó, mỗi chương có một hay nhiều mục chính,
ví dụ, trắc nghiệm.
23.2.2.3 MỤC CHÍNH
Mục chính thuộc về một chương nào đó, mỗi mục chính có một hay nhiều ý
chính con và một tập tin mô tả chi tiết cho mục chính này nếu có.
23.2.2.4 VÍ DỤ
Ví dụ thuộc về một chương nào đó, mỗi ví dụ sẽ có phần mã nguồn và kết xuất
tương ứng với mã nguồn này, có thể sẽ có một tập tin mô tả chi tiết về ví dụ nếu
cần thiết.
23.2.2.5 CÂU TRẮC NGHIỆM
Trắc nghiệm thuộc về một chương, một bài trắc nghiệm sẽ có nhiều câu hỏi, mỗi
câu hỏi sẽ có một đáp án và các chọn lựa tương ứng với câu hỏi đó.
1 MAMUCCHINH PK INT Mã mục chính
2 TENMC VARCHAR(100) Tên mục chính
3 GIOITHIEUMC VARCHAR(2000) Giới thiệu tổng quan tổng
quan về mục chính
4 TAPTIN VARCHAR(50) Tên tập tin mô tả chi tiết
về mục chính nếu có
5 NOIDUNGCTMC VARCHAR(1000) Nội dung của một ý chính
con thuộc mục chính
Thuộc tính đối tượng : VÍ DỤ
Stt Tên thuộc tính Loại Kiểu dữ liệu Ý nghĩa
1 MAVD PK INT Mã ví dụ
2 TENVIDU VARCHAR(100) Tên của ví dụ
3 MANGUON VARCHAR(1000) Mã nguồn của một ví dụ
4 KETQUA VARCHAR(1000) Kết xuất của mã ví dụ
5 TAPTIN VARCHAR(50) Tên tập tin mô tả chi tiết
về một ví dụ
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
260
Thuộc tính đối tượng : CÂU TRẮC NGHIỆM
Stt Tên thuộc tính Loại Kiểu dữ liệu Ý nghĩa
1 MACAUTRACNGHIEM PK INT Mã câu trắc
nghiệm
2 TEN VARCHAR(500) Tên của câu trắc
nghiệm
3 NOIDUNG VARCHAR(1000) Nội dung của câu
trắc nghiệm
4 TRALOI1, TRALOI2,
TRALOI3, TRALOI4
chương
Qui định Kiểm tra các ràng buộc và tính hợp
lệ khi thêm, xóa, sửa
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
261
Xử lý trên đối tượng : MỤC CHÍNH
Stt Tên xử lý Loại Ý nghĩa
1 Hiển thị thông tin về mục chính
thuộc chương
Qui định Hiển thị danh sách các ý chính con
của mục chính
2 Thêm mục chính mới Qui định Dữ liệu nhập là tên, nội dung mục
chính và các ý chính con, và cả tên
tập tin mô tả mục chính nếu cần
thiết
3 Xóa mục chính đã có sẵn Qui định Xóa toàn bộ thông tin về mục chính
: các ý chính, tên tập tin
4 Sửa đổi thông tin về mục chính Qui định Hiệu chỉnh tên, nội dung nội dung
mục chính và các ý chính con nếu
cần thiết
5 Kiểm tra hợp lệ việc thay đổi mục
chính
Qui định Kiểm tra các ràng buộc và tính hợp
lệ khi thêm, xóa, sửa
Xử lý trên đối tượng : VÍ DỤ
Stt Tên xử lý Loại Ý nghĩa
1 Hiển thị thông tin về ví dụ Qui định Hiển thị danh sách các ví dụ của
chương
nghiệm
Qui định Hiệu chỉnh tên, câu hỏi trắc nghiệm,
các câu chọn lựa và đáp án của câu.
5 Kiểm tra hợp lệ việc thay đổi câu
trắc nghiệm
Qui định Kiểm tra các ràng buộc và tính hợp
lệ khi thêm, xóa, sửa
23.3 Thiết kế hướng đối tượng
23.3.1 Thiết kế dữ liệu
23.3.1.1 Sơ đồ logic
Hình 23-7 Sơ đồ logic
23.3.1.2 Bảng thuộc tính các đối tượng phụ
Thuộc tính đối tượng : THAM SỐ
Stt Tên thuộc tính Loại Kiểu dữ liệu Ý nghĩa
1 MATHAMSO PK INT Mã tham số
2 TEN VARCHAR(100) Tên tham số
3 GIATRI INT Giá trị tham số
4 DIENGIAI VARCHAR(100) Ý nghĩa của tham
số
Thuộc tính đối tượng : NGƯỜI DÙNG
Stt Tên thuộc tính Loại Kiểu dữ liệu Ý nghĩa
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
263 MÀN
HÌNH
CHÍNH
23.3.2.2 Một số giao diện của ứng dụng
Giao diện chính
Hình 23-8 Trang chủ ứng dụng dạy học CSharp
•
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
265
Giao diện chi tiết lý thuyết từng chương
Hình 23-9 Liệt kê chi tiết các mục chính, ý chính con trong chương số 1
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
266
Giao diện tổng quan về ví dụ
Hình 23-10 Liệt kê tất cả ví dụ trong mỗi chương
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
267
Giao diện mô tả chi tiết ví dụ
Hình 23-11 Minh họa lý thuyết bằng mã ví dụ và kết xuất của nó
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
268
Giao diện các câu trắc nghiệm kiến thức
Hình 23-12 Trắc nghiệm kiến thức chương số 1
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang
269
Kết quả bài làm trắc nghiệm
Hình 23-13 Kết quả chấm điểm bài làm trắc nghiệm
Website dạy học ngôn ngữ C# Gvhd: Nguyễn Tấn Trần Minh Khang