Lập trình hướng đối tượng trong c# (phần 1)
Lập trình hướng đối tượng là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng chương trình.
Cũng giống như những ngôn ngữ khác, c# cũng cho phép ta lập trình một hệ thống theo hướng đối tượng hay nói một cách khác là lập trình dựa trên kiến trúc lớp (class) và đối tượng (object).
Trong đơn vị bài học này ta sẽ cùng tìm hiểu về class là gì, khai báo, khởi tạo và sử dụng class trong c#, phương thức khởi tạo, hủy bỏ.
Class
Cú pháp khai báo
[Thuộc tính] [phạm vi truy cập] Class < tên_lớp>
{
<Phạm_vi_truy_cập> <Các_thành_phần_của_lớp>;
}
trong đó:
- Tên lớp là do người dùng đặt và tuân theo quy tắc đặt tên :
+ Tên class phải là một danh từ.
+ Không thể để trong trường hợp lẫn lộn tên, kí tự đầu tiên có thể viết Hoa.
+ Sẽ là đơn viết liên nhau nếu có nhiều kí tự, gắn gọn mô tả có ý nghĩa.
+ Không thể trùng từ khóa.
+ Không thể bắt đầu với một số.
- Phạm vi truy cập gồm các từ khóa như public, private, protected, static,...được phân biệt như sau:
| Phạm vi truy cập | Ý nghĩa |
|---|---|
| Public | Không hạn chế. Được dùng bởi bất kì các phương thức của lớp, bao gồm những lớp khác. |
| Private | Các thành phần mang thuộc tính này là thành phần riêng tư chỉ được truy cập bởi các phương thức trong cùng một lớp. |
| Protected | Tương tự như private, ngoài ra có thể truy cập từ những lớp dẫn xuất lớp chứa nó ( kế thừa). |
| Internal | Chỉ được truy truy cập trong cùng 1 Assembly ( hay nói cách khác là cùng 1 project). Thuộc tính này thường được dùng cho class. |
| Protected Internal | Tương tự như Internal, ngoài ra có thể truy cập từ những lớp dẫn xuất lớp chứa nó ( kế thừa). |
Lưu ý: Nếu khai báo Class mà không chỉ ra phạm vi cụ thể thì mặc định nó là Internal.
Nếu khai báo thành phần trong lớp mà không chỉ ra phạm vi cụ thể thì phạm vi mặc định là private .
- Các thành phần của lớp bao gồm các biến và phương thức của lớp.
Ví dụ: Class animal gồm 2 thuộc tính name, age và 1 phương thức info()
Class Animal
{
Private string name;
Private int age;
public void info()
{
console.Writeline("tên là {0}, tuổi là {1}",name,age)
}
}Thuộc tính
Biến thành viên
Các biến thành viên được khai báo được khai báo trong class để lưu giá trị của các thuộc tính .
Thuộc tính
Cú pháp:
Private kiểu_dữ_liệu Tên_biến;
Public kiểu_dữ_liệu Tên_thuộc_tính
{
get
{
return Tên_biến ; // trả về một đối tượng có kiểu dữ liệu của thuộc tính
}
set
{
Tên_biến = value ; //thiết lập một giá trị mới cho thuộc tính
// value đại diện cho tham số được truyền vào và được lưu trữ bởi thuộc tính
}
}
Phương thức
Phương thức khởi tạo
Bạn có thể khới tạo một đối tượng thông qua toán tử new.Ví dụ:
Animal cat = new Animal();
khởi tạo một đối tượng "cat" thông qua Constructor mặc định.
Vậy constructor là gì?
- Nó là phương thức khởi tạo, có tên trùng với tên lớp, không có kiểu trả về, được tự động gọi khi một đối tượng thuộc lớp được khởi tạo.
- Nếu như bạn không khai báo bất kì một phương thức khởi tạo nào thi hệ thống sẽ tự tạo ra phương thức khởi tạo mặc định, không đối số và không có nội dung gì.
- Có 2 loại phương thức khởi tạo là:
+ phương thức khởi tạo không đối số : phương thức không có tham số truyền vào, thường dùng để khởi tạo các giá trị mặc định cho các thuộc tính bên trong class, Khi khởi tạo đối tượng, giá trị mặc định này sẽ do người lập trình quy định.
+ Phương thức khởi tạo có đối số: phương thức khởi tạo có tham số truyền vào, khi khởi tạo đối tượng phương thức này được gọi ta cần phải truyền đầy đủ tham số, thường dùng để khởi tạo các giá trị thuộc tính bên trong class khi khởi tạo đối tượng.
Ví dụ:
Class Animal
{
Private string name;
Private int age;
//Constructor không tham số:
public Animal()
{
name= "tom";
age= 2;
}
//Constructor có tham số:
public Animal(string n, int t)
{
name= n;
age= a;
}
public void info()
{
console.Writeline("tên là {0}, tuổi là {1}",name,age)
}
}
Khi bạn tạo một new Animal, không tham số truyền vào thì Constructor mặc định tự động sẽ được gọi để khởi tạo các giá trị mặc định cho các thuộc tính.
Animal cat = new Animal();
Nó sẽ in ra cat có tên là tom và tuổi = 2;
Còn khi bạn khởi tạo một đối tượng và có 2 tham số . Animal cat = new Animal(jane,3);
thì lúc này các thuộc tính name và age không còn là giá trị mặc định nữa mà là được gán theo giá trị mà người dùng đã khởi tạo.
Lưu ý:
- Có thể có nhiều constructor bên trong một lớp nhưng không được cùng kiểu dữ liệu( như là animal(int a, int b), animal(int a, float b) là được) hay khác nhau về số lượng tham số.
- Cần truyền đúng và truyền đủ tham số
Phương thức hủy bỏ (destructor)
Là phương thức đặc biệt được gọi đến khi đối tượng bị thu hồi ( không sử dụng nữa)
Có tên trùng với tên lớp nhưng thêm dấu " ~ ".
Không có giá trị trả về, nếu chưa bạn không khai báo deconstructor thì c# tự động tạo ra một deconstructor mặc định và chỉ có 1 deconstructor trong 1 lớp
cú pháp:
~<tên_lớp>
{
thu hồi vùng nhớ các biến thành viên
}

Nhận xét
Đăng nhận xét