Link tải luận văn miễn phí cho ae Kết Nối
Mục lục
Mục lục ...........................................................................................................................1
Mở đầu............................................................................................................................3
Chương 1: Kiến trúc .NET ...........................................................................................4
1. 1 Quan hệ giữa C# và.NET .........................................................................................4
1. 2 CLR (Common Language Runtime) ........................................................................4
1. 3 Giới thiệu IL (Intermediate Language) ....................................................................5
1. 4 Thư viện (Assembly)................................................................................................5
1. 5 Các lớp trong .NET ..................................................................................................5
1. 6 Tạo ứng dụng .NET sử dụng C#...............................................................................6
1. 7 Vai trò của .NET trong kiến trúc .NET Enterprise...................................................6
Chương 2: Căn bản C# .................................................................................................7
2. 1 Viết chương trình C# đầu tiên ..................................................................................7
2. 2 Biến.........................................................................................................................11
2. 3 Kiểu dữ liệu cơ bản.................................................................................................12
2. 4 Điều khiển luồng ....................................................................................................14
2. 5 Kiểu liệt kê..............................................................................................................19
2. 6 Mảng.......................................................................................................................21
2. 7 Không gian tên (Namespace) .................................................................................22
2. 8 cách Main() ...............................................................................................23
2. 9 Biên dịch nhiều tập tin C#......................................................................................23
2. 10 Xuất nhập qua Console.........................................................................................24
2. 11 Sử dụng chú thích.................................................................................................25
2. 12 Chỉ dẫn tiền xử lý trong C# ..................................................................................25
Chương 3: Đối tượng và kiểu ....................................................................................27
3. 1 Lớp và cấu trúc .......................................................................................................27
3. 2 Thành viên của lớp .................................................................................................29
3. 3 Cấu trúc (Struct) .....................................................................................................46
3. 4 Lớp Object..............................................................................................................53
Chương 4: Sự kế thừa .................................................................................................56
4. 1 Các kiểu kế thừa .....................................................................................................56
4. 3 Từ khóa bổ trợ ........................................................................................................59
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi2
4. 4 Đa hình (polymorphism) ........................................................................................60
Chương 5: Toán tử và chuyển kiểu............................................................................72
5. 1 Toán tử....................................................................................................................72
5. 3 Quá tải toán tử ........................................................................................................74
5. 4 Chuyển kiểu do người dùng định nghĩa .................................................................79
Chương 6: Sự ủy nhiệm, sự kiện và quản lý lỗi........................................................81
6. 1 Sự ủy nhiệm (delegate)...........................................................................................81
6. 2 Sự kiện (Event).......................................................................................................82
6. 3 Quản lý lỗi và biệt lệ ..............................................................................................85
Chapter 7: Quản lý bộ nhớ và con trỏ.......................................................................89
7. 1 Quản lý bộ nhớ .......................................................................................................89
7. 2 Giải phóng tài nguyên ............................................................................................90
7. 3 Mã không an toàn ...................................................................................................93
Chương 8: Chuỗi, biểu thức quy tắc và tập hợp ......................................................97
8. 1 System.String..........................................................................................................97
8. 2 Biểu thức quy tắc....................................................................................................98
8. 3 Nhóm các đối tượng .............................................................................................100
Chương 9: Reflection.................................................................................................104
9. 1 Thuộc tính (attribute) tùy chọn.............................................................................104
9. 2 Reflection..............................................................................................................106
Hướng dẫn phần thực hành......................................................................................110
Tài liệu tham khảo.....................................................................................................1103
Mở đầu
Lập trình hướng đối tượng (OOP) đóng một vai trò quan trọng trong việc xây dựng và
phát triển ứng dụng. Đặc biệt trong các ngôn ngữ lập trình thế hệ thứ 4 (như java hay
c#) hầu như được xây dựng là những ngôn ngữ thuần đối tượng nhằm hỗ trợ những
nguyên lý căn bản trong lập trình hướng đối tượng cũng như các chức năng nâng cao
dựa trên OOP giúp cho việc xây dựng và phát triển ứng dụng trên OOP dễ dàng và
nhanh chóng hơn. Do đó việc tiếp cận và nằm vững các nguyên lý lập trình hướng đối
tượng rất quan trọng đối với sinh viên cho việc sử dụng và ứng dụng nó cho các môn
học liên quan đến lập trình và các môn học chuyên ngành ở các học kì tiếp theo.
Mục tiêu của môn học:
Ôn tập lại các vấn đề về kĩ thuật lập trình, cách thức phát triển ứng dụng đơn gian
trên C#.
Cung cấp cho sinh viên tiếp cận và sử dụng ngôn ngữ lập trình C#.
Cung cấp cho sinh viên kiến thức về lập trình hướng đối tượng trên ngôn ngữ lập
trình C# bao gồm tính đóng gói, kế thừa, đa hình, giao tiếp, attribute, reflection.
Cung cấp các kiến thức về xử lý và thao tác dữ liệu trên tập tin văn bản và nhị
phân, XML.
Cung cấp các kiến thức về sử dụng các cấu trúc dữ liệu được dựng sẵn trên .Net
trong quá trình phát triển ứng dụng như Stack, Queue, ArrayList, HashTable.
Giới thiệu việc xây dựng và phát triển ứng dụng trên môi trường môi trường .Net.
Cung cấp cho sinh viên tiếp cận và làm quen với môi trường phát triển ứng dụng
dựa trên Visual Studio 2005.
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi4
Chương 1: Kiến trúc .NET
Microsoft Visual C# là một ngôn ngữ mạnh mẽ nhưng đơn giản chủ yếu hướng đến
các nhà phát triển xây dựng ứng dụng trên nền tảng .NET của Microsoft. C# kế thừa
những đặc trưng tốt nhất của ngôn ngữ C++ và Microsoft Visual Basic, và loại bỏ đi
một số đặc trưng không thống nhất và lạc hậu với mục tiêu tạo ra một ngôn ngữ rõ
ràng và logic hơn. Sự kì vọng của C# đã được bổ sung một số đặc trưng mới quan
trọng bao gồm Generic, cơ chế lặp và cách ẩn tên... Môi trường phát triển cung
cấp bởi Visual Studio 2005 làm cho những đặc trưng này trở nên dễ sử dụng và nâng
cao năng suất cho các nhà phát triển ứng dụng.
Mục đích của chương:
Giới thiệu ngôn ngữ C#.
Giới thiệu các thành phần quan trọng của nền tảng .Net.
So sánh C# với ngôn ngữ lập trình C và một số các ngôn ngữ lập trình khác.
1. 1 Quan hệ giữa C# và.NET
C# là một ngôn ngữ lập trình mới và có các đặc trưng:
Nó được thiết kế riêng để dùng cho nền tảng.NET.
Nó là một ngôn ngữ thuần đối tượng được thiết kế dựa trên kinh nghiệm của các
ngôn ngữ hướng đối tượng khác.
C# là một ngôn ngữ độc lập. Nó được thiết kế để có thể sinh ra mã đích trong môi
trường .NET, nó không phải là một phần của .NET bởi vậy có một vài đặc trưng
được hỗ trợ bởi .NET nhưng C# không hỗ trợ.
1. 2 CLR (Common Language Runtime)
Điểm tập trung của nền tảng.NET là môi trường thực hiện việc thực thi ứng dụng được
gọi là CLR (Commong Language Runtime-CLR).
Trong .NET chương trình không biên dịch thành tập tin thực thi, chúng được biên dịch
theo hai bước:
Biên dịch mã nguồn thành IL (Intermediate Language).
Dùng CLR để biên dịch IL thành mã máy theo từng nền tảng thích hợp.
Việc thực hiện như trên cung cấp nhiều thuận lợi cho .NET như:
Độc lập nền tảng và phần cứng.
Nâng cao hiệu suất.
Giúp cho các ngôn ngữ phát triển trên các ngôn ngữ lập trình khác nhau có thể
tương tác với nhau.5
1. 3 Giới thiệu IL (Intermediate Language)
IL hoạt động như là bản chất của nền tảng .NET. Mã C# sẽ luôn được dịch sang IL
trước khi nó được thực thi. Bất kì ngôn ngữ nào hướng .NET cũng sẽ hỗ trợ các đặc
tính chính của IL.
Sau đây là những đặc tính chính của IL:
Hướng đối tượng và dùng giao tiếp.
Sự tách biệt giữa kiểu giá trị và kiểu tham chiếu.
Định kiểu mạnh.
Quản lỗi thông qua các ngoại lệ.
Sự dụng các thuộc tính.
1. 4 Thư viện (Assembly)
Một assembly là một tập tin chứa mã đã được biên dịch sang .NET. Nó có thể chứa
trong nhiều tập tin. Nếu một assembly được lưu trong nhiều tập tin, thì sẽ có một tập
tin chính chứa các con trỏ và các mô tả về các tập tin khác của assembly. Cấu trúc
assembly được dùng chung cho cả mã thực thi và mã thư viện. Sự khác biệt duy nhất
là assembly thực thi có chứa hàm main trong khi assembly thư viện thì không có.
Một điểm quan trọng trong các assembly là chúng chứa các siêu dữ liệu (metadata)
dùng để mô tả các kiểu và cách được định nghĩa tương ứng trong mã. Một
assembly cũng chứa siêu dữ liệu dùng để mô tả chính assembly đó. Siêu dữ liệu chứa
trong một vùng được gọi là tập tin mô tả (manifest), nó cho phép kiểm tra phiên bản
và tình trạng của assembly.
Với việc assembly chứa siêu dữ liệu, nó cho phép chương trình, ứng dụng hay các
assembly khác có thể gọi mã trong một assembly mà không cần tham chiếu đến
Registry, hay một dữ liệu nguồn khác.
1. 5 Các lớp trong .NET
Một trong những lợi ích lớn nhất của viết mã đó là việc sử dụng các thư viện lớp cơ sở
sẵn có của .NET. Thư viện lớp cơ sở của .NET là một tập hợp rất nhiều các lớp mã đã
được phát triển bởi Microsoft, những lớp này cho phép thao tác rất nhiều các tác vụ
sẵn có trong Windows. Chúng ta có thể tạo các lớp của mình từ các lớp có sẵn trong
thư viện lớp cơ sở của .NET thông qua sự kế thừa.
Thư viện lớp cơ sở.NET là kết hợp tính đơn giản của các thư viện Visual Basic và Java
với hầu hết các đặc tính trong các thư viện hàm API. Có nhiều đặc tính lạ, ít sử dụng
của Windows không được cung cấp trong các lớp của thư viện .NET. Những đặc tính
thông dụng đều đã được hỗ trợ đầy đủ trong thư viện lớp của.NET. Nếu chúng ta
muốn gọi một hàm API trong .NET, chúng ta thực hiện cơ chế "platform-invoke", cơ
chế này luôn bảo đảm tính đúng đắn của kiểu dữ liệu khi gọi và hỗ trợ cho cả C#, C++,
và VB.NET. Thao tác gọi này không khó hơn việc gọi trực tiếp API từ mã C++.
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi6
1. 6 Tạo ứng dụng .NET sử dụng C#
C# có thể tạo các ứng dụng dòng lệnh (console) cũng như các ứng dụng thuần văn bản
chạy trên DOS hay Window. Tất nhiên, chúng ta có thể dùng C# để tạo các ứng dụng
dùng cho các công nghệ tương thích với .NET.
Các ứng dụng có thể viết trên C#:
Ứng dụng ASP.NET.
Ứng dụng WinForm.
Các dịch vụ dựa trên Windows.
1. 7 Vai trò của .NET trong kiến trúc .NET Enterprise
C# yêu cầu khi chạy phải có “.NET runtime”, do đó bắt buộc chúng ta phải cài đặt
.Net runtime trước khi muốn chạy các ứng dụng được phát triển trên .Net. Tuy nhiên,
trong một số phiên bản mới của hệ điều hành Windows, .Net đã được cài đặt mặc định.
Thật vậy, C# được coi như là một cơ hội nổi bật cho các tổ chức để có thể tạo những
ứng dụng mạnh mẽ, những ứng dụng client-server theo kiến trúc N-lớp.
Khi kết nối dữ liệu thông qua ADO.NET, C# có khả năng truy cập tới các cơ sở dữ
liệu tổng quát và nhanh chóng như cơ sở dữ liệu SQL Server và Oracle. Dữ liệu trả về
từ các thao tác dữ liệu thông qua DataSet giúp dễ dàng thao tác thông qua các đối
tượng của ADO.NET. Kết nối dữ liệu tự động trả về kiểu XML giúp cho việc truyền
thông trên mạng dễ dàng.7
Chương 2: Căn bản C#
Mục đích của chương:
Khai báo biến.
Khởi tạo và phạm vi hoạt động của biến.
Các kiểu dữ liệu cơ bản.
Cách sử dụng các vòng lặp và câu lệnh.
Gọi, hiển thị lớp và cách.
Cách sử dụng mảng.
Toán tử.
An toàn kiểu và cách để chuyển kiểu dữ liệu.
Kiểu liệt kê (enum).
Không gian tên (namespace).
Hàm Main( ).
Biên dịch trong C#.
Xuất nhập dùng System.Console.
Sử dụng chú thích trong C#.
Các định danh và từ khoá trong C#.
2. 1 Viết chương trình C# đầu tiên
Đầu tiên chúng ta viết một chương trình ứng dụng “Hello World” đơn giản sử dụng
C#:
class HelloWorld
{
static void Main( )
{
System.Console.WriteLine("Chuong Trinh Dau Tien");
System.Console.Readline();
}
}
Ứng dụng dòng lệnh là ứng dụng không có giao diện người dùng. Việc xuất nhập
thông qua dòng lệnh chuẩn. cách Main() trong ví dụ “Hello World” viết chuỗi
“Chuong Trinh Dau Tien” lên màn hình. Màn hình được quản lý bởi một đối tượng tên
Console. Đối tượng này có một cách WriteLine(), nhận một chuỗi và xuất
chúng ra thiết bị xuất chuẩn (màn hình).
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi8
Cách chạy chương trình “Hello world”
Để thực hiện được chương trình chúng ta sử dụng “Visual Studio.NET Intergated
Development Environment (IDE)” trong công cụ “Visual Studio.NET IDE”. Chúng
cung cấp những công cụ rất mạnh cho việc dò lỗi và hỗ trợ một số chức năng khác.
Soạn thảo chương trình “Hello Wolrd”
Chạy chương trình IDE. Chọn Visual Studio.NET từ thực đơn Start
Chọn FileÆNewÆProject. Chọn kiểu dự án là Visual C# Project và dạng Console
Application. Chúng ta có thể nhập vào tên dự án và đường dẫn để lưu trữ dự án.
Sau khi chọn nút OK, một cửa sổ mới sẽ xuất hiện như hình 2.1
Hình 2.1:Tạo ứng dụng dòng lệnh trong Visual Studio.NET
Sau đó đưa lệnh sau vào trong hàm Main()
System.Console.WriteLine("Chuong Trinh Dau Tien");9
Hình 2.2: Cửa sổ soạn thảo cho một dự án mới
Biên dịch và chạy chương trình “Hello Wolrd”
Có nhiều cách để biên dịch và chạy chương trình trong Visual Studio.NET
Chọn Ctl+Shift+B hay BuildÆbuild từ thực đơn.
Chọn nút Build như trong hình 2.3.
Hình 2.3: Nút build
Để chạy chương trình mà không thực hiện dò lỗi:
Nhấn Ctrl + F5 hay DebugÆStart Without Debugging từ thực đơn.
Chọn nút Start Without Debugging như trong hình 2.4
Hình 2.4: Nút Start Without Debugging
Sử dụng công cụ dò lỗi của Visual Studio.NET
3 kỹ năng quan trọng khi dò lỗi:
Bằng cách nào đặt các điểm dừng (breakpoint) và chạy các điểm dừng như thế
nào?
Bằng cách nào chạy từng bước qua các lời gọi cách.
Bằng cách nào kiểm tra và thay đổi giá trị của biến, dữ liệu thành viên của lớp.
Khi bạn đang cố xóa một đối tượng đang hoạt động. Nhớ rằng đối tượng là kiểu
tham chiếu. Nếu một lớp giữ một tham chiếu đến một đối tượng đã bị hủy. Nó có
thể tham chiếu đối tượng không sử dụng hay tham chiếu đến một đối tượng hoàn
toàn khác trong cùng vùng nhớ.
Bạn muốn xóa cùng đối tượng nhiều lần. Điều này có thể rất tai hại dựa trên mã
trong cách hủy.
Cơ chế thu dọn có nhiệm vụ hủy đối tượng cho bạn và nó đảm bảo các vấn đề sau:
Mỗi đối tượng sẽ bị hủy và khi chương trình kết thúc tất cả các đối tượng đang tồn
tại sẽ bị hủy.
Mỗi đối tượng chính xác bị hủy một lần.
Mỗi đối tượng bị hủy khi không còn tham chiếu đến nó.
Những đảm bảo này rất hữu ích và tiện lợi cho các lập trình viên, bạn chỉ tập trung vào
phần logic của chương trình.
Một đặc trưng quan trọng nữa của cơ chế thu dọn là cách hủy sẽ không chạy
cho tới khi đối tượng là rác cần được thu dọn. Nếu bạn viết một cách tạo lập,
bạn sẽ biết nó sẽ chạy nhưng không biết lúc nào chạy?
Cách thức làm việc của cơ chế thu dọn
Cơ chế thu dọn chạy trên một tiến trình riêng của nó và chỉ chạy ở một thời gian nào
đó (thông thường khi ứng dụng chạy đến cuối cách). Khi nó chạy, các tiến
trình khác đang chạy trong ứng dụng của bạn sẽ tạm thời treo, bởi vì cơ chế thu dọn
cần di chuyển các đối tượng và cập nhật các tham chiếu đến các đối tượng. Cơ chế thu
dọn thực hiện các bước sau:
1. Xây dựng một bản đồ của tất cả các đối tượng có thể đến được. Cơ chế thu dọn
xây dựng bản đồ này rất cẩn thận vì tránh tham chiếu vòng gây ra lặp vô hạn.
Bất kì đối tượng nào không có trong bản đồ này được xem là không đến được.
2. Nó kiểm tra các đối tượng không thể đến có cách hủy cần để chạy hay
không. Nếu có nó đưa vào trong một hàng đợi đặc biệt gọi là F-reachable.
3. Nó thu hồi các đối tượng không thể đến còn lại, bằng cách di chuyển các đối
tượng xuống dưới heap. Vì vậy sự phân mảnh và giải phóng bộ nhớ ở đầu heap.
Khi cơ chế thu dọn di chuyển một đối tượng, nó cũng cập nhật tất cả tham chiếu
đến đối tượng này.
4. Ở thời điểm này, nó cho phép các tiến trình khác chạy lại.
5. Nó thu hồi các đối tượng trong F-reachable trong một tiến trình độc lập.
7. 3 Mã không an toàn
Có những trường hợp ta cần truy xuất bộ nhớ trực tiếp như khi ta muốn truy xuất vào
các hàm bên ngoài (không thuộc .NET) hay tham số yêu cầu truyền vào là con trỏ,
hay là vì ta muốn truy nhập vào nội dung bộ nhớ để sửa lỗi. Trong phần này ta sẽ
xem xét cách C# đáp ứng những điều này như thế nào.
Con trỏ
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:
Mục lục
Mục lục ...........................................................................................................................1
Mở đầu............................................................................................................................3
Chương 1: Kiến trúc .NET ...........................................................................................4
1. 1 Quan hệ giữa C# và.NET .........................................................................................4
1. 2 CLR (Common Language Runtime) ........................................................................4
1. 3 Giới thiệu IL (Intermediate Language) ....................................................................5
1. 4 Thư viện (Assembly)................................................................................................5
1. 5 Các lớp trong .NET ..................................................................................................5
1. 6 Tạo ứng dụng .NET sử dụng C#...............................................................................6
1. 7 Vai trò của .NET trong kiến trúc .NET Enterprise...................................................6
Chương 2: Căn bản C# .................................................................................................7
2. 1 Viết chương trình C# đầu tiên ..................................................................................7
2. 2 Biến.........................................................................................................................11
2. 3 Kiểu dữ liệu cơ bản.................................................................................................12
2. 4 Điều khiển luồng ....................................................................................................14
2. 5 Kiểu liệt kê..............................................................................................................19
2. 6 Mảng.......................................................................................................................21
2. 7 Không gian tên (Namespace) .................................................................................22
2. 8 cách Main() ...............................................................................................23
2. 9 Biên dịch nhiều tập tin C#......................................................................................23
2. 10 Xuất nhập qua Console.........................................................................................24
2. 11 Sử dụng chú thích.................................................................................................25
2. 12 Chỉ dẫn tiền xử lý trong C# ..................................................................................25
Chương 3: Đối tượng và kiểu ....................................................................................27
3. 1 Lớp và cấu trúc .......................................................................................................27
3. 2 Thành viên của lớp .................................................................................................29
3. 3 Cấu trúc (Struct) .....................................................................................................46
3. 4 Lớp Object..............................................................................................................53
Chương 4: Sự kế thừa .................................................................................................56
4. 1 Các kiểu kế thừa .....................................................................................................56
4. 3 Từ khóa bổ trợ ........................................................................................................59
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi2
4. 4 Đa hình (polymorphism) ........................................................................................60
Chương 5: Toán tử và chuyển kiểu............................................................................72
5. 1 Toán tử....................................................................................................................72
5. 3 Quá tải toán tử ........................................................................................................74
5. 4 Chuyển kiểu do người dùng định nghĩa .................................................................79
Chương 6: Sự ủy nhiệm, sự kiện và quản lý lỗi........................................................81
6. 1 Sự ủy nhiệm (delegate)...........................................................................................81
6. 2 Sự kiện (Event).......................................................................................................82
6. 3 Quản lý lỗi và biệt lệ ..............................................................................................85
Chapter 7: Quản lý bộ nhớ và con trỏ.......................................................................89
7. 1 Quản lý bộ nhớ .......................................................................................................89
7. 2 Giải phóng tài nguyên ............................................................................................90
7. 3 Mã không an toàn ...................................................................................................93
Chương 8: Chuỗi, biểu thức quy tắc và tập hợp ......................................................97
8. 1 System.String..........................................................................................................97
8. 2 Biểu thức quy tắc....................................................................................................98
8. 3 Nhóm các đối tượng .............................................................................................100
Chương 9: Reflection.................................................................................................104
9. 1 Thuộc tính (attribute) tùy chọn.............................................................................104
9. 2 Reflection..............................................................................................................106
Hướng dẫn phần thực hành......................................................................................110
Tài liệu tham khảo.....................................................................................................1103
Mở đầu
Lập trình hướng đối tượng (OOP) đóng một vai trò quan trọng trong việc xây dựng và
phát triển ứng dụng. Đặc biệt trong các ngôn ngữ lập trình thế hệ thứ 4 (như java hay
c#) hầu như được xây dựng là những ngôn ngữ thuần đối tượng nhằm hỗ trợ những
nguyên lý căn bản trong lập trình hướng đối tượng cũng như các chức năng nâng cao
dựa trên OOP giúp cho việc xây dựng và phát triển ứng dụng trên OOP dễ dàng và
nhanh chóng hơn. Do đó việc tiếp cận và nằm vững các nguyên lý lập trình hướng đối
tượng rất quan trọng đối với sinh viên cho việc sử dụng và ứng dụng nó cho các môn
học liên quan đến lập trình và các môn học chuyên ngành ở các học kì tiếp theo.
Mục tiêu của môn học:
Ôn tập lại các vấn đề về kĩ thuật lập trình, cách thức phát triển ứng dụng đơn gian
trên C#.
Cung cấp cho sinh viên tiếp cận và sử dụng ngôn ngữ lập trình C#.
Cung cấp cho sinh viên kiến thức về lập trình hướng đối tượng trên ngôn ngữ lập
trình C# bao gồm tính đóng gói, kế thừa, đa hình, giao tiếp, attribute, reflection.
Cung cấp các kiến thức về xử lý và thao tác dữ liệu trên tập tin văn bản và nhị
phân, XML.
Cung cấp các kiến thức về sử dụng các cấu trúc dữ liệu được dựng sẵn trên .Net
trong quá trình phát triển ứng dụng như Stack, Queue, ArrayList, HashTable.
Giới thiệu việc xây dựng và phát triển ứng dụng trên môi trường môi trường .Net.
Cung cấp cho sinh viên tiếp cận và làm quen với môi trường phát triển ứng dụng
dựa trên Visual Studio 2005.
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi4
Chương 1: Kiến trúc .NET
Microsoft Visual C# là một ngôn ngữ mạnh mẽ nhưng đơn giản chủ yếu hướng đến
các nhà phát triển xây dựng ứng dụng trên nền tảng .NET của Microsoft. C# kế thừa
những đặc trưng tốt nhất của ngôn ngữ C++ và Microsoft Visual Basic, và loại bỏ đi
một số đặc trưng không thống nhất và lạc hậu với mục tiêu tạo ra một ngôn ngữ rõ
ràng và logic hơn. Sự kì vọng của C# đã được bổ sung một số đặc trưng mới quan
trọng bao gồm Generic, cơ chế lặp và cách ẩn tên... Môi trường phát triển cung
cấp bởi Visual Studio 2005 làm cho những đặc trưng này trở nên dễ sử dụng và nâng
cao năng suất cho các nhà phát triển ứng dụng.
Mục đích của chương:
Giới thiệu ngôn ngữ C#.
Giới thiệu các thành phần quan trọng của nền tảng .Net.
So sánh C# với ngôn ngữ lập trình C và một số các ngôn ngữ lập trình khác.
1. 1 Quan hệ giữa C# và.NET
C# là một ngôn ngữ lập trình mới và có các đặc trưng:
Nó được thiết kế riêng để dùng cho nền tảng.NET.
Nó là một ngôn ngữ thuần đối tượng được thiết kế dựa trên kinh nghiệm của các
ngôn ngữ hướng đối tượng khác.
C# là một ngôn ngữ độc lập. Nó được thiết kế để có thể sinh ra mã đích trong môi
trường .NET, nó không phải là một phần của .NET bởi vậy có một vài đặc trưng
được hỗ trợ bởi .NET nhưng C# không hỗ trợ.
1. 2 CLR (Common Language Runtime)
Điểm tập trung của nền tảng.NET là môi trường thực hiện việc thực thi ứng dụng được
gọi là CLR (Commong Language Runtime-CLR).
Trong .NET chương trình không biên dịch thành tập tin thực thi, chúng được biên dịch
theo hai bước:
Biên dịch mã nguồn thành IL (Intermediate Language).
Dùng CLR để biên dịch IL thành mã máy theo từng nền tảng thích hợp.
Việc thực hiện như trên cung cấp nhiều thuận lợi cho .NET như:
Độc lập nền tảng và phần cứng.
Nâng cao hiệu suất.
Giúp cho các ngôn ngữ phát triển trên các ngôn ngữ lập trình khác nhau có thể
tương tác với nhau.5
1. 3 Giới thiệu IL (Intermediate Language)
IL hoạt động như là bản chất của nền tảng .NET. Mã C# sẽ luôn được dịch sang IL
trước khi nó được thực thi. Bất kì ngôn ngữ nào hướng .NET cũng sẽ hỗ trợ các đặc
tính chính của IL.
Sau đây là những đặc tính chính của IL:
Hướng đối tượng và dùng giao tiếp.
Sự tách biệt giữa kiểu giá trị và kiểu tham chiếu.
Định kiểu mạnh.
Quản lỗi thông qua các ngoại lệ.
Sự dụng các thuộc tính.
1. 4 Thư viện (Assembly)
Một assembly là một tập tin chứa mã đã được biên dịch sang .NET. Nó có thể chứa
trong nhiều tập tin. Nếu một assembly được lưu trong nhiều tập tin, thì sẽ có một tập
tin chính chứa các con trỏ và các mô tả về các tập tin khác của assembly. Cấu trúc
assembly được dùng chung cho cả mã thực thi và mã thư viện. Sự khác biệt duy nhất
là assembly thực thi có chứa hàm main trong khi assembly thư viện thì không có.
Một điểm quan trọng trong các assembly là chúng chứa các siêu dữ liệu (metadata)
dùng để mô tả các kiểu và cách được định nghĩa tương ứng trong mã. Một
assembly cũng chứa siêu dữ liệu dùng để mô tả chính assembly đó. Siêu dữ liệu chứa
trong một vùng được gọi là tập tin mô tả (manifest), nó cho phép kiểm tra phiên bản
và tình trạng của assembly.
Với việc assembly chứa siêu dữ liệu, nó cho phép chương trình, ứng dụng hay các
assembly khác có thể gọi mã trong một assembly mà không cần tham chiếu đến
Registry, hay một dữ liệu nguồn khác.
1. 5 Các lớp trong .NET
Một trong những lợi ích lớn nhất của viết mã đó là việc sử dụng các thư viện lớp cơ sở
sẵn có của .NET. Thư viện lớp cơ sở của .NET là một tập hợp rất nhiều các lớp mã đã
được phát triển bởi Microsoft, những lớp này cho phép thao tác rất nhiều các tác vụ
sẵn có trong Windows. Chúng ta có thể tạo các lớp của mình từ các lớp có sẵn trong
thư viện lớp cơ sở của .NET thông qua sự kế thừa.
Thư viện lớp cơ sở.NET là kết hợp tính đơn giản của các thư viện Visual Basic và Java
với hầu hết các đặc tính trong các thư viện hàm API. Có nhiều đặc tính lạ, ít sử dụng
của Windows không được cung cấp trong các lớp của thư viện .NET. Những đặc tính
thông dụng đều đã được hỗ trợ đầy đủ trong thư viện lớp của.NET. Nếu chúng ta
muốn gọi một hàm API trong .NET, chúng ta thực hiện cơ chế "platform-invoke", cơ
chế này luôn bảo đảm tính đúng đắn của kiểu dữ liệu khi gọi và hỗ trợ cho cả C#, C++,
và VB.NET. Thao tác gọi này không khó hơn việc gọi trực tiếp API từ mã C++.
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi6
1. 6 Tạo ứng dụng .NET sử dụng C#
C# có thể tạo các ứng dụng dòng lệnh (console) cũng như các ứng dụng thuần văn bản
chạy trên DOS hay Window. Tất nhiên, chúng ta có thể dùng C# để tạo các ứng dụng
dùng cho các công nghệ tương thích với .NET.
Các ứng dụng có thể viết trên C#:
Ứng dụng ASP.NET.
Ứng dụng WinForm.
Các dịch vụ dựa trên Windows.
1. 7 Vai trò của .NET trong kiến trúc .NET Enterprise
C# yêu cầu khi chạy phải có “.NET runtime”, do đó bắt buộc chúng ta phải cài đặt
.Net runtime trước khi muốn chạy các ứng dụng được phát triển trên .Net. Tuy nhiên,
trong một số phiên bản mới của hệ điều hành Windows, .Net đã được cài đặt mặc định.
Thật vậy, C# được coi như là một cơ hội nổi bật cho các tổ chức để có thể tạo những
ứng dụng mạnh mẽ, những ứng dụng client-server theo kiến trúc N-lớp.
Khi kết nối dữ liệu thông qua ADO.NET, C# có khả năng truy cập tới các cơ sở dữ
liệu tổng quát và nhanh chóng như cơ sở dữ liệu SQL Server và Oracle. Dữ liệu trả về
từ các thao tác dữ liệu thông qua DataSet giúp dễ dàng thao tác thông qua các đối
tượng của ADO.NET. Kết nối dữ liệu tự động trả về kiểu XML giúp cho việc truyền
thông trên mạng dễ dàng.7
Chương 2: Căn bản C#
Mục đích của chương:
Khai báo biến.
Khởi tạo và phạm vi hoạt động của biến.
Các kiểu dữ liệu cơ bản.
Cách sử dụng các vòng lặp và câu lệnh.
Gọi, hiển thị lớp và cách.
Cách sử dụng mảng.
Toán tử.
An toàn kiểu và cách để chuyển kiểu dữ liệu.
Kiểu liệt kê (enum).
Không gian tên (namespace).
Hàm Main( ).
Biên dịch trong C#.
Xuất nhập dùng System.Console.
Sử dụng chú thích trong C#.
Các định danh và từ khoá trong C#.
2. 1 Viết chương trình C# đầu tiên
Đầu tiên chúng ta viết một chương trình ứng dụng “Hello World” đơn giản sử dụng
C#:
class HelloWorld
{
static void Main( )
{
System.Console.WriteLine("Chuong Trinh Dau Tien");
System.Console.Readline();
}
}
Ứng dụng dòng lệnh là ứng dụng không có giao diện người dùng. Việc xuất nhập
thông qua dòng lệnh chuẩn. cách Main() trong ví dụ “Hello World” viết chuỗi
“Chuong Trinh Dau Tien” lên màn hình. Màn hình được quản lý bởi một đối tượng tên
Console. Đối tượng này có một cách WriteLine(), nhận một chuỗi và xuất
chúng ra thiết bị xuất chuẩn (màn hình).
Ket-noi.com kho tai lieu mien phi Ket-noi.com kho tai lieu mien phi8
Cách chạy chương trình “Hello world”
Để thực hiện được chương trình chúng ta sử dụng “Visual Studio.NET Intergated
Development Environment (IDE)” trong công cụ “Visual Studio.NET IDE”. Chúng
cung cấp những công cụ rất mạnh cho việc dò lỗi và hỗ trợ một số chức năng khác.
Soạn thảo chương trình “Hello Wolrd”
Chạy chương trình IDE. Chọn Visual Studio.NET từ thực đơn Start
Chọn FileÆNewÆProject. Chọn kiểu dự án là Visual C# Project và dạng Console
Application. Chúng ta có thể nhập vào tên dự án và đường dẫn để lưu trữ dự án.
Sau khi chọn nút OK, một cửa sổ mới sẽ xuất hiện như hình 2.1
Hình 2.1:Tạo ứng dụng dòng lệnh trong Visual Studio.NET
Sau đó đưa lệnh sau vào trong hàm Main()
System.Console.WriteLine("Chuong Trinh Dau Tien");9
Hình 2.2: Cửa sổ soạn thảo cho một dự án mới
Biên dịch và chạy chương trình “Hello Wolrd”
Có nhiều cách để biên dịch và chạy chương trình trong Visual Studio.NET
Chọn Ctl+Shift+B hay BuildÆbuild từ thực đơn.
Chọn nút Build như trong hình 2.3.
Hình 2.3: Nút build
Để chạy chương trình mà không thực hiện dò lỗi:
Nhấn Ctrl + F5 hay DebugÆStart Without Debugging từ thực đơn.
Chọn nút Start Without Debugging như trong hình 2.4
Hình 2.4: Nút Start Without Debugging
Sử dụng công cụ dò lỗi của Visual Studio.NET
3 kỹ năng quan trọng khi dò lỗi:
Bằng cách nào đặt các điểm dừng (breakpoint) và chạy các điểm dừng như thế
nào?
Bằng cách nào chạy từng bước qua các lời gọi cách.
Bằng cách nào kiểm tra và thay đổi giá trị của biến, dữ liệu thành viên của lớp.
Khi bạn đang cố xóa một đối tượng đang hoạt động. Nhớ rằng đối tượng là kiểu
tham chiếu. Nếu một lớp giữ một tham chiếu đến một đối tượng đã bị hủy. Nó có
thể tham chiếu đối tượng không sử dụng hay tham chiếu đến một đối tượng hoàn
toàn khác trong cùng vùng nhớ.
Bạn muốn xóa cùng đối tượng nhiều lần. Điều này có thể rất tai hại dựa trên mã
trong cách hủy.
Cơ chế thu dọn có nhiệm vụ hủy đối tượng cho bạn và nó đảm bảo các vấn đề sau:
Mỗi đối tượng sẽ bị hủy và khi chương trình kết thúc tất cả các đối tượng đang tồn
tại sẽ bị hủy.
Mỗi đối tượng chính xác bị hủy một lần.
Mỗi đối tượng bị hủy khi không còn tham chiếu đến nó.
Những đảm bảo này rất hữu ích và tiện lợi cho các lập trình viên, bạn chỉ tập trung vào
phần logic của chương trình.
Một đặc trưng quan trọng nữa của cơ chế thu dọn là cách hủy sẽ không chạy
cho tới khi đối tượng là rác cần được thu dọn. Nếu bạn viết một cách tạo lập,
bạn sẽ biết nó sẽ chạy nhưng không biết lúc nào chạy?
Cách thức làm việc của cơ chế thu dọn
Cơ chế thu dọn chạy trên một tiến trình riêng của nó và chỉ chạy ở một thời gian nào
đó (thông thường khi ứng dụng chạy đến cuối cách). Khi nó chạy, các tiến
trình khác đang chạy trong ứng dụng của bạn sẽ tạm thời treo, bởi vì cơ chế thu dọn
cần di chuyển các đối tượng và cập nhật các tham chiếu đến các đối tượng. Cơ chế thu
dọn thực hiện các bước sau:
1. Xây dựng một bản đồ của tất cả các đối tượng có thể đến được. Cơ chế thu dọn
xây dựng bản đồ này rất cẩn thận vì tránh tham chiếu vòng gây ra lặp vô hạn.
Bất kì đối tượng nào không có trong bản đồ này được xem là không đến được.
2. Nó kiểm tra các đối tượng không thể đến có cách hủy cần để chạy hay
không. Nếu có nó đưa vào trong một hàng đợi đặc biệt gọi là F-reachable.
3. Nó thu hồi các đối tượng không thể đến còn lại, bằng cách di chuyển các đối
tượng xuống dưới heap. Vì vậy sự phân mảnh và giải phóng bộ nhớ ở đầu heap.
Khi cơ chế thu dọn di chuyển một đối tượng, nó cũng cập nhật tất cả tham chiếu
đến đối tượng này.
4. Ở thời điểm này, nó cho phép các tiến trình khác chạy lại.
5. Nó thu hồi các đối tượng trong F-reachable trong một tiến trình độc lập.
7. 3 Mã không an toàn
Có những trường hợp ta cần truy xuất bộ nhớ trực tiếp như khi ta muốn truy xuất vào
các hàm bên ngoài (không thuộc .NET) hay tham số yêu cầu truyền vào là con trỏ,
hay là vì ta muốn truy nhập vào nội dung bộ nhớ để sửa lỗi. Trong phần này ta sẽ
xem xét cách C# đáp ứng những điều này như thế nào.
Con trỏ
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:
You must be registered for see links
Last edited by a moderator: