Lớp và Phương thức trong C# 5.0 - Phần 1 - Bài 6 - Visual Studio 2015

Lớp và Phương thức trong C# 5.0 - Phần 1 - Bài 6 - Visual Studio 2015
access_time 11/13/2015 7:55:08 PM
person Nguyễn Mạnh Hùng
1. Giới thiệu lập trình hướng đối tượng.
1.1 Giới thiệu
Lập trình hướng đối tượng đặt trọng tâm vào đối tượng, yếu tố quan trọng nhất trong quá trình phát triển chương trình và không cho phép dữ liệu biến động tự do trong hệ thống. Dữ liệu được gắn chặt với các phương thức hình thành các vùng riêng mà chỉ có các phương thức đó tác động lên và cấm các phương thức bên ngoài truy cập một cách tùy tiện. Lập trình hướng đối tượng cho phép chúng ta phân tích bài toán thành các thực thể được gọi là đối tượng và sau đó xây dựng các dữ liệu (thuộc tính) và các phương thức (hàm) xung quanh đối tượng đó. Các đối tượng có thể tác động, trao đổi thông tin với nhau thông qua cơ chế thông báo(message).
1.2 Các đặc điểm.
Lập trình hướng đối tượng nhìn nhận và xây dựng bài toán tập trung vào đối tượng tức là coi chương trình là một tập hợp các đối tượng, các đối tượng này tương tác với nhau. Do vậy khi xây dựng phát triển phần mềm theo phương pháp hướng đối tượng, lập trình viên cần phải chú ý :
  • Chương trình được phân chia thành các đối tượng.
  • Tập trung vào dữ liệu (Thuộc tính) thay cho các hàm.
  • Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng.
  • Dữ liệu được đóng gói, được che giấu và không cho phép các phương thức ngoại lai truy nhập tự do.
  • Các đối tượng tác động và trao đổi thông tin với nhau thông qua các phương thức.
  •  Có thể dễ dàng bổ sung dữ liệu (thuộc tính) và các phương thức mới vào đối tượng nào đó khi cần thiết.
Các đặc điểm chính của lập trình hướng đối tượng :
Tính trừu tượng : Tính trừu tượng là đặc điểm duy nhất mang tính yêu cầu thông tin của đối tượng. Một đối tượng trong hệ thống có thể có rất nhiều các thuộc tính và các phương thức  khác nhau, tuy nhiên với ngữ cảnh cụ thể thì chúng ta chỉ cần quan tâm đến các thuộc tính và phương thức nào thực sự cần thiết mà thuộc tính yêu cầu.
 Ví dụ : Đối tượng Sách có các thuộc tính như : Tên sách, nhà xuất bản, ngày xuất bản, số lần tái bản, số trang, khổ giấy, giá thành, tên tác giả, lĩnh vực,… ,.  Với bài toán cụ thể ví dụ như xây dựng chương trình Quản lý sách cho Cửa hàng sách thì chúng ta chỉ quan tâm tới một số các thuộc tính như : Tên sách, tên tác giả, nhà xuất bản, giá thành, lĩnh vực, nhưng với bài toán Quản lý sách cho Nhà máy in thì chúng ta chỉ quan tâm tới các thuộc tính như : Tên sách, tên tác giả, số trang, khổ giấy, lĩnh vực; Rõ ràng mức độ quan tâm tới các thuộc tính của đối tượng sách là khác nhau trong hai trường hợp trên.
