- Các khái niệm trong lập trình hướng đối tượng
- Đối tượng là gì?
- Lớp là gì?
- Kế thừa là gì?
- Giao diện là gì?
- Gói là gì?
- Câu hỏi và bài tập
Lớp là gì?
Trong thế giới thực, bạn thường thấy nhiều đối tượng riêng lẻ thuộc cùng một loại.Có thể có hàng nghìn chiếc xe đạp cùng tồn tại, tất cả chúng đều giống nhau về cách sản xuất và mẫu mã. Mỗi chiếc xe đạp đã được tạo ra từ một tập thiết kế chung, vì thế chúng giống nhau về thành phần cấu tạo. Trong thuật ngữ hướng đối tượng, chúng ta nói rằng chiếc xe đạp là một thể hiện của một lớp các đối tượng có tên gọi là xe đạp. Một lớp là một bản thiết kế mà từ đó các đối tượng cụ thể được tạo ra.
Dưới đây có thể là một cách triển khai của lớp xe đạp:
[sourcecode lang=”java”]
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(intnewValue) {
cadence = newValue;
}
void changeGear(intnewValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed – decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
[/sourcecode]
Cú pháp của ngôn ngữ Java có vẻ mới lạ với bạn, nhưng thiết kế của lớp này được dựa trên những thảo luận trước đó về đối tượng xe đạp. Các trường casdence, speed và gear biễu diễn trạng thái của đối tượng xe đạp, và các phương thức (changeCadence, changeGear, speedUp, v.v.) định nghĩa các tương tác của nó với thế giới xung quanh.
Bạn có thể thấy rằng lớp Bicycle không chứa phương thức main. Đó là bởi vì nó chưa phải là ứng dụng hoàn thiện; nó chỉ là bản thiết kế cho những chiếc xe đạp mà có thể được dùng trong một ứng dụng. Trách nhiệm của việc tạo và sử dụng các đối tượng xe đạp thuộc về một số lớp khác trong ứng dụng của bạn.
Dưới đây là lớp BicycleDemo, nó tạo ra hai đối tượng xe đạp riêng biệt và gọi các phương thức của chúng:
[sourcecode lang=”java”]
classBicycleDemo {
public static void main(String[] args) {
// Tạo hai đối tượng
// của lớp Bicycle
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Gọi tới các phương thức
// của các đối tượng này
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
[/sourcecode]
Kết quả của đoạn mã trên là in ra giá trị mới nhất của tốc độ đạp xe, vận tốc và số đang được sử dụng của hai chiếc xe đạp:
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
Bài được dịch từ nguồn docs.oracle.com
Trans-team: PhúDĐ, NgọcNT, ĐạtDĐ, SơnĐH, HàĐT, ChàmNM
Sinh viên FPT Aptech Hà Nội
Trong lập trình OOP, xét từ mức nảy sinh ý tưởng cho ứng dụng tới việc triển khai dự án của ứng dụng đó thì:
+ Interface sẽ là cái nên nghĩ tới đầu tiên, nó là 1 bản mô tả cho bản thiết kế ứng dụng đó. Ví dụ trong xây dựng, khi nhận thầu và tìm hiểu dự án thì diện tích đất và yêu cầu khách hàng (nói mồm, bản thảo) sẽ là những thông tin mô tả cho dự án đó.
+ Thực sự nếu nói tới bản thiết kế của ứng dụng thì ta phải nói tới abstract class chứ không phải class. Abstract class đóng vai trò cho các lớp đối tượng để thừa kế, mở rộng các đặc tính.
+ Tiếp đến cuối cùng là các class extends / implements các Abstract Class / Interface. Nó đóng vai trò như là 1 khuôn mẫu để tạo ra các đối tượng cụ thể.
Thân!