19/09/2018, 15:11

Lập trình hướng đối tượng: Tìm hiểu mô hình trừu tượng

Lập trình hướng đối tượng: Tìm hiểu mô hình trừu tượng Sau loạt bài về kiến thức cơ bản như tìm hiểu khái niệm, phương thức magic, sự kế thừa, các uy tắc chung. Trong bài này, chúng ta sẽ tiếp tục mở rộng các kiến thức trong lập trình hướng đối tượng . Cụ thể, chúng ta sẽ ...

Lập trình hướng đối tượng: Tìm hiểu mô hình trừu tượng

Sau loạt bài về kiến thức cơ bản như tìm hiểu khái niệm, phương thức magic, sự kế thừa, các uy tắc chung. Trong bài này, chúng ta sẽ tiếp tục mở rộng các kiến thức trong lập trình hướng đối tượng. Cụ thể, chúng ta sẽ cùng phân tích và tím hiểu về mô hình trừu tượng trong hướng đối tượng.

 
Phương thức và lớp trừu tượng
 
Lớp trừu tượng là lớp sẽ chứa các phương thức trừu tượng. Và các lớp kế thừa lớp trừu tượng sẽ phải định nghĩa các phương thức trừu tượng ấy. Để tuân thủ một ràng buộc về mặt tổ chức của mô hình trừu tượng.
 
Để định nghĩa một lớp, một phương thức là trừu tượng ta có cú pháp:

Lúc này có thể hiểu rằng, lớp ABC được gọi là lớp trừu tượng và phương thức test() được gọi là phương thức trừu tượng.

Khi đó, một lớp muốn sử dụng lớp trừu tượng, ta sẽ có cú pháp extends để kế thừa.

Sự trừu tượng có thể được hiểu đơn giản như sau:

Giả sử, kiến trúc để xây dựng 1 chiếc xe sẽ bao gồm: Bánh xe, yên xe, thắng.

Như vậy, những mô hình xe máy, xe đạp, xe hơi cũng được gọi là xe khi chúng thỏa mãn những yếu tố mà kiến trúc một chiếc xe quy định.

Diễn giải lại điều ở trên bằng hình ảnh để thấy rõ điều đó:
Lập trình hướng đối tượng - tìm hiểu mô hình trừu tượng
Qua biểu đồ này chúng ta thầy rằng, khi chiếc xe đạp, xe máy, xe hơi kế thừa mô hình xe. Nó sẽ phải định nghĩa 3 phương thức trừu tượng là banhxe(), yenxe(),thangxe(). Dù rằng ở mỗi thể loại xe đều có những đặc thù riêng biệt.
 
Như vậy có thể hiểu, mô hình trừu tượng trong thực tế được sử dụng để quản lý mô hình mã nguồn. Nó định ra một quy định cơ bản, và yêu cầu bất kể một lớp nào, hoặc phương thức nào khi muốn làm việc với nó, thì buộc phải định nghĩa theo các quy tắc mà nó đã đặt ra. Nhằm đảm bảo tính nhất quán và dễ kiểm soát mã nguồn hơn đối với các dự án có quy mô lớn và phức tạp.
 
Tuy nhiên, vì lớp trừu tượng vẫn được xem là một lớp. Thế nên, ngoài chức năng quy định lớp trừu tượng ra, thì nó vẫn có thể khởi tạo các thuộc tính hoặc phương thức khác để phục vụ cho việc sử dụng của những phương thức kế thừa nó.
 
Một ví dụ về việc sử dụng mô hình lớp trừu tượng:
 
Giao diện trong hướng đối tượng.
 

Một khái niệm nữa được đưa vào mô hình hướng đối tượng là Giao diện. Giao diện cũng mang nguyên tắc của mô hình trừu tượng. Nhưng điểm khác biệt ở đây là với giao diện, chúng ta có thể cho phép một lớp sử dụng linh động giữa một hoặc nhiều giao diện cùng lúc.

Để khai báo giao diện ta có:
Và để một lớp sử dụng một hoặc nhiều giao diện ta sẽ có:

Có thể hiểu một cách đơn giản rằng, giao diện đem lại sự tùy chọn đầy đủ hơn. Nó cho phép, một lớp có thể dùng một hoặc nhiều giao diện cùng lúc. Và khi đã sử dụng, thì lớp đó phải định nghĩa các phương thức thuộc giao diện đó giống với ví dụ ở trên là lớp ABC đã phải định nghĩa 2 phương thức là sound() và protect().

Không giống như lớp trừu tượng, giao diện chỉ có thể chứa tên các phương thức. Ngoài ra nó không thể định nghĩa các phương thức hoặc chứa các thuộc tính bình thường như một lớp trừu tượng được.

Và dĩ nhiên một lớp vẫn có thể vừa kế thừa và vừa sử dụng giao diện được. Ví dụ sau sẽ thể hiện điều đó:


(
Nguồn Qhonline
0