Lớp định nghĩa các thuộc tính (properties) và hành vi (behaviors) của đối tượng
Object-oriented programming (OOP) – Lập trình hướng đối tượng có nghĩa là lập trình sử dụng các đối tượng. Một đối tượng đại diện cho một thực thể trong thế giới thực có thể được xác định rõ ràng. Ví dụ, một sinh viên, một cái bàn, một vòng tròn, một nút nhấn và thậm chí một khoản vay đều có thể được xem như là các đối tượng. Mỗi đối tượng có định danh, trạng thái và hành vi nhất định.
- Trạng thái (state) của đối tượng còn gọi là thuộc tính (properties hay attributes) được biểu diễn bởi các trường dữ liệu (data fields) với các giá trị hiện tại của chúng. Ví dụ, đối tượng hình tròn (circle) có trường dữ liệu là radius (bán kính), đây là thuộc tính đặc trưng của hình tròn. Đối tượng hình chữ nhật (Rectangle) có trường dữ liệu là width và height, đây là các thuộc tính đặc trưng của hình chữ nhật.
- Hành vi (behavior) của đối tượng còn gọi là hành động của nó, được xác định bởi các phương thức. Để gọi phương thức của đối tượng là yêu cầu đối tượng thực hiện một hành động. Ví dụ, bạn định nghĩa phương thức getArea() và getPerimeter()cho đối tượng circle. Đối tượng circle gọi phương thức getArea() để trả về diện tích và getPerimeter() để trả về chu vi của hình tròn. Bạn cũng có thể định nghĩa phương thức setRadius(radius). Đối tượng circle có thể gọi phương thức này để thay đổi bán kính của nó.
Các đối tượng thuộc cùng một loại được định nghĩa bằng một lớp chung. Mỗi lớp là một khuôn mẫu, blue-print hoặc contract mà xác định các trường dữ liệu và phương thức của đối tượng. Đối tượng là thể hiện của lớp. Bạn có thể tạo nhiều thể hiện (instance) của lớp. Tạo một thể hiện được gọi là instantiation. Thuật ngữ đối tượng (object) và thể hiện (instance) thường có thể hoán đổi cho nhau. Mối quan hệ giữa lớp và đối tượng tương tự như giữa công thức làm bánh táo và bánh táo: Bạn có thể làm nhiều bánh táo bạn muốn từ một công thức. Hình 9.2 cho thấy một lớp có tên là Circle và ba đối tượng của nó.
Một lớp Java sử dụng các biến để định nghĩa các trường dữ liệu và các phương thức để định nghĩa các hành động. Ngoài ra, một lớp cung cấp các phương thức đặc biệt, được gọi là constructor (phương thức khởi tạo), phương thức này được gọi để tạo một đối tượng mới. Một constructor có thể thực hiện bất kỳ hành động nào, nhưng constructor được thiết kế để thực hiện các hành động khởi tạo, chẳng hạn như khởi tạo các trường dữ liệu của đối tượng. Hình 9.3 cho thấy một ví dụ về định nghĩa lớp cho các đối tượng hình tròn.
Hình 9.2 Một lớp là một khuôn mẫu để tạo các đối tượng
Hình 9.3 Một lớp là một cấu trúc mà định nghĩa các đối tượng có cùng một kiểu dữ liệu
Lớp Circle khác tất cả các lớp mà bạn đã thấy trong các phần trước. Nó không có phương thức main do đó không thể thực thi ứng dụng từ lớp này, nó chỉ đơn thuần là một định nghĩa cho các đối tượng hình tròn.
Hình minh hoạ của lớp và các đối tượng trong hình 9.2 có thể được chuẩn hoá bằng cách sử dụng ký hiệu UML. Ký hiệu này, được thể hiện trong hình 9.4 được gọi là sơ đồ lớp. Trong sơ đồ lớp, trường dữ liệu được biểu diễn là dataFieldName: dataFieldType. Constructor được biểu diễn là ClassName(parameterName: parameterType)
Hình 9.4: Lớp và các đối tượng được biểu diễn sử dụng ký hiệu UML
Trong sơ đồ UML trên phương thức được biểu thị là: methodName(parameterName: parameterType): returnType