Giáo trình Lập trình trực quan cung cấp cho người học những kiến thức như: Tổng quan về Framework.Net; Ngôn ngữ lập trình C#; Lập trình hướng đối tượng; Form và Các điều khiển. Mời các bạn cùng tham khảo!
TỔNG QUAN VỀ FRAMEWORK NET
Giới thiệu Net
Microsoft NET gồm 2 phần chính: Framework và Integrated Development Environment (IDE) Framework cung cấp những gì cần thiết và căn bản, chữ
Framework là khung làm việc giúp tổ chức hạ tầng cơ sở theo quy ước nhất định để công việc diễn ra suôn sẻ IDE cung cấp môi trường phát triển thuận lợi cho việc triển khai nhanh chóng các ứng dụng trên nền tảng NET Mặc dù có thể sử dụng trình soạn thảo như Notepad và dòng lệnh để biên dịch và thực thi, nhưng phương pháp này tốn nhiều thời gian Do đó, việc sử dụng IDE là cách hiệu quả và dễ dàng nhất để phát triển ứng dụng.
Thành phần quan trọng nhất của NET là Framework, vì nó là cốt lõi và tinh hoa của môi trường phát triển IDE chỉ là công cụ hỗ trợ để phát triển ứng dụng dựa trên nền tảng này Tất cả các ngôn ngữ như C#, Visual C++ và Visual Basic.NET đều sử dụng chung một IDE trong NET.
Microsoft NET là nền tảng chính để phát triển và triển khai các ứng dụng phân tán thế hệ mới, bao gồm cả ứng dụng từ client đến server và các dịch vụ liên quan Nền tảng này cung cấp nhiều tính năng hữu ích cho các nhà phát triển, giúp tối ưu hóa quy trình phát triển ứng dụng.
Một mô hình lập trình cho phép nhà phát triển xây dựng các ứng dụng dịch vụ web và ứng dụng client với Extensible Markup Language (XML)
Tập hợp dịch vụ XML Web, nhƣ Microsoft NET My Services cho phép nhà phát triển đơn giản và tích hợp người dùng kinh nghiệm
Chúng tôi cung cấp các máy chủ bao gồm Windows 2000, SQL Server và BizTalk Server, tất cả đều được tích hợp để hoạt động và quản lý hiệu quả các dịch vụ XML Web cũng như các ứng dụng liên quan.
Các phần mềm client như Windows XP và Windows CE hỗ trợ các nhà phát triển trong việc phân phối và nâng cao trải nghiệm người dùng qua nhiều loại thiết bị khác nhau.
Visual Studio NET là một công cụ hỗ trợ mạnh mẽ cho việc phát triển các dịch vụ Web XML, giúp tạo ra ứng dụng trên nền tảng Windows và web một cách dễ dàng và hiệu quả.
.NET Framework là nền tảng mới giúp đơn giản hóa quá trình phát triển ứng dụng trong môi trường Internet phân tán Được thiết kế toàn diện, NET Framework đáp ứng hiệu quả các yêu cầu phát triển ứng dụng hiện đại.
Để tạo ra một môi trường lập trình hướng đối tượng hiệu quả, mã nguồn đối tượng cần được lưu trữ và thực thi cục bộ, đồng thời cho phép thực thi phân tán qua Internet hoặc từ xa.
Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu được việc đóng gói phần mềm và sự tranh chấp về phiên bản
Để đảm bảo an toàn trong việc thực thi mã nguồn, cần cung cấp một môi trường thực thi mã nguồn an toàn, bao gồm cả mã nguồn từ các nhà phát triển thứ ba hoặc bất kỳ hãng nào tuân thủ kiến trúc NET.
Để cung cấp một môi trường thực thi mã nguồn mà loại bỏ được những lỗi thực hiện các script hay môi trường thông dịch
Để các nhà phát triển có kinh nghiệm vững chắc, việc nắm vững nhiều loại ứng dụng là rất quan trọng, bao gồm cả ứng dụng trên nền Windows và ứng dụng web.
Để đảm bảo mã nguồn trên NET có thể tích hợp với các mã nguồn khác, việc xây dựng thông tin dựa trên tiêu chuẩn công nghiệp là rất quan trọng .NET Framework bao gồm hai thành phần chính: Common Language Runtime (CLR) và thư viện lớp NET Framework CLR đóng vai trò là nền tảng của NET Framework, quản lý mã nguồn khi thực thi và cung cấp các dịch vụ cốt lõi như quản lý bộ nhớ, quản lý tiểu trình và quản lý từ xa Nó cũng thúc đẩy việc sử dụng kiểu an toàn và các hình thức chính xác mã nguồn, đảm bảo tính bảo mật và hiệu suất Khái niệm quản lý mã nguồn là nguyên lý nền tảng của runtime, với mã nguồn được nhắm tới runtime được gọi là mã nguồn quản lý (managed code), trong khi mã nguồn không nhắm tới runtime được gọi là mã nguồn không được quản lý (unmanaged code).
Thư viện lớp là một phần quan trọng của NET Framework, bao gồm một tập hợp các kiểu dữ liệu hướng đối tượng có thể tái sử dụng Nó hỗ trợ phát triển các ứng dụng, từ những ứng dụng truyền thống chạy trên dòng lệnh đến các ứng dụng phức tạp hơn.
10 ứng dụng với giao diện đồ họa (GUI) mới nhất được cung cấp bởi ASP.NET, bao gồm Web Form và dịch vụ XML Web, mang đến những trải nghiệm người dùng tối ưu và hiệu suất vượt trội.
Hình 1.1: Mô tả các thành phần trong NET Framework.
Các loại ứng dụng
Ứng dụng Console là loại ứng dụng giao tiếp với người dùng qua bàn phím mà không có giao diện người dùng (UI), tương tự như các ứng dụng truyền thống trên Windows Trong khi đó, ứng dụng WindowsForms là ứng dụng có giao diện đồ họa, hoạt động trên hệ điều hành Windows.
Các bước xây dựng trong môi trường Net
Bước 1: Tạo dự án mới
Các thông tin cần xác định cho một dự án mới:
Bước 2: Thiết kế giao diện Đƣa các điều khiển vào form để thiết kế giao diện
Bước 3: Đặt các thuộc tính cho các điều khiển trên giao diện
Bước 5: Thi hành chương trình – Nhấn F5
Ứng dụng đầu tiên
Bước 1: Tạo dự án mới
Bước 2: Thiết kế giao diện Đƣa các điều khiển Label1 và Button1 vào form
Chỉnh vị trí và kích thước của các điều khiển cho hợp lý
Bước 2: Đặt các thuộc tính cho các điều khiển
Bước 4: Viết code private void btnThiHanh_Click(object sender, EventArgs e) { lblHello.Text = "Hello World!";
Bước 5: Gõ F5 để thi hành chương trình
NGÔN NGỮ LẬP TRÌNH C#
Giới thiệu
Ngôn ngữ C# được thiết kế đơn giản với khoảng 80 từ khóa và hơn mười kiểu dữ liệu cơ bản, nhưng lại mang ý nghĩa sâu sắc trong việc thực thi các khái niệm lập trình hiện đại Nó hỗ trợ cấu trúc, thành phần component và lập trình hướng đối tượng, những đặc điểm quan trọng của một ngôn ngữ lập trình hiện đại C# không chỉ đáp ứng các tiêu chí này mà còn được xây dựng dựa trên nền tảng vững chắc của hai ngôn ngữ mạnh mẽ là C++ và Java.
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ sư của Microsoft, do Anders Hejlsberg và Scott Wiltamuth dẫn dắt Anders Hejlsberg nổi tiếng với vai trò là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến, và ông cũng là người đứng đầu nhóm thiết kế Borland Delphi.
16 một trong những thành công đầu tiên của việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server
Phần cốt lõi của ngôn ngữ lập trình hướng đối tượng là khả năng định nghĩa và làm việc với các lớp, cho phép phát triển các kiểu dữ liệu mới Ngôn ngữ C# cung cấp từ khóa để khai báo lớp, phương thức và thuộc tính, đồng thời hỗ trợ thực thi các tính năng quan trọng như đóng gói, kế thừa và đa hình Những tính năng này giúp người lập trình tạo ra các mô hình hiệu quả hơn để giải quyết vấn đề.
Trong ngôn ngữ C#, tất cả các khai báo liên quan đến lớp đều được thực hiện trong phần khai báo của nó mà không cần tách biệt giữa tập tin header và tập tin nguồn như trong C++ Ngoài ra, C# hỗ trợ kiểu XML, cho phép người dùng chèn các thẻ XML để tự động tạo tài liệu cho lớp.
C# hỗ trợ giao diện (interface) như một cam kết với lớp cho các dịch vụ mà giao diện quy định Trong C#, một lớp chỉ có thể kế thừa từ một lớp cha duy nhất, không cho phép đa kế thừa như trong C++ Tuy nhiên, một lớp có thể thực thi nhiều giao diện, và khi thực thi một giao diện, lớp đó cam kết cung cấp các chức năng theo yêu cầu của giao diện.
Trong ngôn ngữ C#, cấu trúc được hỗ trợ với khái niệm ngữ nghĩa khác biệt so với C++ Cấu trúc trong C# là kiểu dữ liệu nhỏ gọn, yêu cầu ít tài nguyên hệ điều hành và bộ nhớ hơn so với lớp Mặc dù không thể kế thừa từ lớp, cấu trúc vẫn có khả năng thực thi giao diện.
Ngôn ngữ C# hỗ trợ lập trình hướng thành phần với các đặc tính như thuộc tính và sự kiện, nhờ vào CLR cho phép lưu trữ metadata cùng với mã nguồn của lớp Metadata mô tả các phương thức, thuộc tính và yêu cầu bảo mật của lớp, trong khi mã nguồn chứa logic thực hiện chức năng của nó Điều này giúp lớp được biên dịch thành một khối self-contained, cho phép môi trường hosting dễ dàng đọc metadata và mã nguồn mà không cần thông tin bổ sung.
Ngôn ngữ C# hỗ trợ truy cập bộ nhớ trực tiếp thông qua kiểu con trỏ của C++ và sử dụng từ khóa dấu ngoặc [] Tuy nhiên, việc sử dụng mã nguồn không an toàn (unsafe) này có thể dẫn đến rủi ro, vì bộ giải phóng bộ nhớ tự động của CLR sẽ không giải phóng những đối tượng được tham chiếu bằng con trỏ cho đến khi chúng được giải phóng.
Các thành phần cơ bản
Biến là một vùng lưu trữ có kiểu dữ liệu nhất định, cho phép gán và thay đổi giá trị trong quá trình thực hiện chương trình Để tạo biến, cần khai báo kiểu dữ liệu và gán cho biến một tên duy nhất.
Biến có thể được khởi tạo giá trị ngay khi khai báo hoặc gán giá trị mới trong suốt quá trình thực thi chương trình.
Cú pháp khai báo biến
= ;
- C# đòi hỏi các biến phải được khởi tạo trước khi được sử dụng
- Việc sử dụng biến khi chƣa đƣợc khởi tạo là không hợp lệ trong C#
Trong C#, việc khởi tạo biến không phải lúc nào cũng cần thiết, nhưng để sử dụng biến, bạn phải gán cho nó một giá trị trước khi bất kỳ lệnh nào tham chiếu đến biến đó Điều này được gọi là gán giá trị xác định cho biến, và C# yêu cầu thực hiện điều này.
Ngôn ngữ C# cung cấp các kiểu dữ liệu xây dựng sẵn, phù hợp với tiêu chuẩn của một ngôn ngữ lập trình hiện đại Mỗi kiểu dữ liệu trong C# được ánh xạ đến các kiểu dữ liệu do hệ thống xác nhận ngôn ngữ chung (CLS) trong MS.NET hỗ trợ Việc này đảm bảo rằng các đối tượng được tạo ra trong C# có thể tương tác và sử dụng đồng thời với các đối tượng từ các ngôn ngữ khác được biên dịch bởi NET, như VB.NET.
Trong C#, mỗi kiểu dữ liệu đều có kích thước cố định và quy tắc xác nhận riêng, khác với C++ Cụ thể, kiểu dữ liệu int trong C# luôn có kích thước 4 byte, vì nó được ánh xạ từ kiểu Int32 trong NET.
Trong C#, các kiểu dữ liệu cơ bản bao gồm: byte (1 byte) là số nguyên dương không dấu từ 0-255, char (2 byte) dùng để biểu diễn ký tự Unicode, bool (1 byte) là giá trị logic true/false, sbyte (1 byte) là số nguyên có dấu từ -128 đến 127, short (2 byte) tương ứng với Int16 có giá trị từ -32.768 đến 32.767, ushort (2 byte) là Uint16 với giá trị từ 0 đến 65.535, int (4 byte) là Int32 với khoảng giá trị từ -2.147.483.648 đến 2.147.483.647, uint (4 byte) là Uint32 với giá trị từ 0 đến 4.294.967.295, và float (4 byte) là kiểu dấu chấm động với giá trị xấp xỉ từ 3.4E.
Kiểu dữ liệu double có khả năng lưu trữ giá trị trong khoảng từ 1.7E-308 đến 1.7E+308, với độ chính xác lên đến 15-16 chữ số có nghĩa Trong khi đó, kiểu decimal cho phép độ chính xác cao hơn, lên đến 28 chữ số và thường được sử dụng trong các tính toán tài chính Đối với kiểu decimal, giá trị cần có hậu tố “m” để xác định chính xác.
20 long 8 Int64 Kiểu nguyên -9.223.370.036.854.775.808 đến 9.223.370.036.854.775.807 ulong 8 Uint64 Số nguyên từ 0 đến 0xffffffffffffffff
Kiểu giá trị logic trong C# chỉ nhận giá trị true hoặc false, không cho phép gán giá trị nguyên vào biến logic và không có chuyển đổi ngầm định nào Điều này khác với C/C++, nơi biến logic có thể nhận giá trị nguyên, với 0 tương ứng với false và các giá trị khác là true.
Hằng là một biến đặc biệt với giá trị không thay đổi trong suốt chương trình Mặc dù biến là công cụ mạnh mẽ, nhưng khi làm việc với hằng, chúng ta cần đảm bảo rằng giá trị của nó sẽ không bị thay đổi.
Cú pháp khai báo hằng:
= ;
Ví dụ: const int ChuNhat = 0; const int ThuHai = 1; const int ThuBa=2;
- Hằng phải đƣợc khởi tạo khi khai báo, và chỉ khởi tạo duy nhất một lần trong suốt chương trình và không được thay đổi
Biểu thức là các câu lệnh dùng để định lượng một giá trị Một phép gán giá trị cho biến cũng được coi là biểu thức, ví dụ như x = 17 hoặc x = y = 17 Trong trường hợp này, y sẽ nhận giá trị của biểu thức x, tức là y = 17.
Toán tử trong C# được biểu thị bằng các ký hiệu và được sử dụng để thực hiện các hành động khác nhau Các kiểu dữ liệu cơ bản như kiểu nguyên hỗ trợ nhiều loại toán tử, bao gồm toán tử gán, toán tử toán học và toán tử logic.
Toán tử gán là một phép toán hai ngôi, cho phép thay đổi giá trị của toán hạng bên trái bằng giá trị của toán hạng bên phải.
/ Chia nguyên và không nguyên
- Khi chia hai số nguyên, thì C# sẽ bỏ phần phân số, hay bỏ phần dƣ
- Khi chia cho số thực có kiểu nhƣ float, double, hay decimal thì kết quả chia đƣợc trả về là một số thực
Các toán tử tự gán
+= Cộng thêm giá trị toán hạng bên phải vào giá trị toán hạng bên trái
-= Toán hạng bên trái đƣợc trừ bớt đi một lƣợng bằng giá trị của toán hạng bên phải
*= Toán hạng bên trái đƣợc nhân với một lƣợng bằng giá trị của toán hạng bên phải
/= Toán hạng bên trái đƣợc chia với một lƣợng bằng giá trị của toán hạng bên phải
%= Toán hạng bên trái đƣợc chia lấy dƣ với một lƣợng
23 bằng giá trị của toán hạng bên phải
Toán tử tăng giảm tiền tố và tăng giảm hậu tố
Do việc tăng hay giảm 1 rất phổ biến trong lập trình nên C# cung cấp hai toán tử đặc biệt là tăng một (++) hay giảm một ( )
Ví dụ: Tăng hậu tố int a, b; a=9; b=a++;
System.Console.WriteLine("a={0},b={1}",a,b); Kết quả: a,b=9
Ví dụ: Tăng tiền tố int a, b; a=9; b=++a;
Ví dụ: Giảm hậu tố int a, b; a=9; b=a ;
System.Console.WriteLine("a={0},b={1}",a,b); Kết quả: a=8,b=9
Ví dụ: Giảm tiền tố int a, b; a=9; b= a;
System.Console.WriteLine("a={0},b={1}",a,b); Kết quả:
Toán tử quan hệ được sử dụng để so sánh hai giá trị, và kết quả trả về sẽ là một giá trị logic kiểu boolean, có thể là true hoặc false.
>= So sánh lớn hơn hoặc bằng