Lập trình hướng đối tượng – Phần 1 – Cơ bản về lớp đối tượng – Python

Giới thiệu

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mô hình kiến trúc lập trình dựa trên khái niệm “công nghệ đối tượng”, mà trong đó, đối tượng chứa đựng các dữ liệu: (i) thuộc tính của đối tượng; (ii) phương thức để thực thi các hành động của đối tượng.

OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn.

Một số khái niệm cơ bản

Khái niệm đầu tiên là “đối tượng”, được hiểu như là 1 thực thể: người, vật hoặc 1 bảng dữ liệu, . . .

Một đối tượng bao gồm 2 thông tin chính:

  • Thuộc tính. Là những thông tin, đặc điểm của đối tượng. Ví dụ: một hình chữ nhật sẽ có chiều dài, chiều rộng, . . .
  • Phương thức. Là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một hình chữ nhật sẽ có thao tác tính chu vi, diện tích, . . .

Khái niệm thứ hai là “lớp”, được hiểu như là một khuôn mẫu mà từng đối tượng là một thể hiện cụ thể dựa trên khuôn mẫu đó.

Ví dụ một lớp hình chữ nhật sẽ định nghĩa: (i) các thuộc tính chiều dài / chiều rộng; (ii) các phương thức tính chu vi, tính diện tích. Còn từng đối tượng hình chữ nhật sẽ có số đo cụ thể cho từng thuộc tính cũng như chu vi và diện tích riêng.

Các tính chất của lập trình hướng đối tượng

Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):

  • Tính chất này không cho phép tác nhân bên ngoài thay đổi trạng thái nội tại của một đối tượng.
  • Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó.
  • Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

Tính trừu tượng (abstraction):

  • Là phương pháp trừu tượng hóa định nghĩa lên những hành động, tính chất của loại đối tượng nào đó cần phải có.
  • Mỗi đối tượng có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác.
  • Tính chất này thường được gọi là sự trừu tượng của dữ liệu.

Tính kế thừa (inheritance):

  • Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.
  • Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

Tính đa hình (polymorphism):

  • Thể hiện thông qua việc gửi các thông điệp (message).
  • Việc gửi các thông điệp này có thể so sánh như việc gọi các phương thức bên trong của một đối tượng.
  • Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau.

Xây dựng lớp đối tượng độc lập

Trong nội dung bài này, chúng ta cùng tìm hiểu cách xây dựng một lớp đối tượng độc lập cùng với tính chất đóng gói (encapsulation) bằng ngôn ngữ Python.

Bước 1.

Chúng ta tạo một PyDev Project trong Eclipse IDE và đặt tên là PythonOOPFirstProject.

Chúng ta tiếp tục tạo package mainmodule Main.py cùng phương thức main() mặc định.

Bước 2.

Chúng ta tạo package objectmodule HinhChuNhat.py.

Những kỹ thuật lập trình cần chú ý:

  • Như đã trình bày ở phần Giới thiệu về Tính đóng gói (encapsulation) và che giấu thông tin (information hiding). Mỗi package có thể được xem như là một hình thức để gom nhóm các lớp đối tượng có cùng chung những đặc điểm nào đó.
  • Python là một ngôn ngữ lập trình rất linh động và hỗ trợ nhiều phong cách lập trình khác nhau. Chúng ta có thể tự do lựa chọn việc có đặt một module vào bên trong một package hay không. Tuy nhiên, để dễ quản lý một chương trình phần mềm lớn, chúng ta nên phân hoạch các module vào trong những package theo tư duy hướng đối tượng.
  • Trong ví dụ hiện tại, chúng ta có thể đặt tên packageobject (nghĩa là đối tượng nói chung) hoặc shape (nghĩa là hình vẽ nói chung).

Bước 3.

Khác với nhóm ngôn ngữ Java / Csharp, Python không cung cấp một cách tường minh để định nghĩa các thuộc tính của một lớp đối tượng. Về cơ bản, mọi thuộc tính hay phương thức trong một module của Python đều là public và được truy xuất tự do từ các module khác. Điều này có vẻ không thực sự phù hợp theo tư duy lập trình hướng đối tượng.

