Lớp trừu tượng (Abtraction Class) là gì? Ví dụ minh họa cụ thể
Lớp trừu tượng (Abtraction Class) là gì? Có ví dụ minh họa cụ thể ra sao? Trong nội dung bài viết dưới đây, FUNiX sẽ chia sẻ cụ thể cho bạn!
>> Lập trình hướng đối tượng (bằng Java)
Trong lập trình hướng đối tượng, trừu tượng (abstraction) là một trong những nguyên lý cơ bản và quan trọng. Nó giúp người lập trình ẩn đi những chi tiết phức tạp và chỉ làm việc với những tính năng quan trọng, dễ hiểu và dễ sử dụng. Một trong những công cụ chính để thực hiện trừu tượng trong lập trình hướng đối tượng là lớp trừu tượng (abstract class).
1. Lớp trừu tượng (Abtraction Class) là gì?
Lớp trừu tượng (Abtraction Class) là một lớp được khai báo với keyword abstract. Hay nói cách khác, là lớp dùng để khai báo thuộc tính và phương thức cho các lớp khác sử dụng.
Lớp trừu tượng (Abtraction Class) không thể khởi tạo tham số mà chỉ khai báo. Nó được dùng như một lớp cha (base class) của các lớp có cùng bản chất như kiểu, loại, nhiệm vụ. Theo đó, mỗi lớp dẫn xuất (derived class – lớp con) có thể thừa kế từ một lớp trừu tượng.


Ví dụ:
//tạo một lớp trừu tượng
abstract class Language {
//thân lớp trừu tượng
}
…
//tạo một đối tượng Language sẽ gây lỗi
Language obj = new Language();
Khi cần mô tả các loại hành vi chung và phân cấp lớp lập trình hướng đối tượng, chúng ta sử dụng lớp trừu tượng (Abtraction Class). Ngoài ra, nó cũng được dùng để mô tả các lớp con và cung cấp chi tiết thực hiện của lớp trừu tượng.
>> Đọc bài viết: 5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX
2. Tại sao phải sử dụng Lớp Trừu Tượng?
Lớp trừu tượng được sử dụng để giải quyết một số vấn đề quan trọng trong lập trình hướng đối tượng, bao gồm:
2.1. Ẩn giấu chi tiết cài đặt (Hiding implementation details):
Khi bạn tạo một lớp trừu tượng, bạn có thể ẩn các chi tiết phức tạp và chỉ làm việc với các phương thức trừu tượng, giúp người dùng dễ dàng sử dụng mà không cần quan tâm đến cách thức cài đặt chi tiết.
2.2. Đảm bảo tính kế thừa (Ensuring inheritance):
Một lớp trừu tượng có thể định nghĩa các phương thức trừu tượng mà các lớp con bắt buộc phải cài đặt. Điều này giúp các lớp con tuân thủ một cấu trúc chung, đồng thời duy trì tính kế thừa trong hệ thống các lớp.
2.3. Tạo sự linh hoạt và mở rộng (Flexibility and extendibility):
Lớp trừu tượng tạo ra một giao diện chung cho các lớp con, từ đó giúp bạn dễ dàng mở rộng chương trình mà không làm thay đổi cấu trúc các lớp con đã có. Khi bạn muốn thay đổi hoặc mở rộng các chức năng, bạn chỉ cần thêm hoặc sửa đổi các lớp con mà không ảnh hưởng đến các lớp khác.
3. Cấu Trúc của Lớp Trừu Tượng
Lớp trừu tượng có thể bao gồm:
-
Các phương thức trừu tượng (abstract methods): Là các phương thức không có phần thân, chỉ có khai báo, yêu cầu các lớp con phải cài đặt. Điều này giúp định nghĩa một giao diện chung mà các lớp con phải tuân theo.
-
Các phương thức cụ thể (concrete methods): Là các phương thức có phần thân, có thể được sử dụng trực tiếp hoặc có thể bị ghi đè (override) bởi các lớp con.
-
Các thuộc tính (fields): Lớp trừu tượng có thể có các thuộc tính, nhưng các thuộc tính này không bắt buộc phải được cài đặt hoặc ghi đè trong lớp con.
-
Kế thừa từ lớp trừu tượng: Các lớp con có thể kế thừa và cài đặt các phương thức trừu tượng từ lớp trừu tượng. Mỗi lớp con cần cài đặt các phương thức trừu tượng của lớp cha (lớp trừu tượng), nếu không lớp con đó sẽ trở thành lớp trừu tượng.
4.Ví dụ minh họa cụ thể của lớp trừu tượng
Ví dụ 1:
Giả sử bạn muốn tạo một ứng dụng bệnh viện và bạn được yêu cầu thu thập tất cả thông tin về bệnh nhân của bạn. Có nhiều khả năng bạn sẽ đưa ra thông tin sau đây về bệnh nhân như: Full Name, Address, Contact Number, Tax Information, Favorite Food, Favorite Movie, Favorite Actor, Favorite Band,….
Nhưng, không phải tất cả các thông tin trên đều cần bắt buộc phải có để tạo một ứng dụng bệnh viện. Vì vậy, bạn chỉ cần chọn thông tin hữu ích cho ứng dụng bệnh viện của mình từ nhóm đó. Chẳng hạn như: tên, tuổi, địa chỉ, tình trạng bệnh,… liên quan và có nghĩa đối với ứng dụng bệnh viện.
Bởi vì, chúng ta đã tìm nạp, xóa, chọn thông tin bệnh nhân từ một nhóm lớn hơn, quá trình này được gọi là trừu tượng hóa. Tuy nhiên, thông tin tương tự sẽ được sử dụng cho nhiều ứng dụng sau khi được trích xuất. Chẳng hạn, bạn có thể sử dụng cùng một dữ liệu cho ứng dụng ngân hàng, ứng dụng cổng thông tin việc làm, cơ sở dữ liệu của Chính phủ,… với rất ít hoặc không sửa đổi.


