Chương 8 Giao diện

Một phần của tài liệu Lập trình môn Csharp_2 potx (Trang 29)

Giao diện định nghĩa các hợp đồng (constract). Các lớp hay cấu trúc cài đặt giao diện này phải tôn trọng hợp đồng này. Điều này có nghĩa là khẳng định với client (người dùng lớp hay cấu trúc) rằng “Tôi bảo đảm rằng tôi sẽ hỗ trợđầy đầy đủ các phương thức, property, event, delegate, indexer đã được ghi trong giao diện”

Một giao diện có thể thừa kế một hay nhiều giao diện khác, và một lớp hay cấu trúc có thể cài đặt một hay nhiều giao diện.

Quan sát về phía lập trình thì giao diện là tập các hàm được khai báo sẵn mà không cài đặt. Các lớp hay cấu trúc cài đặt có nhiệm vụ phải cài tất cả các hàm này.

8.1 Cài đặt một giao diện Cú pháp của việc định nghĩa một giao diện: Cú pháp của việc định nghĩa một giao diện:

[attributes] [access-modifier] interface interface-name [:base-list] {

interface-body }

Ý nghĩa của từng thành phần như sau

attributes: sẽ đề cập ở phần sau.

modifiers: bổ từ phạm vi truy xuất của giao diện

identifier: tên giao diện muốn tạo

base-list: danh sách các giao diện mà giao diện này thừa kế, (nói rõ trong phần thừa kế)

interface-body: thân giao diện luôn nằm giữa cặp dấu {}

Trong thư viện .NET Framework các giao diện thường bắt đầu bởi chữ I (i hoa),

điều này không bắt buộc. Giả sử rằng chúng ta tạo một giao diện cho các lớp muốn lưu trữ xuống/đọc ra từ cơ sở dữ liệu hay các hệ lưu trữ khác. Đặt tên giao diện này là IStorable, chứa hai phương thức Read( ) và Write( ).

interface IStorable {

void Read( );

void Write(object); }

Giao diện như đúng tên của nó: không dữ liệu, không cài đặt. Một giao diện chỉ

trưng ra các khả năng, và khải năng này sẽ được hiện thực hoá trong các lớp cài đặt nó. Ví dụ như ta tạo lớp Document, do muốn các đối tượng Document sẽđược lưu trữ vào cơ sở dữ liệu, nên ta cho Document kế thừa (cài đặt) giao diện IStorable.

// lớp Document thừa kế IStorable,

// phải cài đặt tất cả các phương thức của IStorable public class Document : IStorable

Một phần của tài liệu Lập trình môn Csharp_2 potx (Trang 29)