Để phù hợp Tính đóng gói (encapsulation) và che giấu thông tin (information hiding) trong Lập trình hướng đối tượng, Python cung cấp 02 cách tiếp cận để định nghĩa các phương thức đặc biệt truy xuất và điều chỉnh dữ liệu, hay còn được gọi là các gettersetter.

Cách tiếp cận thứ nhất:

  • Định nghĩa cặp phương thức get / set để truy xuất và điều chỉnh thông tin cho thuộc tính tương ứng.
  • Xác lập tính chất ẩn của cặp phương thức này bằng cách thêm “__” vào phía trước tên phương thức. Thực ra chúng ta không bắt buộc phải thực hiện bước này. Chúng ta có thể sử dụng hai phương thức này ở các module khác. Nhưng chúng ta sẽ thấy rằng có đến 02 cách truy xuất và điều chỉnh dữ liệu: (i) thông qua một hình thức được gọi là properties; (ii) thông qua hai phương thức này. Và như vậy sẽ không phù hợp với triết lý của Python là chỉ nên có một cách thực hiện một tác vụ.
  • Định nghĩa hình thức properties bằng cách sử dụng phương thức đặc biệt là property(). Phương thức này có 04 tham số lần lượt là các phương thức được định nghĩa với ý nghĩa: (i) get() để truy xuất thuộc tính; (ii) set() để điều chỉnh thông tin thuộc tính; (iii) del() để xóa thông tin thuộc tính; (iv) doc() để tạo một mô tả cho thuộc tính. Ở đây chúng ta chỉ cần đến 02 tham số đầu tiên là get / set.
  • Chúng ta có thể sử dụng các properties này như là một thuộc tính của đối tượng. Theo quy tắc chung, tên của từng properties nên được đặt trùng với tên của thuộc tính, chỉ có một điểm khác là chữ cái đầu viết hoa.

Cách tiếp cận thứ hai:

  • Định nghĩa hình thức properties bằng cách sử dụng decorator @property.
  • Decorators là công cụ rất mạnh mẽ và hữu ích trong Python vì nó cho phép các lập trình viên sửa đổi hành vi của phương thức hoặc thuộc tính. Decorators cho phép chúng ta bọc một phương thức khác để mở rộng hành vi của phương thức được bọc, mà không sửa đổi vĩnh viễn. Chúng ta sẽ dần dần tìm hiểu kỹ thuật lập trình này trong những bài tiếp theo.

Bước 4.

Chúng ta định nghĩa constructor cho lớp đối tượng.

Những kỹ thuật lập trình cần chú ý:

  • Constructor là một dạng đặc biệt của phương thức, được sử dụng để khởi tạo các đối tượng.
  • Constructor được gọi tại thời điểm tạo đối tượng. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng, đó là lý do tại sao nó được gọi là constructor.
  • Khác với nhóm ngôn ngữ Java / C#, Python chỉ cung cấp một phương thức constructor duy nhất là __init__(). Chúng ta sẽ chủ động quyết định xem có để tham số cho constructor hay không. Cách thức được sử dụng ở đây là gán sẵn giá trị tên_tham_số = None và kiểm tra.
  • Từ khóa self giúp chúng ta liên hệ đến thuộc tính hoặc phương thức nội tại của lớp đối tượng. Chúng ta sử dụng từ khóa này để phân biệt khi muốn định nghĩa các biến có cùng tên với các thuộc tính hoặc phương thức nội tại của lớp.
  • Đối với thuộc tính chieuDai, chúng ta đã sử dụng cách tiếp cận thứ nhất bên trên để định nghĩa properties chieuDai. Do vậy chúng ta không cần định nghĩa tường minh thuộc tính này mà chỉ cần gọi phương thức ẩn __setChieuDai().
  • Đối với thuộc tính chieuRong, chúng ta đã sử dụng cách tiếp cận thứ hai bên trên để định nghĩa properties ChieuRong. Do vậy chúng ta định nghĩa tường minh thuộc tính ẩn __chieuRong.

