28
Click to edit Master subtitle style INTERFACE 1

INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Click to edit Master subtitle style

INTERFACE

1

Page 2: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Interface – Khái niệm Định nghĩa Interface Hiện thực Interface Hiện thực nhiều Interface và thừa kế Thực hành

NỘI DUNG

2

Page 3: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

INTERFACE – KHÁI NIỆM

3

Page 4: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Interface – Khái niệm

Interface có thể xem là ranh giới (boundary) mà đối tượng thực chia sẻ với thế giới bên ngoài Nếu như Inheritance thể hiện mối quan hệ “is a” thì Interface thể hiện mối quan hệ “can do” Trong thế giới thực, ta có thể thấy Inferace xuất hiện ở nhiều nơi: ở Tivi, xe hơi, ...

4

Page 5: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Interface – Khái niệm

5

Người dùng sử dụng Tivi thông qua thao tác các nút điều chỉnh (chỉnh âm lượng, chỉnh kênh ...)

chứ không cần biết chính xác bên trong Tivi xử lý như thế nào các nút điều chỉnh

Page 6: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Interface – Khái niệm

6

Người lái xe sử dụng vô lăng, bàn đạp chân gas, bàn đạp thắng, ... để điều khiển xe hơi của mình

Page 7: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Interface – Khái niệm

Nhận xét: Inferface giúp định nghĩa cách thức người sử

dụng giao tiếp với sự vật/hệ thống Xác định rõ làm thế nào hệ thống phản hồi

(feedback) đến user Các sự vật có cùng interface thì thông

thường chức năng chúng cung cấp sẽ tương tự nhau về mặt tổng quan (VD: Các loại xe hơi của những hãng sản xuất khác nhau)

7

Page 8: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

ĐỊNH NGHĨA INTERFACE

8

Page 9: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Định nghĩa Interface

Trong C#, ta có thể định nghĩa Interface thông qua từ khóa Interface Việc định nghĩa Interface cũng chính là viết bản hướng dẫn sử dụng một chức năng mà người dùng đang cần Trong C#, Interface bao gồm các thành viên cơ bản: thuộc tính (properties), phương thức (methods), sự kiện (events) và indexers

9

Page 10: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Định nghĩa Interface

Ví dụ 1: Một chương trình Khoa học đời sống đang muốn nghiên cứu hành vi “bay” của các sự vật trên trái đất

10

public interface IFlyable { void Fly(); }

Page 11: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Định nghĩa Interface

Ví dụ 2: Giả sử chương trình cần hỗ trợ “ghi” file và hỗ trợ nhiều loại file khác nhau

11

public interface IFileWriter { string Extension { get; } void Write(string filename); }

Page 12: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Định nghĩa Interface

Nhận xét: Tất cả các phương thức (methods) ở trên đều

không có phần hiện thực (implementation) Không cần từ khóa virtual trước tên phương

thức Không cần phải khai báo tầm vực (vd: public,

protected, private, ...) trước tên phương thức Mặc định tất cả members đều public/virtual Nên có từ khóa I trước tên Interface

12

Page 13: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

HIỆN THỰC INTERFACE

13

Page 14: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

Nếu chỉ định nghĩa Interface thì ta vẫn chưa sử dụng được các chức năng mong muốn Cần xây dựng các lớp “hiện thực” interface để có thể sử dụng được các thành viên trong interface tương ứng (VD: Các thiết bị linh kiện và xử lý chi tiết bên trong Tivi ứng với từng nút) Cú pháp “hiện thực” interface tương tự như khi thừa kế dùng dấu hai chấm “:” + tên Interface Hiện thực chi tiết các thành viên của Interface

14

Page 15: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

Ví dụ 1: Một chương trình Khoa học đời sống đang muốn nghiên cứu hành vi “bay” của các sự vật trên trái đất cần xây dựng các lớp có đối tượng có thể thực hiện hành vi “bay” này

15

public interface IFlyable { void Fly(); }

Page 16: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

16

Page 17: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

17

class Bird : IFlyable { public void Fly() { Console.WriteLine("Bird Fly"); } } class Plane: IFlyable { public void Fly() { Console.WriteLine("Plane Fly"); } }

Page 18: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

18

class Program { static void Main(string[] args) { //Create 2 thing that can fly IFlyable[] FlyThings = new IFlyable[2]; FlyThings[0] = new Bird(); FlyThings[1] = new Plane(); for (int i = 0; i < FlyThings.Length; i++) FlyThings[i].Fly(); } }

Page 19: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Định nghĩa Interface

Ví dụ 2: Giả sử chương trình cần hỗ trợ “ghi” file và hỗ trợ nhiều loại file khác nhau

19

public interface IFileWriter { string Extension { get; } void Write(string filename); }

Page 20: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

20

class TextFileWriter : IFileWriter { public string Extension { get { return ".txt"; } } public void Write(string filename) { Console.WriteLine(filename); } }

Page 21: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

21

class DocxFileWriter : IFileWriter { public string Extension { get { return ".docx"; } } public void Write(string filename) { Console.WriteLine(filename); } }

Page 22: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Hiện thực Interface

22

class Program { static void Main(string[] args) { IFileWriter[] fileWriters = new IFileWriter[2]; fileWriters[0] = new TextFileWriter(); fileWriters[1] = new DocxFileWriter(); foreach (IFileWriter fileWriter in fileWriters) { fileWriter.Write(fileWriter.Extension); } } }

Page 23: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

NHIỀU INTERFACE – THỪA KẾ

23

Page 24: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Nhiều Interface – thừa kế Đặc điểm: Trong C#, khi thừa kế ta chỉ có thể thừa kế tối đa

một lớp cơ sở Nhưng khi hiện thực Interface, ta được quyền hiện

thực nhiều Interface Khi hiện thực nhiều Interface phải hiện thực tất

cả phương thức nằm trong các Interfaces đó

24

Page 25: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Nhiều Interface – thừa kế

25

public interface IRunnable { void Run(); } public interface ISwimmable { void Swim(); }

Giả sử ta có 2 Interfaces dành cho các đối tượng có thể chạy và bơi

Page 26: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Nhiều Interface – thừa kế

26

class Person : IRunnable, ISwimmable { public void Run() { Console.WriteLine("Running ... "); } public void Swim() { Console.WriteLine("Swimming ... "); } }

Lớp hiện thực 2 Interfaces trên cần phải chứa hiện thực cho tất cả các thành viên (ở đây cụ thể là 2 phương thức)

Page 27: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Nhiều Interface – thừa kế Đặc điểm: C# cho phép hiện thực nhiều Interface và đồng thời

thừa kế tối đa một lớp cơ sở Cú pháp: (lưu ý tên lớp cơ sở phải xuất hiện đầu

tiên trong danh sách)

27

public class SubClass : OldClass, IInterface1, IInterface2 { ... }

Page 28: INTERFACE - fit.huflit.edu.vnfit.huflit.edu.vn/wp-content/uploads/2017/08/Chuong-7-Interface.pdf · Cần xây dựng các lớp “hiện thực” interface để có thể sử

Giới thiệu về Interface Cách định nghĩa và hiện thực Interface Hiện thực nhiều Interface và thừa kế Bài tập

TÓM TẮT

28