Các nguyên tắc cơ bản của OOP: Đa hình
Thuật ngữ đa hình có nghĩa là sự biến đổi hoặc đa dạng. Đây là mặt trái của trừu tượng hóa kết hợp với cơ chế kế thừa. Khi chúng ta có một giao diện lập trình chung, nó có thể được triển khai bởi các lớp khác nhau, liên kết với nhau qua quan hệ kế thừa. Sau đó, việc gọi các phương thức giao diện sẽ khiến nhiệm vụ được thực hiện theo những cách khác nhau.
Ví dụ, hãy tưởng tượng một họ các phương tiện trừu tượng bao gồm một vài loại cụ thể: ô tô và trực thăng. Lệnh di chuyển từ điểm A đến điểm B sẽ được cả hai thực hiện tốt như nhau, nhưng ô tô sẽ di chuyển trên mặt đất, còn trực thăng thì bay trên không.
Hãy tiếp tục ví dụ với chương trình vẽ. Chúng ta có thể nói rằng sự đa dạng trong đó được đặt ở cấp độ các hình dạng đồ họa. Người dùng có thể tự do vẽ bất kỳ sự kết hợp nào của hình tròn, hình vuông và hình tam giác. Mỗi đối tượng này phải có khả năng hiển thị chính nó trên màn hình bằng tọa độ và phong cách riêng của nó, nhưng điều quan trọng nhất là làm điều đó theo cách tạo ra một hình dạng phù hợp.
Chương trình rất có thể sẽ có một mảng (hoặc một bộ chứa khác) lưu trữ tất cả các hình dạng do người dùng tạo ra, và việc hiển thị toàn bộ bản vẽ trên màn hình nên bao gồm việc vẽ tuần tự từng hình dạng. Nếu chúng ta rút gọn các hướng dẫn vẽ cho các hình dạng thành một phương thức riêng (hãy gọi nó là draw
), thì mỗi lớp sẽ có triển khai riêng của nó. Tuy nhiên, tiêu đề của các hàm này sẽ hoàn toàn giống nhau, vì chúng thực hiện cùng một nhiệm vụ và lấy dữ liệu ban đầu từ các đối tượng.
Do đó, chúng ta có cơ hội thống nhất mã nguồn, vì cùng một lệnh gọi draw
bên trong vòng lặp qua các hình dạng thể hiện tính đa hình: hình dạng được hiển thị sẽ phụ thuộc vào loại đối tượng.