Bước 5.

Chúng ta định nghĩa các phương thức tính chu vi và diện tích hình chữ nhật:

Bước 6.

Chúng ta thực hiện thử nghiệm tạo mới 02 hình chữ nhật và tính chu vi, diện tích:

Những kỹ thuật lập trình cần chú ý:

  • Để truy xuất đến những lớp đối tượng ở một package khác, chúng ta sử dụng từ khóa fromimport. Ví dụ ở đây là from object import HinhChuNhat.
  • Chúng ta khởi tạo một đối tượng thực bằng cách gọi tên của module và tên của lớp bên trong, ví dụ ở đây là MyClass(). Tùy thuộc vào tham số được truyền thì constructor __init__() sẽ thực thi việc khởi tạo giá trị tương ứng cho các thuộc tính.
  • Ví dụ ở đây. Đối tượng hinhChuNhatA được khởi tạo với constructor mặc định không có tham số. Như vậy sẽ sử dụng properties để điều chỉnh thông tin cho thuộc tính của đối tượng. Đối tượng hinhChuNhatB được khởi tạo với constructor có tham số.

Bước 7.

Chúng ta thực thi toàn bộ project để kiểm tra kết quả thử nghiệm:

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu những kiến thức cơ bản về lớp đối tượng cũng như những tính chất về lập trình hướng đối tượng.

Chúng ta đã cùng nhau thực hiện một ví dụ nhỏ về lớp đối tượng với ngôn ngữ Python.

Trong các bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kiến thức khác xung quanh lập trình hướng đối tượng.

Lập trình hướng đối tượng – Phần 1 – Cơ bản về lớp đối tượng – Csharp

Giới thiệu

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mô hình kiến trúc lập trình dựa trên khái niệm “công nghệ đối tượng”, mà trong đó, đối tượng chứa đựng các dữ liệu: (i) thuộc tính của đối tượng; (ii) phương thức để thực thi các hành động của đối tượng.

OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn.

Một số khái niệm cơ bản

Khái niệm đầu tiên là “đối tượng”, được hiểu như là 1 thực thể: người, vật hoặc 1 bảng dữ liệu, . . .

Một đối tượng bao gồm 2 thông tin chính:

  • Thuộc tính. Là những thông tin, đặc điểm của đối tượng. Ví dụ: một hình chữ nhật sẽ có chiều dài, chiều rộng, . . .
  • Phương thức. Là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một hình chữ nhật sẽ có thao tác tính chu vi, diện tích, . . .

Khái niệm thứ hai là “lớp”, được hiểu như là một khuôn mẫu mà từng đối tượng là một thể hiện cụ thể dựa trên khuôn mẫu đó.

Ví dụ một lớp hình chữ nhật sẽ định nghĩa: (i) các thuộc tính chiều dài / chiều rộng; (ii) các phương thức tính chu vi, tính diện tích. Còn từng đối tượng hình chữ nhật sẽ có số đo cụ thể cho từng thuộc tính cũng như chu vi và diện tích riêng.

Các tính chất của lập trình hướng đối tượng

Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):

  • Tính chất này không cho phép tác nhân bên ngoài thay đổi trạng thái nội tại của một đối tượng.
  • Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó.
  • Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

Tính trừu tượng (abstraction):

  • Là phương pháp trừu tượng hóa định nghĩa lên những hành động, tính chất của loại đối tượng nào đó cần phải có.
  • Mỗi đối tượng có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác.
  • Tính chất này thường được gọi là sự trừu tượng của dữ liệu.

Tính kế thừa (inheritance):

  • Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.
  • Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

Tính đa hình (polymorphism):

  • Thể hiện thông qua việc gửi các thông điệp (message).
  • Việc gửi các thông điệp này có thể so sánh như việc gọi các phương thức bên trong của một đối tượng.
  • Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau.

Xây dựng lớp đối tượng độc lập

