Mục lục chương I: ĐỐi tưỢng và LỚP



tải về 1.36 Mb.
trang15/28
Chuyển đổi dữ liệu21.12.2018
Kích1.36 Mb.
1   ...   11   12   13   14   15   16   17   18   ...   28

Toán tử một ngôi:


Các toán tử dùng cho một đối tượng hay tham chiếu đến đối tượng trong lớp. Ví dụ các toán tử một ngôi như: + ( +a ) , - (-a) , ++ (++a) …
    1. Toán tử hai ngôi:


Các toán tử như toán tử (= =) so sánh giữa hai đối tượng. toán tử (!=) so sánh không bằng giữa hai đối tượng, “<” so sánh nhỏ hơn, “>” so sánh lớn hơn… Đây là các toán tử phải có các cặp toán hạng hay ta còn gọi là toán tử hai ngôi.Trong C# còn có toán tử ba ngôi.

Chú ý: Trong ngôn ngữ C# không tạo được toán tử nonstatic, do vậy toán tử nhị phân phải lấy hai toán hạng.
    1. Hỗ trợ ngôn ngữ .NET khác:


C# cung cấp khả năng cho phép nạp chồng toán tử cho các lớp mà chúng ta xây dựng. Trong khi đó các ngôn ngữ .NET khác không cho phép điều này.

+ Để đảm bảo lớp hỗ trợ các phương thức thay thế cho phép các ngôn ngữ khác có thể gọi . Để làm được điều này thì khi nạp chồng toán tử nào đó thì phải xây dựng cho nó một phương thức có chức năng tương tự như toán tử đã chồng.

Ví dụ:

Khi chúng ta nạp chồng toán tử (+) thì phải cung cấp một phương thức Add( ) cũng làm chức năng cộng hai đối tượng.



Khi sử dụng chồng toán tử (= =) thì nên cung cấp thêm phương thức Equals() bởi đối tượng và hướng chức năng này đến toán tử (= =) cho phép lớp của ta đa hình và cung cấp khả năng hữu ích cho ngôn ngữ .Net khác.

+ Toán tử so sánh : Có 6 toán tử so sánh ứng với 3 cặp. Giữa các cặp này luôn luôn có kết quả đối nghịch nhau: Nếu toán hạng đầu trả về giá trị true thì toán hạng kia trả về giá trị false. C# luôn luôn yêu cầu bạn nạp chồng cả hai toán tử đó. Nếu bạn nạp chồng toán tử "= =" thì phải nạp chồng toán tư"!=" nếu không trình biên dịch sẽ báo lỗi.

Có một hạn chế là toán tử so sánh phải trả về kiểu bool. và đó cũng là điểm khác nhau giữa các toán hạng này và toán hạng số học.

Cấu trúc của phương thức có chức năng tương tự như toán tử so sánh đã chồng được xây dựng như sau:

public override bool Equals(object obj)

{

Console.WriteLine("phuong thuc equals");



if (!(obj is phanso))

{

return false;



}

return this = = (phanso)obj;

}

Trong đó toán tử is dùng để kiểm trình kiểu đối tượng lúc chương trình đang thực hiện có thích ứng với toán hạng hay không. Nếu kiểm tra thấy kiểu đối tượng thích ứng với toán hạng thì kết quả trả ra là true và ngược lại là false.



+ Toán tử chuyển đổi : Dùng từ khóa implicit và explicit nó có tác dụng chuyển đổi một số từ kiểu có kích thước nhỏ sang kích thước lớn và (ngược lại) mà không bị mất thông tin.
    1. Phạm vi sử dụng của các toán tử:


      Phạm trù

      Toán tử

      Hạn chế

      Nhị phân toán học

      +, *, /, -, %

      Không

      Thập phân toán học

      +, -, ++, --

      Không

      Nhị phân bit

      &, |, ^, <<, >>

      Không

      Thập phân bit

      !, ~, true, false

      Không

      So sánh

      = =,!=,>=,<, <=, >

      Phải nạp chồng theo từng cặp.

    2. Một số trường hợp nên sử dụng các toán tử nạp chồng:


1. Trong toán học, mọi đối tượng toán học như: tọa độ, vector, ma trận, hàm số v…v… Nếu bạn viết chương trình làm những mô hình toán học hay vật lý, bạn nhất định sẽ mô tả những đối tượng này.

2. Những chương trình đồ họa sẽ sử dụng các đối tượng toán học và toạ độ khi tính toán vị trí của trên màn hình.

3. Một lớp mô tả số lượng tiền.

4. Việc sử lý từ hay chương trình phân tích văn bản có lớp để mô tả các câu văn, mệnh đề và bạn phải sử dụng các toán hạng để liên kết các câu lại với nhau.


    1. Yêu cầu khi sử dụng toán tử:


+ Định nghĩa những toán tử trong kiểu dữ liệu giá trị, kiểu dữ liệu xây dựng sẵn. + Cung cấp phương thức nạp chồng toán tử chỉ bên trong của lớp nơi mà những phương thức được định nghĩa.

+ Sử dụng tên và các kí hiệu được mô tả trong trong Common Language speci-fication (CLS). Tức là ta không được chồng một toán tử mới

+ Sử dụng chồng toán tử trong trường hợp kết quả trả về rõ ràng.

Ví dụ:

Khi ta sử dụng toán tử “or” hoặc “and” giữa một giá trị thời gian này với một thời gian khác thì kết quả trả về sẽ không rõ ràng vì vậy trong trường hợp này ta không nên sử dụng chồng toán tử.

+ Nạp chồng toán tử có tính chất đối xứng. Nghĩa là:

Khi dùng toán tử ( = = ) thì phải dùng toán tử (!=)

Khi dùng toán tử ( < ) thì phải dùng toán tử ( > ).

Khi dùng toán tử ( > = ) thì phải dùng toán tử (<=).

+ Phải cung cấp các phương thức thay thế cho toán tử được nạp chồng. Bởi vì hầu hết các ngôn ngữ khác không cho phép chồng toán tử nên khi ta sử dụng thêm phương thức có chức năng tương tự như toán tử giúp cho chương trình có thể phù hợp với nhiều ngôn ngữ khác nhau.

    1. Ưu và nhược điểm của chồng toán tử


Ưu điểm :

+ Nạp chồng toán tử là một phương thức ngắn gọn giúp mã nguồn dễ nhìn hơn, dễ quản lí,sáng sủa hơn.

+ Nạp chồng toán tử là đường dẫn cho những đối tượng

Nhược điểm:

+ Ta phải sử dụng nạp chồng toán tử một cách hạn chế và phù hợp với các toán tử của lớp được xây dựng sẵn, không sử dụng toán tử quá mới hay quá riêng rẽ. Nếu sử dụng toán tử một cách lạm dụng thì sẽ làm chương trình nhầm lẫn





  1. Поделитесь с Вашими друзьями:
1   ...   11   12   13   14   15   16   17   18   ...   28


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2019
được sử dụng cho việc quản lý

    Quê hương