Tính đóng gói: Trong lập trình hướng đối tượng các phương thức được sử dụng mà không biết đến nội dung cụ thể của nó. Người sử dụng chỉ cần biết chức năng của phương thức cũng như các tham số truyền vào để gọi phương thức chạy mà không cần quan tâm tới đoạn mã cài đặt bên tròng của phương thức. Người ta gọi đó chính là sự đóng gói của phương thức.
Trong lập trình hướng đối tượng, không những phương thức được đóng gói mà cả thuộc tính cũng như vậy. Với mỗi đối tượng không thể truy nhập trực tiếp vào các thành phần thuộc tính của nó mà phải thông qua phương thức.
Tính kế thừa: Tính kế thừa cho phép chúng ta định nghĩa một lớp mới trên cơ sở các lớp đã tồn tại, tất nhiên có bổ sung những phương thức hay thuộc tính mới cho lớp này. Khả năng kế thừa cho phép chúng ta sử dụng lại một cách dễ dàng các module chương trình mà không cần một thay đổi trong các module đó.
 Tính đa hình : Tính đa hình xuất hiện khi có khái niệm kế thừa, giả sử chúng ta có một kế thừa lớp hình tứ giác và lớp hình tam giác kế thừa từ lớp hình đa giác (Hình tam giác và tứ giác đều là hình đa giác), lúc này mỗi hình đa giác đều có diện tích của nó. Vậy làm thế nào một hình đa giác có thể sử dụng đúng công tính tính diện tích phù hợp với nó là hình tam giác hay hình tứ giác. Tính chất này gọi là tính đa hình. Tính đa hình được hiểu trong lập trình hướng đối tượng là Hình dạng của đối tượng được xác định tại thời điểm cấp phát đối tượng đó.
2. Lớp và đối tượng.
Ngôn ngữ lập trình C# là ngôn ngữ lập trình hướng đối tượng do vậy chương trình được xây dựng bằng C# sẽ bao gồm một tập hợp các lớp (Class), các lớp chính là các thực thể của chương trình.
Đối tượng là thể hiện của lớp, khi chương trình chạy, đối tượng sẽ được tạo ra và được cấp phát bộ nhớ để lưu thông tin về các thuộc tính, các phương thức và đáp ứng lại các sự kiện khi có các đối tượng khác yêu cầu.
2.1 Khai báo lớp và khởi tạo đối tượng
2.1.1 Khai báo lớp.
Một lớp trong C# bao gồm một tập hợp các field (trường), các property (thuộc tính) và các method (phương thức), tập hợp các field, property, method đó gọi là các member (thành phần) của một lớp. Cú pháp khai báo của một lớp trong C# như sau :
Cú pháp:
<Access_modifier> class <ClassName>
{
// class members
}
Mô tả :
  • ClassName : Tên lớp
  • Class members : Các thành phần của lớp bao gồm các trường, thuộc tính, phương thức… của lớp
  • Access_modifier: Xác định phạm vi truy cập của lớp (public, protected, private), mặc định các phương thức sẽ là private.
Khi đặt tên lớp cần tuân thủ các quy tắc sau đây :
  • Sử dụng danh từ để đặt tên cho lớp
  • Đặt tên lớp phải dễ hiểu, có ý nghĩa và đơn giản
  • Không đặt tên lớp trùng với tên các từ khóa trong C#.
  • Tên lớp không được kết hợp chữ hoa chữ thường lộn xộn, lên sử dụng chữ cái đầu là chữ hoa.
  • Không được sử dụng chữ số là chữ đầu tiên của lớp có thể sử dụng chữ đầu tiên là @ hoặc dấu “_”, tuy nhiên không khuyến khích sử dụng theo cách này.
2.1.2 Khởi tạo đối tượng.
Sau khi tạo lớp cần khởi tạo đối tượng là thể hiện của lớp. Cú pháp khởi tạo đối tượng như sau :
Cú pháp
<ClassName> <objectName> = new <ClassName>();
Mô tả
  • ClassName: Tên lớp.
  • objectName: Tên đối tượng cần khởi tạo.
Ví dụ :
Hình số 1 : Ví dụ về cách tạo lớp và sử dụng lớp
3. Phương thức
Phương thức chính là các hàm được khai báo trong lớp, với mục tiêu nhằm để thực thi một hành động nào đó của đối tượng. Một phương thức bao gồm một tập hợp các khối lệnh thực thi, danh sách các tham số đầu vào. Một phương thức có thể có hoặc không có giá trị trả về.
Phương thức thực thi một hành động của đối tượng là thể hiện của lớp chứa phương thức đó. Đối tượng này có thể truy vấn tới phương thức nếu lớp chứa nó cho phép truy vấn.  Một phương thức có thể lấy bất kỳ số lượng tham số nào, Các tham số này theo sau bởi tên của phương thức và được bao bọc bên trong dấu ngoặc tròn (). Mỗi tham số phải khai báo kèm với kiểu dữ liệu.
3.1 Tạo phương thức
Khi tạo phương thức của lớp, lập trình viên cần chú ý tới phương thức đặt tên của phương thức. Sau đây mô tả quy tắc đặt tên của phương thức:
  • Không được trùng với từ khóa của C#.
  • Không được chứa khoảng trống
  • Ký tự đầu tiên không được là chữ số
  • Chữ cái đầu tiên có thể là “@” hoặc dấu “_”.