Trong nội dung bài này, chúng ta cùng tìm hiểu cách xây dựng một lớp đối tượng độc lập cùng với tính chất đóng gói (encapsulation) bằng ngôn ngữ Csharp.

Bước 1.

Chúng ta tạo một Console Project trong MonoDevelop và đặt tên là CsharpOOPFirstProject.

Mặc định thì class Program.cs trong namespace CsharpOOPFirstProject với phương thức Main() được tạo ra.

Bước 2.

Chúng ta tạo class HinhChuNhat.cs và điều chỉnh namespace Object.

Những kỹ thuật lập trình cần chú ý:

  • Như đã trình bày ở phần Giới thiệu về Tính đóng gói (encapsulation) và che giấu thông tin (information hiding). Mỗi namespace có thể được xem như là một hình thức để gom nhóm các lớp đối tượng có cùng chung những đặc điểm nào đó.
  • Là một ngôn ngữ lập trình hướng đối tượng hoàn toàn, Csharp yêu cầu tất cả các lớp được định nghĩa phải thuộc một namespace nào đó.
  • Trong ví dụ hiện tại, chúng ta có thể đặt tên namespaceObject (nghĩa là đối tượng nói chung) hoặc Shape (nghĩa là hình vẽ nói chung).

Bước 3.

Chúng ta định nghĩa 02 thuộc tính cơ bản của một hình chữ nhật:

Những kỹ thuật lập trình cần chú ý:

  • Như đã trình bày ở phần Giới thiệu về đặc trưng của một lớp đối tượng. Các thuộc tính nội tại của một đối tượng thì chỉ có thể được trông thấy và điều chỉnh bởi các phương thức nội tại của chính đối tượng đó.
  • Chúng ta sử dụng từ khóa private được Csharp cung cấp. Thuộc tính này quy định một thuộc tính hoặc một phương thức là ẩn bên trong một lớp.

Bước 4.

Chúng ta định nghĩa các constructor cho lớp đối tượng:

Những kỹ thuật lập trình cần chú ý:

  • Constructor là một dạng đặc biệt của phương thức, được sử dụng để khởi tạo các đối tượng.
  • Constructor được gọi tại thời điểm tạo đối tượng. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng, đó là lý do tại sao nó được gọi là constructor.
  • Chú ý trong Csharp: (i) tên của constructor phải trùng với tên của lớp; (ii) constructor không có kiểu trả về.
  • Có 02 kiểu constructor: (i) kiểu mặc định không có tham số truyền vào; (ii) kiểu có tham số.
  • Từ khóa this giúp chúng ta liên hệ đến thuộc tính hoặc phương thức nội tại của lớp đối tượng. Chúng ta sử dụng từ khóa này để phân biệt khi muốn định nghĩa các biến có cùng tên với các thuộc tính hoặc phương thức nội tại của lớp.

Bước 5.

Chúng ta định nghĩa các phương thức đặc biệt truy xuất và điều chỉnh dữ liệu, được gọi là các properties với gettersetter:

Những kỹ thuật lập trình cần chú ý:

  • Csharp cung cấp một hình thức được gọi là properties để định nghĩa kiểu dữ liệu riêng cho việc truy xuất và điều chỉnh thông tin của các thuộc tính nội tại. Chúng ta có thể sử dụng các properties này như là một thuộc tính của đối tượng.
  • Theo quy tắc chung, tên của từng properties nên được đặt trùng với tên của thuộc tính, chỉ có một điểm khác là chữ cái đầu viết hoa.
  • Mỗi thuộc tính nên được theo kèm bởi một properties với cặp get / set tương ứng.

Bước 6.

Chúng ta định nghĩa các phương thức tính chu vi và diện tích hình chữ nhật:

Bước 7.

Chúng ta thực hiện thử nghiệm tạo mới 02 hình chữ nhật và tính chu vi, diện tích:

