Đối tượng và lớp trong C#

Để sử dụng lớp ta phải khai báo đối tượng của lớp đó. Khi một đối tượng của lớp được tạo ra thì nó có đầy đủ các thuộc tính, phương thức của lớp và sử dụng thuộc tính và phương thức của lớp

CHƯƠNG I

ĐỐI TƯỢNG VÀ LỚP

Mục tiêu: Sau khi tìm hiểu xong chương này người học có thể nắm được các nội dung sau:

●   Khai báo lớp

●   Khai báo và sử dụng các đối tượng của lớp

●   Từ khóa this

●   Các thuộc tính truy cập

●   Hàm thiết lập

●   Hàm thiết lập sao chép

●   Hàm hủy bỏ

●   Sử dụng các thành viên tĩnh

●   Nạp chồng phương thức

●   Đóng gói dữ liệu thông qua các thuộc tính



A.  TÓM TẮT LÝ THUYẾT

1.  Khai báo lớp

Một lớp bao gồm có các thuộc tính và phương thức. Để khai báo một lớp ta sử dụng từ khóa class với cấu trúc sau đây:


?







code

1

2

3

4

5


[Thuộc tính truy cập]  class <tên lớp>                

{

                           Khai báo các thuộc tính của lớp

                           Khai báo các phương thức của lớp

}




Các thuộc tính truy cập gồm có các từ khóa sau đây (sẽ trình bày chi tiết ở phần sau): public, private, internal, protected, internal protected.

Trong C#, cho phép chúng ta khai báo các class lồng nhau. Thông thường khai báo lớp lồng nhau khi ứng dụng có quy mô lớn. Class lồng cho phép sử dụng trong nội bộ class chứa nó khi nó có tầm vực public.

Cấu trúc khai báo một class lồng như sau:


?







code

1

2

3

4

5

6

7

8

9


class class1

           {           // khai báo thuộc tính

                       // khai báo các phương thức

                 public class class2

                       {

                                  // khai báo các thành phần dữ liệu

                                   // khai báo các phương thức

                        }        

           }





2.  Sử dụng các đối tượng của lớp:

Để sử dụng lớp ta phải khai báo đối tượng của lớp đó. Khi một đối tượng của lớp được tạo ra thì nó có đầy đủ các thuộc tính, phương thức của lớp và sử dụng thuộc tính và phương thức của lớp. Các thành phần của một lớp chỉ đuợc sử dụng khi có thể hiện của lớp, trừ trường hợp trong lớp có một hàm khởi dựng là static. Để khai báo một đối tượng của lớp ta dùng từ khóa new và khai báo nó theo cấu trúc sau:


?







code

1


<tên lớp> <tên đối tượng> = new <tên lớp> ([các giá trị khởi tạo nếu có])






Để truy nhập đến một phương thức ta thông qua tên biến đối tượng và toán tử chấm “.”:


?







code

1


<tên đối tượng>. <tên phương thức> ([danh sách các đối số nếu có])




Đối với các lớp lồng nhau, để truy cập đến những thuộc tính và phương thức của class lồng thì khi khai báo cần chỉ ra lớp chứa đựng nó. Muốn sử dụng biến của lớp chứa thì các biến của lớp dùng để chứa phải khai báo là static và phải khai báo đối tượng chứa nó.

Ví dụ1: Bạn đã khai báo một lớp diem với đầy đủ các thuộc tính và các phương thức (giả sử là có phương thức hien()), bây giờ bạn muốn tạo một đối tuợng tên là A của lớp này và sử dụng phương thức hiện điểm A thì phải khai báo A la một biến đối tượng như sau:

diem A = new diem ();

A.hien();

Ví dụ 2: Định nghĩa lớp pheptoan và trong lớp này có chứa lớp tinhhieu, muốn sử dụng đối tượng của lớp tinhhieu thì bắt buộc bạn phải khai báo chỉ rõ lớp chứa ở đây là lớp pheptoan như sau:




?







code

1


pheptoan.tinhhieu con = new pheptoan.tinhhieu();




