icantech
Lập trình Java
1529
30/11/2023

Nắm vững kiến thức tính trừu tượng trong Java chỉ trong 10 phút

Tính trừu tượng trong Java là một trong những khái niệm quan trọng trong các tính chất của Java. Tính trừu tượng là thuộc tính mà nhờ đó các chi tiết thiết yếu được hiển thị đến người dùng. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về khái niệm, ý nghĩa và ưu điểm của tính trừu tượng trong ngôn ngữ lập trình Java.

1. Tính trừu tượng trong Java là gì?

Tính trừu tượng là quá trình ẩn các chi tiết trong quá trình triển khai và chỉ hiển thị chức năng cho người dùng. Nói cách khác, tính trừu tượng trong Java chỉ hiển thị những thông tin thiết yếu cho người dùng và ẩn đi các chi tiết bên trong. Ví dụ như khi bạn nhập văn bản và gửi tin nhắn sms, bạn sẽ chỉ nhìn thấy màn hình nhập văn bản và nhấn gửi đi mà không biết quá trình xử lý nội bộ việc gửi tin nhắn đó như thế nào.

tinh-truu-tuong-trong-java

Java là ngôn ngữ lập trình hướng đối tượng (OOP - Object Oriented Programming), chính vì thế mà tính trừu tượng được xem là một trong các tính chất của Java đóng vai trò quan trọng. Tính trừu tượng trong Java được triển khai bằng cách sử dụng các lớp trừu tượng (abstract classes) và giao diện trừu tượng (abstract interfaces).

2. Lớp trừu tượng và các phương thức trừu tượng

Lớp trừu tượng và các phương thức trừu tượng có những đặc điểm là:

  • Lớp trừu tượng là lớp được khai báo bằng từ khóa trừu tượng (từ khóa abstract)
  • Một phương thức trừu tượng là phương thức được khai báo mà không cần thực hiện.
  • Một lớp trừu tượng có thể có hoặc không có tất cả các phương thức trừu tượng. 
  • Một bản tóm tắt do phương thức định nghĩa phải luôn được định nghĩa lại trong lớp con, do đó bạn bắt buộc phải thực hiện ghi đè hoặc làm cho lớp con trở nên trừu tượng.
  • Bất kỳ lớp nào có chứa một hoặc nhiều phương thức trừu tượng cũng cần phải được khai báo bằng từ khóa trừu tượng.
  • Một lớp trừu tượng không thể có đối tượng.
  • Một lớp trừu tượng có thể chứa các hàm tạo được tham số hóa, hàm tạo mặc định luôn có trong một lớp trừu tượng.

3. Thuật toán triển khai tính trừu tượng

Trong Java, các thuật toán để triển khai tính trừu tượng như sau:

  • Xác định các lớp hoặc giao diện sẽ là một phần của sự trừu tượng.
  • Tạo một lớp hoặc giao diện trừu tượng để xác định các hành vi và thuộc tính chung của các lớp này.
  • Xác định các phương thức trừu tượng trong lớp hoặc giao diện trừu tượng mà không có bất kỳ chi tiết triển khai nào.
  • Thực hiện triển khai các lớp hoặc giao diện cụ thể để mở rộng khả năng trừu tượng.
  • Ghi đè các phương thức trừu tượng trong vào các lớp cụ thể để cung cấp cách triển khai cụ thể cho chúng.
  • Sử dụng các lớp cụ thể để thực hiện logic của chương trình.

4. Ưu điểm của tính trừu tượng

Là một trong số các tính chất của Java, tính trừu tượng có rất nhiều ưu điểm nổi bật có thể kể ra như:

  • Giảm thiểu sự phức tạp của việc người dùng phải xem mọi thứ
  • Hạn chế sự trùng lặp code và tăng khả năng tái sử dụng, bảo trì code
  • Giúp tăng tính bảo mật của ứng dụng hoặc chương trình
  • Cải thiện khả năng duy trì của ứng dụng
  • Giúp cải thiện các module của ứng dụng.
  • Quá trình nâng cấp trở nên dễ dàng vì không gây ảnh hưởng đến người dùng cuối. Bạn có thể thực hiện bất cứ thay đổi nào trong hệ thống nội bộ của mình.
  • Ẩn đi chi tiết triển khai và chỉ hiển thị thông tin có liên quan.
  • Cung cấp giao diện rõ ràng và đơn giản đến người dùng, giúp người dùng dễ hiểu và dễ sử dụng hơn.
  • Tăng cường bảo mật bằng cách ngăn chặn truy cập lạ vào chi tiết từng lớp nội bộ.
  • Cho phép sự linh hoạt trong việc triển khai chương trình, bạn có thể thực hiện các thay đổi với chi tiết triển khai cơ bản mà không làm ảnh hưởng đến giao diện người dùng.

