Bài 1: Đối tượng
Đặt vấn đề
[sửa]Tưởng tượng ta đang viết chương trình quản lý một lớp gồm nhiều học sinh. Quản lý bao gồm việc thêm, xóa, sửa thông tin của học sinh và xử lý một số công việc như tính điểm trung bình của từng học sinh.
Với cách tiếp cận lập trình hàm, ta sẽ sử dụng nhiều mảng khác nhau để lưu trữ các thông tin khác nhau của học sinh. Ví dụ, ta sẽ có mảng lưu họ tên học sinh, một mảng lưu ngày sinh, một mảng lưu giới tính và tương tự các mảng cho từng môn học. Việc tính điểm trung bình của một học sinh cũng sẽ được thực hiện qua các hàm riêng biệt.
Ngược lại, với tư duy hướng đối tượng, người ta sẽ chỉ cần một mảng duy nhất. Mảng này không lưu trữ trực tiếp các thông tin họ tên, ngày sinh hay điểm số. Thay vào đó, nó sẽ lưu trữ các "học sinh". Bản thân mỗi "học sinh" trong mảng sẽ tự có những thuộc tính như họ tên, ngày sinh, giới tính và các điểm số. Hơn nữa, mỗi "học sinh" cũng sẽ có phương thức để tự tính điểm trung bình của mình.
Tiếp cận giải pháp
[sửa]Như đã nói ở mục trước, với tư duy hướng đối tượng, ta sẽ hình dung ra một "học sinh". Giả sử đã tồn tại một kiểu Student được một ai đó tạo ra, và chúng ta đóng vai trò là người sử dụng.
Chúng ta khai báo biến có kiểu là Student. Khi này, chúng ta gọi biến s là một đối tượng kiểu Student, và cũng có thể gọi s là một "học sinh".
Student s = new Student();
Để sửa đổi tên học sinh s, ta thực hiện gán giá trị cho s.name
Student s = new Student();
s.name = "Nguyen Van A";
Tương tự, ta thực hiện gán giá trị cho các thuộc tính khác.
Student s = new Student();
s.name = "Nguyen Van A";
s.birthday = "29/2/2004";
s.mathScore = 8.0;
s.historyScore = 5.5;
s.englishScore = 7.5;
Một đối tượng kiểu Student còn có một phương thức tự tính điểm trung bình, hãy dùng chúng bằng cách in ra s.average()
Student s = new Student();
s.name = "Nguyen Van A";
s.birthday = "29/2/2004";
s.mathScore = 8.0;
s.historyScore = 5.5;
s.englishScore = 7.5;
System.out.println(s.average()); // In ra màn hình: 7.0
Qua những đoạn mã trên, ta thấy một điểm đặc biệt là có những biến và hàm gắn liền với một biến khác. Để gọi được chúng, ta phải dùng toán tử dấu chấm. Đó là một trong những cú pháp đặc trưng của lập trình hướng dối tượng.
Đối tượng
[sửa]Trong lập trình hướng đối tượng, đối tượng là bất kỳ thứ gì có thuộc tính và phương thức.
Thuộc tính là các biến thuộc về một đối tượng, đại diện cho tính chất của đối tượng. Giá trị của thuộc tính được gọi là trạng thái của đối tượng. Trạng thái của đối tượng có thể thay đổi hoặc luôn giữ nguyên, nhưng thuộc tính thì luôn ở đó.
Phương thức là các hàm thuộc về một đối tượng, đại diện cho những hành động mà đối tượng có thể thực hiện. Cách mà phương thức được thực hiện gọi là hành vi của đối tượng. Cùng một phương thức nhưng đối tượng có thể có các hành vi khác nhau.