sau đó việc truy xuất đến các phương thức của lớp thì tiến hành bình thường nhưng lớp ở trong thì không sử dụng được phương thức của lớp chứa nó và chỉ sử dụng được thành phần dữ liệu tĩnh của lớp chứa mà thôi.



3.  Từ khóa this

Từ khóa this dùng để tham chiếu đến chính bản thân của đối tượng đó.this là một con trỏ ẩn nằm ngay bên trong của mỗi một phương thức của lớp và bản thân chúng có thể tham chiếu đến các hàm và các biến khác của một đối tượng. Từ khóa this trong C# cũng tương tự như this trong C++.

Có ba cách để sử dụng từ khóa this.

Sử dụng this để phân biệt rõ giữa các thành viên thể hiện và các tham số của phương thức khi ta sử dụng biến thể hiện và tên của tham số trong phương thức trùng nhau. Tuy nhiên nếu muốn có đựơc sự rõ ràng, minh bạch thì có thể dùng tên biến thành viên và tên tham số là khác nhau từ đầu.

Ví dụ: Trong lớp pheptoan có biến thành viên là int y, int y và phương thức


?







code

1

2

3

4

5


public int setXY(int x, int y)

{

         this.x=x;

         this.y=y;

}






this.x, this.y là để tham chiếu đến 2 thành phần dữ liệu của lớp x, y. Còn x, y ở bên phải phép gán chính là hai đối số truyền vào của phương thức setXY

- Sử dụng this để trao đối tượng hiên hành như là một thông số cho một hàm hành sự khác. Khi đó một đối tượng đương nhiên sẽ trở thành một tham số của phương thức.

Ví dụ: với hai lớp class1 có chứa phương thức thietlapdoituong(), lớp class2 có chứa phương thức saochepdoituong() và muốn truyền tham số cho nó là đối tượng của lớp class1 thì sử dụng từ khóa thí như sau:


?







code

1

2

3

4


public void saochepdoituong (class1 a)

{

a.thietlapdoituong(this);

}






- Sử dụng this để thao tác với các indexer thường được sử dụng trong bản dãy, indexer và các tập hợp.



4 . Bộ khởi dựng( constructor/ Phương thức khởi tạo/ thiết lập)





Cú pháp:



public className([ds tham số]){

// Khởi tạo cho các thành phần dữ liệu của lớp

}

trong đó className:  Tên lớp

Chú ý: Phương thức khởi tạo là phương thức có tên trùng với tên của lớp và không có kiểu trả về



5. Sử dụng các từ khóa mức độ truy cập

public : Không có giới hạn, có thể truy xuất mọi nơi trong bản thân lớp khai báo và bên ngoài hay trong nội bộ khối assembly.

+ private:  riêng tư chỉ có phạm vi hoạt động trong lớp mà nó khai báo. Các phương thức bên ngoài lớp không thể truy xuất đến nó.

+ protected: Các thành viên trong lớp được khai báo bằng protected thì chỉ có các phương thức bên trong lớp và các lớp dẫn xuất từ lớp đó mới có thể truy cập đến nó.

+ internal: Các phương thức, các biến thành viên được khai báo bằng từ khóa Internal có thể được truy cập bởi tất cả những phương thức của bất cứ lớp nào trong cùng một khối hợp ngữ assembly với lớp đó.

+ protected internal: Các biến thành viên được khai báo bằng từ khóa này trong một lớp A bất kì có thể được truy xuất bởi các phương thức thuộc lớp A và các phương thức của lớp dẫn xuất từ lớp A và bất cứ lớp nào trong cùng một khối hợp ngữ với lớp A.

- Khối hợp ngữ Assembly được hiểu là một khối chia xẻ và dùng lại trong CLR. Khối hợp ngữ là tập hợp các tập tin vật lý được lưu trữ trong một thư mục bao gồm các tập tin tài nguyên.

Các thuộc tính truy cập được áp dụng cho thuộc tính, phương thức của lớp và bản thân lớp. Khi định nghĩa thuộc tính truy cập của lớp là internal, protected chỉ được định nghĩa trong lớp lồng nhau mà thôi.
vietshare.vn

Post a Comment

Previous Post Next Post