Những kỹ thuật lập trình cần chú ý:

  • Để truy xuất đến những lớp đối tượng ở một namespace khác, chúng ta sử dụng từ khóa using. Ví dụ ở đây là using object.
  • Chúng ta khởi tạo một đối tượng thực bằng cách gọi constructor của lớp đối tượng với toán tử new. Với constructor được gọi thì thuộc tính nội tại sẽ được khởi tạo với giá trị mặc định của nó.
  • Ví dụ ở đây. Đối tượng hinhChuNhatA được khởi tạo với constructor mặc định không có tham số. Như vậy sẽ sử dụng properties để điều chỉnh thông tin cho thuộc tính của đối tượng. Đối tượng hinhChuNhatB được khởi tạo với constructor có tham số.

Bước 8.

Chúng ta thực thi toàn bộ project để kiểm tra kết quả thử nghiệm:

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu những kiến thức cơ bản về lớp đối tượng cũng như những tính chất về lập trình hướng đối tượng.

Chúng ta đã cùng nhau thực hiện một ví dụ nhỏ về lớp đối tượng với ngôn ngữ Csharp.

Trong các bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kiến thức khác xung quanh lập trình hướng đối tượng.

Lập trình hướng đối tượng – Phần 1 – Cơ bản về lớp đối tượng – Java

Giới thiệu

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mô hình kiến trúc lập trình dựa trên khái niệm “công nghệ đối tượng”, mà trong đó, đối tượng chứa đựng các dữ liệu: (i) thuộc tính của đối tượng; (ii) phương thức để thực thi các hành động của đối tượng.

OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn.

Một số khái niệm cơ bản

Khái niệm đầu tiên là “đối tượng”, được hiểu như là 1 thực thể: người, vật hoặc 1 bảng dữ liệu, . . .

Một đối tượng bao gồm 2 thông tin chính:

  • Thuộc tính. Là những thông tin, đặc điểm của đối tượng. Ví dụ: một hình chữ nhật sẽ có chiều dài, chiều rộng, . . .
  • Phương thức. Là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một hình chữ nhật sẽ có thao tác tính chu vi, diện tích, . . .

Khái niệm thứ hai là “lớp”, được hiểu như là một khuôn mẫu mà từng đối tượng là một thể hiện cụ thể dựa trên khuôn mẫu đó.

Ví dụ một lớp hình chữ nhật sẽ định nghĩa: (i) các thuộc tính chiều dài / chiều rộng; (ii) các phương thức tính chu vi, tính diện tích. Còn từng đối tượng hình chữ nhật sẽ có số đo cụ thể cho từng thuộc tính cũng như chu vi và diện tích riêng.

Các tính chất của lập trình hướng đối tượng

Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):

  • Tính chất này không cho phép tác nhân bên ngoài thay đổi trạng thái nội tại của một đối tượng.
  • Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó.
  • Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

Tính trừu tượng (abstraction):

  • Là phương pháp trừu tượng hóa định nghĩa lên những hành động, tính chất của loại đối tượng nào đó cần phải có.
  • Mỗi đối tượng có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác.
  • Tính chất này thường được gọi là sự trừu tượng của dữ liệu.

Tính kế thừa (inheritance):

  • Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.
  • Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

Tính đa hình (polymorphism):

  • Thể hiện thông qua việc gửi các thông điệp (message).
  • Việc gửi các thông điệp này có thể so sánh như việc gọi các phương thức bên trong của một đối tượng.
  • Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau.

Xây dựng lớp đối tượng độc lập

Trong nội dung bài này, chúng ta cùng tìm hiểu cách xây dựng một lớp đối tượng độc lập cùng với tính chất đóng gói (encapsulation) bằng ngôn ngữ Java.

Bước 1.

Chúng ta tạo một Java Project trong Eclipse IDE và đặt tên là JavaOOPFirstProject.

Chúng ta tiếp tục tạo package mainclass Main.java cùng phương thức main() mặc định.

Bước 2.

Chúng ta tạo package objectclass HinhChuNhat.java.