Ví dụ:
  • Các tên phương thức đúng : Add(), Sum_Add(),  @Add()
  • Các tên phương thức sau sai : Add, Add Sum(), và  int().
Để tạo phương thức, lập trình viên cần tuân thủ cú pháp sau :
Cú pháp
<access_modifier> <return_type> <MethodName> ([list of parameters])
{
// body of the method
}
Mô tả
  • access_modifier: Xác định phạm vi truy cập của phương thức (public, protected, private), nếu không cho phép thì không được phép truy cập, mặc định các phương thức sẽ là private.
  • return_type: Giá trị trả về của phương thức. Nếu phương thức không có giá trị trả về sẽ là void
  • MethodName: Tên phương thức.
  • list of parameters: Danh sách các tham số truyền vào của phương thức.
3.2 Gọi phương thức
Để tạo phương thức trong một lớp thì chúng ta cần phải tạo đối tượng của lớp đó. Sau đó sử dụng quy tắc:
Cú pháp
<ObjectName>.< MethodName > ([list of parameters])
Mô tả
  • ObjectName : Tên đối tượng
  • MethodName : Tên phương thức
  • list of parameters: Danh sách các tham số truyền vào của phương thức
Ví dụ
Tạo lớp tính toán chứa phương thức tính tổng 2 số nguyên (tên phương thức là Add).
Hình số 2 : Tạo và gọi phương thức
3.3 Phương thức tĩnh (method static)
Mặc định khi gọi một phương thức, cần phải tạo đối tượng là thể hiện của phương thức đó. C# cung cấp cách thức định nghĩa phương thức để khi cần, có thể gọi sử dụng những phương thức đó 1 cách thuận tiện mà không cần phải thông qua Object; đó chính là phương thức tĩnh (method static).
Việc định nghĩa phương thức tính trong chương trình chẳng có nhiều khác biệt so với việc định nghĩa method thông thường, lập trình viên chỉ việc thêm vào trước phần khai báo method từ khóa static và <access_modifier> phải sử dụng là public là đủ.
Cú pháp khai báo phương thức tĩnh.
Cú pháp
<access_modifier> static <return_type> <MethodName> ([list of parameters])
{
// body of the method
}
Mô tả
  • Giống như mục 3.1, chỉ bổ sung thêm từ khóa static
Cú pháp gọi phương thức static
Cú pháp
<ClassName>.< MethodName > ([list of parameters])
Mô tả
  • ClassName : Tên lớp
  • MethodName : Tên phương thức
list of parameters: Danh sách các tham số truyền vào của phương thức.
Ví dụ
Tạo lớp tính toán chứa phương thức static thực hiện tính tổng 2 số nguyên (tên phương thức là Add).
Hình số 3 : Tạo và gọi phương thức static
4. Biến Static
Ứng với phương thức tĩnh (static method), C# cho phép bạn có thể định nghĩa các biến thành viên thuộc dạng static để sử dụng và thường thì biến static được dùng cho mục đích chia sẻ thông tin của Class đối với tất cả các Object thuộc về Class tương ứng.
Cú pháp
<access_modifier> static <type data>  
Mô tả
  • access_modifier : Phạm vi truy cập
  • type data : Kiểu dữ liệu
Ví dụ: Tại một thời điểm nào đó chúng ta cần theo dõi trong chương trình có bao nhiêu đối tượng của Class X đã được tạo ra, trong tình huống này thì việc sử dụng 1 static variable là hợp lý nhất.
Hình số 4 : Mô tả về cách tạo biến tĩnh
vertical_align_top
share
Chat...