Bạn có thể tưởng tượng vũ trụ của chúng ta được hình thành từ các vật thể, các đối tượng khác nhau như mặt trời, mặc trăng, trái đất, ... Tương tự, bạn có thể tưởng tượng xe hơi được tạo ra từ các đối tượng như bánh xe, tay lái, bánh răng cưa,... Tương tự, hướng đối tượng trong Pascal giúp bạn định hình, định hướng để tạo ra một phần mềm hoàn chỉnh.
Lập trình hướng đối tượng giả định mọi thứ là đối tượng và triển khai phần mềm bằng cách sử dụng các đối tượng khác nhau. Trong Pascal, có 2 loại cấu trúc dữ liệu được sử dụng để triển khai một đối tượng thực: lớp và kiểu đối tượng.
- Loại đối tượng
- Loại lớp
Khái niệm về hướng đối tượng trong Pascal
Trước khi khám phá chi tiết, trước hết cần hiểu các khái niệm quan trọng liên quan đến hướng đối tượng (Object-Oriented) trong Pascal.
- Đối tượng (Object): Trong Pascal, đối tượng là một kiểu bản ghi đặc biệt chứa các trường như một bản ghi. Tuy nhiên, đối tượng trong Pascal còn chứa cả các hàm và thủ tục. Các hàm và thủ tục này được lưu giữ như các con trỏ tới các phương thức được kết hợp với kiểu của đối tượng.
- Lớp: Trong lập trình Pascal, lớp là một khái niệm quan trọng đối với việc tổ chức và quản lý mã nguồn. Lớp được sử dụng để định nghĩa cấu trúc dữ liệu và các phương thức hoạt động trên dữ liệu đó.
- Tạo đối tượng của lớp: Để tạo ra một đối tượng của lớp trong Pascal, chúng ta cần sử dụng một hàm tạo đặc biệt được gọi là constructor. Hàm constructor này có nhiệm vụ cấp phát bộ nhớ và khởi tạo các thuộc tính cho đối tượng mới được tạo.
Trong bài viết này, chúng ta sẽ sử dụng thuật ngữ 'Đối tượng' để chỉ đối tượng trong lập trình Pascal và 'đối tượng' để chỉ các thực thể hoặc cụ thể hóa của đối tượng đó.
- Các biến thành viên: Trong Pascal, các biến thành viên là các thuộc tính được khai báo trong một lớp hoặc đối tượng và được sử dụng để lưu trữ thông tin cụ thể của đối tượng đó.
- Các phương thức thành viên: Là những phương thức được định nghĩa bên trong một lớp hoặc đối tượng trong Pascal và được sử dụng để thực hiện các thao tác trên dữ liệu của đối tượng.
- Thuộc tính truy cập của thành viên: Các thành viên của lớp hoặc đối tượng trong Pascal được biết đến với tên gọi là các trường dữ liệu. Các trường này có các thuộc tính truy cập khác nhau, chỉ ra cách mà các thành viên có thể được truy cập từ bên ngoài. Trong Pascal, có ba cấp độ truy cập: Công khai, Riêng tư và Bảo vệ.
- Kế thừa (Inheritance): Khi một lớp mới được tạo ra bằng cách thừa kế các phương thức của lớp cha, quá trình này được gọi là kế thừa. Trong kế thừa, lớp con sẽ thừa hưởng tất cả hoặc một số phương thức và biến của lớp cha. Điều tương tự cũng áp dụng cho đối tượng.
- Lớp cha: Lớp mà một lớp khác được tạo ra dựa trên được gọi là lớp cha hoặc lớp cơ sở.
- Lớp con: Lớp dẫn xuất từ một lớp khác được gọi là lớp con.
- Đa hình: Trong lập trình hướng đối tượng Pascal, đa hình có nghĩa là khả năng của một đối tượng có thể hiện thực hành đa dạng hành vi tùy thuộc vào loại của nó.
- Chồng các hàm: Đây là một khái niệm đa hình trong đó cùng một hàm có thể có nhiều cách triển khai khác nhau, phụ thuộc vào các loại và tham số đầu vào.
- Từ trừu tượng dữ liệu: Là một khái niệm trong lập trình, nơi các chi tiết cụ thể được ẩn đi và chỉ hiển thị các tính chất chung của đối tượng.
- Bao bọc dữ liệu (Encapsulation): Là quá trình mà dữ liệu và các phương thức thành viên của một đối tượng được đóng gói cùng nhau để tạo thành một đơn vị độc lập.
- Hàm khởi tạo: Là một loại hàm đặc biệt được gọi tự động mỗi khi một đối tượng mới được tạo ra từ một lớp hoặc đối tượng trong Pascal.
- Hàm hủy bỏ: Đây là một loại hàm đặc biệt được gọi tự động khi một đối tượng hoặc lớp bị hủy hoặc ra khỏi phạm vi.
Định nghĩa đối tượng trong Pascal
Trong Pascal, đối tượng được dùng để định nghĩa kiểu dữ liệu. Một khai báo đối tượng thường có cấu trúc như sau:
Một đối tượng hình chữ nhật bao gồm hai thành viên dữ liệu là chiều dài và chiều rộng, cùng với một số phương thức để thao tác với dữ liệu và vẽ hình chữ nhật.
Sau khi tạo ra đối tượng, bạn có thể gọi các phương thức của nó. Mỗi phương thức chỉ có thể thao tác với dữ liệu của đối tượng đó.
Dưới đây là ví dụ minh họa về cách thiết lập kích thước của hai đối tượng hình chữ nhật và vẽ chúng bằng cách gọi các phương thức tương ứng.
Một ví dụ khác về việc sử dụng đối tượng trong Pascal:
Khi đoạn mã trên được biên dịch và thực thi, kết quả sẽ được trả về như sau:
Cách sử dụng thuộc tính hiển thị của các thành viên đối tượng
Thuộc tính hiển thị xác định cách truy cập các thành viên đối tượng. Trong Pascal, có ba mức độ hiển thị cho các thành viên đối tượng:
Theo mặc định, các trường và phương thức của một đối tượng được công khai và truy cập từ bên ngoài đơn vị hiện tại.
Cách sử dụng Constructor và Destructor cho đối tượng trong Pascal
Constructor là một loại phương thức đặc biệt được tự động gọi khi một đối tượng được tạo ra. Trong Pascal, bạn có thể tạo constructor bằng cách khai báo một phương thức với từ khóa constructor. Thông thường, tên phương thức là Init, nhưng bạn cũng có thể đặt tên theo ý muốn và truyền đối số vào constructor nếu cần.
Destructor trong Pascal là các phương thức được gọi khi đối tượng bị hủy. Phương thức destructor giải phóng bộ nhớ mà constructor đã cấp phát.
Dưới đây là một ví dụ về cách sử dụng constructor và destructor cho lớp Rectangle trong Pascal. Constructor sẽ khởi tạo chiều dài và chiều rộng của hình chữ nhật khi đối tượng được tạo ra, và destructor sẽ phá hủy đối tượng khi nó ra khỏi phạm vi.
Khi mã được biên dịch và thực thi, kết quả sẽ là:
Kế thừa của đối tượng trong Pascal
Trong Pascal, đối tượng có thể kế thừa từ một đối tượng cha. Ví dụ dưới đây minh họa cách kế thừa trong Pascal, với việc tạo đối tượng TableTop từ lớp Rectangle.
Dưới đây là một số điều quan trọng mà bạn cần lưu ý:
- Đối tượng TableTop kế thừa tất cả thành viên từ đối tượng Rectangle.
- Ngoài ra, TableTop có một phương thức vẽ riêng. Khi gọi phương thức vẽ của TableTop, phương thức vẽ của TableTop cũng được gọi.
Khi mã được biên dịch và thực thi, kết quả sẽ như sau:
Bài viết trên Mytour đã chia sẻ thông tin liên quan đến lập trình hướng đối tượng trong Pascal. Bạn cũng có thể tìm hiểu thêm về lệnh vòng lặp trong Pascal. Bài viết tiếp theo sẽ giới thiệu về lớp trong Pascal. Đừng quên chia sẻ thông tin hữu ích này với bạn bè và người thân của bạn!
