Bài 1. Lập trình hướng đối tượng
1. Khái niệm
OOP là viết tắt của Object-Oriented Programing (Lập trình hướng đối tượng), nó cấu trúc code phân chia theo Classes → Objects → Attributes → Methods
2. Phân biệt lập trình cấu trúc và hướng đối tượng
Lập trình cấu trúc là gì
Cách viết code trước đây (sử dụng các hàm trong một file duy nhất) là lập trình theo hướng cấu trúc.
Bạn có thể thấy khi viết code theo kiểu này sẽ không có sự liên kết giữa các file trong một thư mục vì vậy code sẽ không tối ưu và phải viết rất nhiều.
Tại sao hướng đối tượng có ưu thế hơn
So với lập trình cấu trúc thì hướng đối tượng sẽ:
Nhanh hơn và dễ hơn
Cấu trúc rõ ràng dễ hiểu, dễ bảo trì, sửa lỗi
Có thể tái sử dụng giúp thời gian phát triển code ngắn hơn
3. Lập trình hướng đối tượng
Nhìn ảnh trên có lẽ bạn đã hiểu khá tổng quát về hướng đối tượng rồi
Mình sẽ nói theo cách mình hiểu nhé:
Object (đối tượng)
- Object là một đối tượng cụ thể (ở đây là Mèo Crosby)
- Đối tượng phải là cụ thể nhé, nghĩa là phải rõ ràng 1 đối tượng nào đó chứ các đối tượng như Dog (chó), Tree (cây cối) là các lớp vì nó không chỉ rõ một sự vật nào cả mà nói chung chung
Attribute (thuộc tính)
- Là các thuộc tính của đối tượng (thường là danh từ)
- Tên: Crosby
- Tuổi: 3
- Giới tính: cái
- Màu mắt: đen vàng
- Lưu ý: Các thuộc tính này là thuộc tính của đối tượng Cat Crosby bên trên
Methods (phương thức)
- Methods là các phương thức của đối tượng (thường là động từ)
- Chạy:
- Bắt chuột:
- Kêu: Meow-meow
- Lưu ý: Các phương thức này là phương thức của đối tượng Cat Crosby bên trên
Classes (lớp)
- Classes là một lớp (gồm nhiều đối tượng)
- Đối tượng: Bronson
- Đối tượng: Chester
- Đối tượng: Bobby
- Lưu ý: các lớp là gồm nhiều các đối tượng Cat bên trên
- Có thể gọi đây là "lớp Cat" chứa các đối tượng Bronson, Chester, Bobby
Ví dụ:
Lớp Hoa gồm: hoa lan, hoa hồng, hoa cẩm tú cầu, ...
Lớp Động vật gồm: heo, chó, gà, dê, ...
Lớp Người đẹp trai gồm: Trần Đang, Hữu Đang, Đang Trần, ...
4. Biểu diễn bằng code
Nãy giờ chỉ là lý thuyết thôi (dài mún chét 😭) và bây giờ là vào code nhá
Bây giờ chúng ta cùng nhau xây dựng các đối tượng, lớp, phương thức và thuộc tính bằng code Java nhé
Tạo project
Đầu tiên các bạn tạo project và các packages như hình sau nhé
Giải thích:
- javaoop.objects sẽ chứa các đối tượng trong project
- javaoop.main sẽ chứa phương thức main để hạy cương trình
Tạo lớp đối tượng
Tạo một Java Class trong package javaoop.objects, ví dụ ở đây mình tạo lớp Cat
- Lưu ý: tên lớp phải viết hoa chữ đầu tiên nha Cat.java
Tạo thuộc tính cho đối tượng
Các bạn tạo thuộc tính giống như tạo biến vậy nha
public class Cat {
String name = "Crosby"; // thuộc tinh tên
int age = 3; // thuộc tính tuổi
String eyesColor = "Đen vàng"; // thuộc tính màu mắt
}
Tạo phương thức cho đối tượng
Các bạn tạo phương thức phía dưới thuộc tính
public class Cat {
public String name = "Crosby"; // thuộc tinh tên
public int age = 3; // thuộc tính tuổi
public String eyesColor = "Đen vàng"; // thuộc tính màu mắt
// phương thức bắt chuột
public void mice(){
System.out.println("Mèo đang bắt chuột");
}
// phương thức kêu
public void squeaks(){
System.out.println("Meow meow !!!");
}
}
Giải thích về public
- Từ khóa public giúp mình có thể gọi trực tiếp thuộc tính trong lớp khác
Tạo đối tượng từ lớp khác
Đầu tiên mình sẽ tạo lớp Main bên package javaoop.main nhé
public class Main {
public static void main(String[] args) {
// viết code ở đây
}
}
Gọi lại đối tượng
public class Main {
public static void main(String[] args) {
// khởi tạo đối tượng Cat bằng cách gọi từ lớp Cat
Cat cat1 = new Cat();
}
}
Xuất giá trị thuộc tính
Bên Cat hiện đã có giá trị mặc định cho các thuộc tính
- name = Crosby
- age = 3
- eyesColor = Đen vàng
chúng ta có thể xuất ra xem thử nhé
public class Main {
public static void main(String[] args) {
// khởi tạo đối tượng Cat bằng cách gọi từ lớp Cat
Cat cat1 = new Cat();
System.out.println("tên mèo là: " + cat1.name);
}
}
// Output: tên mèo là: Crosby
Các bạn nhớ để đặc tả public phía trước thuộc tính nha, không thôi lỗi đó
Gọi phương thức của đối tượng
Bên Cat hiện đã có các phương thức
- mice(): phương thức bắt chuột
- squeaks(): phương thức kêu
public class Main {
public static void main(String[] args) {
// khởi tạo đối tượng Cat bằng cách gọi từ lớp Cat
Cat cat1 = new Cat();
cat1.mice();
cat1.squeaks();
}
}
/* Output:
Mèo đang bắt chuột
Meow meow !!!
*/