Khái niệm Interface trong lập trình hướng đối tượng
The Interface concept in OOP.
1. Ta đều đã biết, một đối tượng (Object) bao giờ cũng gồm hai loại là thuộc tính và hành động (behavior). Lấy ví dụ: đối tượng chó sẽ có các thuộc tính là {tên, tuổi, giống, ...} bên cạnh đó các behavior là {sủa, ăn, vẫy đuôi, ...}
Trong lập trình C++: Một đối tượng sẽ lưu các thuộc tính thông qua biến (variable) và sử dụng phương thức (method) để thực thi các behavior.
2. Một interface là một tập hợp các khai báo của các phương thức.
Có điểm cần lưu ý trong định nghĩa trên: đó là interface chỉ là tập hợp các khai báo. Có nghĩa là nó quan tâm đề cập tới "làm cái gì?" chứ không phải là "làm như thế nào?" Có nghĩa là thông qua các interface ta chỉ có thể biết interface đó làm cái gì chứ không thể biết nó được làm như thế nào để đạt được mục đích.
Với ví dụ sau ta có thể thấy được nhiều vấn đề về interface:
Ví dụ 1: Một đối tượng Car có giao diện IDrivable dùng để tương tác với đối tượng Driver gồm 3 method là : goforward, goback, halt. Các đối tượng khác như truck, train cũng có thể sử dụng giao diện trên để tương tác với Driver. Tất nhiên ta đều biết việc thực thi các method đối với đối tượng Car và Truck hay Train là khác nhau. Trong khi đó đối tượng Driver không cần quan tâm tới các interface của những đối tượng khác được thực thi như thế nào. Nó chỉ quan tâm tới bản thân các interface mà thôi.
Ví dụ 2: Một interface tên là IShape chỉ có một method là calarea() dùng để tính toán diện tích. Đối tượng Circle và đối tượng Rectangle đều có thể dùng được giao diện này dù cách thức thực thi là khác nhau. Tuy vậy một đối tượng cần tương tác thông qua giao diện IShape đều chỉ cần gọi method calarea() bất kể đó là Circle hay Rect.
No comments:
Post a Comment