5. Ví dụ tính trừu tượng trong Java

Để giúp bạn hiểu hơn về tính trừu tượng trong Java, chúng ta hãy cùng xem 2 ví dụ dưới đây.

Ví dụ 1:

// Java program to illustrate the

// concept of Abstraction

abstract class Shape {

     String color;

 

     // these are abstract methods

     abstract double area();

     public abstract String toString();

 

     // abstract class can have the constructor

     public Shape(String color)

     {

         System.out.println("Shape constructor called");

         this.color = color;

     }

 

     // this is a concrete method

     public String getColor() { return color; }

}

class Circle extends Shape {

     double radius;

 

     public Circle(String color, double radius)

     {

 

         // calling Shape constructor

         super(color);

         System.out.println("Circle constructor called");

         this.radius = radius;

     }

 

     @Override double area()

     {

         return Math.PI * Math.pow(radius, 2);

     }

 

     @Override public String toString()

     {

         return "Circle color is " + super.getColor()

             + "and area is : " + area();

     }

}

class Rectangle extends Shape {

 

    double length;

     double width;

 

     public Rectangle(String color, double length,

                     double width)

     {

         // calling Shape constructor

         super(color);

         System.out.println("Rectangle constructor called");

         this.length = length;

         this.width = width;

     }

 

     @Override double area() { return length * width; }

 

     @Override public String toString()

     {

         return "Rectangle color is " + super.getColor()

             + "and area is : " + area();

     }

}

public class Test {

     public static void main(String[] args)

     {

         Shape s1 = new Circle("Red", 2.2);

         Shape s2 = new Rectangle("Yellow", 2, 4);

 

         System.out.println(s1.toString());

         System.out.println(s2.toString());

     }

}
Output:

Shape constructor called

Circle constructor called

Shape constructor called

Rectangle constructor called

Circle color is Redand area is : 15.205308443374602

Rectangle color is Yellowand area is : 8.0
Ví dụ 2:

// Java Program to implement

// Java Abstraction

 

// Abstract Class declared

abstract class Animal {

     private String name;

 

     public Animal(String name) { this.name = name; }

 

     public abstract void makeSound();

 

     public String getName() { return name; }

}

 

// Abstracted class

class Dog extends Animal {

     public Dog(String name) { super(name); }

 

     public void makeSound()

     {

         System.out.println(getName() + " barks");

     }

}

 

// Abstracted class

class Cat extends Animal {

     public Cat(String name) { super(name); }

 

     public void makeSound()

     {

         System.out.println(getName() + " meows");

     }

}

 

// Driver Class

public class AbstractionExample {

     // Main Function

     public static void main(String[] args)

     {

         Animal myDog = new Dog("Buddy");

         Animal myCat = new Cat("Fluffy");

 

         myDog.makeSound();

         myCat.makeSound();

     }

}
Output:
Buddy barks

Fluffy meows

5. Lời Kết

Vậy là chúng ta đã cùng nhau tìm hiểu chi tiết về tính trừu tượng trong Java. Trừu tượng là một kỹ thuật được sử dụng để ẩn những chi tiết không cần thiết với người dùng cuối. Java cung cấp tính trừu tượng thông qua các lớp và giao diện trừu tượng. Trong khi các giao diện cung cấp khả năng trừu tượng 100% thì các lớp trừu tượng cung cấp khả năng trừu tượng một phần. Tùy thuộc vào thông tin nào của ứng dụng sẽ sẽ được hiển thị đến người dùng mà các nhà phát triển sẽ lựa chọn cách phù hợp.

Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình dưới đây tại ICANTECH nhé!

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình Java

Bài tương tự