>>> Xem thêm: Từ A-Z chương trình học FUNiX – Mô hình đào tạo lập trình trực tuyến số 1 Việt Nam
Ví dụ 2:
Khi viết chương trình vẽ một hình bất kỳ với màu xanh, sao cho cách sử dụng là giống nhau, bất kể đó là hình gì. Hình đó có thể là hình tròn (circle), hình chữ nhật (rectangle),, tam giác (triangle), đường (line), …
Trước tiên, chúng ta sẽ tạo một lớp trừu tượng (Abtraction Class) có tên gọi là Shape. Lớp này cung cấp một phương thức trừu tượng draw nhằm đảm bảo tất cả các hình đều có cùng cách sử dụng. Ngoài ra, có phương thức không trừu tượng getColor để cung cấp màu sử dụng chung cho tất cả các hình. Tiếp theo, chúng ta tạo 2 lớp Rectangle và Circle kế thừa từ lớp Shape để có những cách xử lý draw khác nhau. Sau cùng, chúng ta tạo class ShapeApp để vẽ hình theo yêu cầu.
Shape.java:
1public abstract class Shape {
2 private String color = “green”;
3
4 public Shape() {
5
6 }
7
8 public abstract void draw();
9
10 public String getColor() {
11 return color;
12 }
13 }
Rectangle.java:
1public class Rectangle extends Shape {
2
3 @Override
4 public void draw() {
5 System.out.println(“Draw ” + super.getColor() + ” rectangle”);
6 }
7
8 }
Circle.java:
1public class Circle extends Shape {
2
3 @Override
4 public void draw() {
5 System.out.println(“Draw ” + super.getColor() + ” circle”);
6 }
7
8}
ShapeApp.java:
1public class ShapeApp {
2 public static void main(String[] args) {
3 Shape rect = new Rectangle();
4 rect.draw();
5 System.out.println(“—“);
6 Shape circle = new Circle();
7 circle.draw();
8 }
9}
Kết quả:
Draw red rectangle
—
Draw red circle
Như vậy, lớp trừu tượng trong lập trình hướng đối tượng là tính chất đơn giản nhưng không kém phần quan trọng. Vì nó sẽ được sử dụng thường xuyên trong các bài toán liên quan đến trừu tượng. Mong rằng, qua nội dung bài viết chia sẻ về khái niệm lớp trừu tượng (Abtraction Class) là gì? Cùng ví dụ minh họa cụ thể của FUNiX trên đây sẽ giúp bạn hiểu và biết cách ứng dụng hiệu quả vào công việc lập trình của mình.
>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:
>>> Xem thêm nhiều hơn bài viết tại đây:
- 5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX
- Từ A-Z chương trình học FUNiX – Mô hình đào tạo lập trình trực tuyến số 1 Việt Nam
- Lý do phổ biến khiến học viên nước ngoài chọn FUNiX
- Lưu ý để học blockchain trực tuyến hiệu quả cao tại FUNiX
- Lý do nữ giới nên chọn FUNiX để học chuyển nghề IT
- FUNiX trở thành đối tác của Liên minh Blockchain Việt Nam
- 3 lý do bạn trẻ nên học blockchain trực tuyến ở FUNiX
Phạm Thị Thanh Ngọc
Bình luận (0
)