Những kỹ thuật lập trình cần chú ý:

  • Như đã trình bày ở phần Giới thiệu về Tính đóng gói (encapsulation) và che giấu thông tin (information hiding). Mỗi package có thể được xem như là một hình thức để gom nhóm các lớp đối tượng có cùng chung những đặc điểm nào đó.
  • Là một ngôn ngữ lập trình hướng đối tượng hoàn toàn, Java yêu cầu tất cả các lớp được định nghĩa phải thuộc một package nào đó.
  • Trong ví dụ hiện tại, chúng ta có thể đặt tên packageobject (nghĩa là đối tượng nói chung) hoặc shape (nghĩa là hình vẽ nói chung).

Bước 3.

Chúng ta định nghĩa 02 thuộc tính cơ bản của một hình chữ nhật:

Những kỹ thuật lập trình cần chú ý:

  • Như đã trình bày ở phần Giới thiệu về đặc trưng của một lớp đối tượng. Các thuộc tính nội tại của một đối tượng thì chỉ có thể được trông thấy và điều chỉnh bởi các phương thức nội tại của chính đối tượng đó.
  • Chúng ta sử dụng từ khóa private được Java cung cấp. Từ khóa này quy định một thuộc tính hoặc một phương thức là ẩn bên trong một lớp.

Bước 4.

Chúng ta định nghĩa các constructor cho lớp đối tượng:

Những kỹ thuật lập trình cần chú ý:

  • Constructor là một dạng đặc biệt của phương thức, được sử dụng để khởi tạo các đối tượng.
  • Constructor được gọi tại thời điểm tạo đối tượng. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng, đó là lý do tại sao nó được gọi là constructor.
  • Chú ý trong Java: (i) tên của constructor phải trùng với tên của lớp; (ii) constructor không có kiểu trả về.
  • Có 02 kiểu constructor: (i) kiểu mặc định không có tham số truyền vào; (ii) kiểu có tham số.
  • Từ khóa this giúp chúng ta liên hệ đến thuộc tính hoặc phương thức nội tại của lớp đối tượng. Chúng ta sử dụng từ khóa này để phân biệt khi muốn định nghĩa các biến có cùng tên với các thuộc tính hoặc phương thức nội tại của lớp.

Bước 5.

Chúng ta định nghĩa các phương thức truy xuất và điều chỉnh dữ liệu, được gọi là các gettersetter:

Những kỹ thuật lập trình cần chú ý:

  • Đây chính là những phương thức nội tại được dành riêng để truy xuất và điều chỉnh thông tin cho các thuộc tính nội tại.
  • Theo quy tắc chung, tên của các phương thức này nên để getset đứng trước tên của thuộc tính.
  • Mỗi thuộc tính nên được theo kèm bởi một cặp get / set.

Bước 6.

Chúng ta định nghĩa các phương thức tính chu vi và diện tích hình chữ nhật:

Bước 7.

Chúng ta thực hiện thử nghiệm tạo mới 02 hình chữ nhật và tính chu vi, diện tích:

Những kỹ thuật lập trình cần chú ý:

  • Để truy xuất đến một lớp đối tượng ở một package khác, chúng ta sử dụng từ khóa import. Ví dụ ở đây là import object.HinhChuNhat.
  • Chúng ta khởi tạo một đối tượng thực bằng cách gọi constructor của lớp đối tượng với toán tử new. Với constructor được gọi thì thuộc tính nội tại sẽ được khởi tạo với giá trị mặc định của nó.
  • Ví dụ ở đây. Đối tượng hcnA được khởi tạo với constructor mặc định không có tham số. Đối tượng hcnB được khởi tạo với constructor có tham số.

Bước 8.

Chúng ta thực thi toàn bộ project để kiểm tra kết quả thử nghiệm:

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu những kiến thức cơ bản về lớp đối tượng cũng như những tính chất về lập trình hướng đối tượng.

Chúng ta đã cùng nhau thực hiện một ví dụ nhỏ về lớp đối tượng với ngôn ngữ Java.

Trong các bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kiến thức khác xung quanh lập trình hướng đối tượng.