0
0
Lập trình
Admin Team
Admin Teamtechmely

Tìm Hiểu Chi Tiết về Tính Đóng Gói (Encapsulation) trong Java: Nguyên Lý Cơ Bản của Lập Trình Hướng Đối Tượng

Đăng vào 3 tuần trước

• 5 phút đọc

Giới Thiệu

Trong lập trình Java, tính đóng gói (encapsulation) là một trong những nguyên lý quan trọng nhất của lập trình hướng đối tượng. Nó không chỉ giúp bảo vệ và quản lý mã nguồn mà còn cải thiện tính bảo mật và khả năng mở rộng của ứng dụng. Bài viết này sẽ đi sâu vào khái niệm tính đóng gói, cách cài đặt và áp dụng nó trong thực tế.

Tổng Quan Về Tính Đóng Gói Trong Java

Tính đóng gói cho phép chúng ta ẩn thông tin bên trong class và bảo vệ các thành phần khỏi sự truy cập bất hợp pháp từ bên ngoài. Việc này được thực hiện thông qua việc sử dụng các phạm vi truy cập như public, private và protected, giúp xác định quyền truy cập của các biến và phương thức trong một class.

Trong Java, chúng ta thường sử dụng các từ khóa truy cập để kiểm soát quyền truy cập của các thành phần trong class. Điều này giúp chúng ta tạo ra một môi trường an toàn và dễ dàng quản lý mã nguồn.

Hãy tưởng tượng rằng bạn đang xây dựng một ứng dụng quản lý ngân hàng. Để bảo vệ các thông tin nhạy cảm như số tài khoản và số dư, bạn có thể áp dụng tính đóng gói như sau:

java Copy
public class BankAccount {
    private String accountNumber; // Số tài khoản
    private double balance; // Số dư

    public void deposit(double amount) {
        balance += amount;
    }

    public void withdraw(double amount) {
        if (amount <= balance) {
            balance -= amount;
        } else {
            System.out.println("Số dư không đủ để thực hiện giao dịch.");
        }
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public double getBalance() {
        return balance;
    }
}

Trong ví dụ trên, thông tin về số tài khoản và số dư được khai báo là private, có nghĩa là chỉ có thể được truy cập từ bên trong class BankAccount. Các phương thức công khai như depositwithdraw cho phép chúng ta thực hiện các giao dịch một cách bảo mật hơn.

Ví Dụ Trong Quản Lý Nhân Viên

Để minh họa cách sử dụng tính đóng gói trong Java, chúng ta sẽ xem xét một ví dụ với class Employee, đại diện cho thông tin của một nhân viên trong một công ty:

java Copy
public class Employee {
    private String name; // Tên nhân viên
    private int age; // Tuổi
    private double salary; // Lương

    public Employee(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public double getSalary() {
        return salary;
    }
}

Class Employee sử dụng tính đóng gói để bảo vệ thông tin như tên, tuổi và lương. Chỉ thông qua các phương thức getter mà chúng ta có thể lấy được thông tin này, từ đó ngăn chặn việc sửa đổi không mong muốn từ bên ngoài.

Ví Dụ Trong Hệ Thống Quản Lý Trường Học

Hãy cùng xem xét một ví dụ phức tạp hơn liên quan đến hệ thống quản lý trường học với các class như Teacher, Student, và Course. Điều này giúp chúng ta hiểu rõ hơn về tính đóng gói trong một hệ thống lớn:

java Copy
import java.util.ArrayList;
import java.util.List;

class Teacher {
    private String name;
    private String subject;

    public Teacher(String name, String subject) {
        this.name = name;
        this.subject = subject;
    }

    public String getName() {
        return name;
    }

    public String getSubject() {
        return subject;
    }
}

class Student {
    private String name;
    private int grade;

    public Student(String name, int grade) {
        this.name = name;
        this.grade = grade;
    }

    public String getName() {
        return name;
    }

    public int getGrade() {
        return grade;
    }
}

class Course {
    private String courseName;
    private List<Student> students = new ArrayList<>();

    public Course(String courseName) {
        this.courseName = courseName;
    }

    public void enrollStudent(Student student) {
        students.add(student);
    }

    public void displayStudents() {
        for (Student student : students) {
            System.out.println("Học sinh: " + student.getName() + ", Điểm: " + student.getGrade());
        }
    }
}

class School {
    private List<Teacher> teachers = new ArrayList<>();
    private List<Course> courses = new ArrayList<>();

    public void addTeacher(Teacher teacher) {
        teachers.add(teacher);
    }

    public void addCourse(Course course) {
        courses.add(course);
    }
}

Trong ví dụ này, các class Teacher, Student, và Course đều sử dụng tính đóng gói để bảo vệ thông tin cá nhân và cho phép truy cập qua các phương thức công khai. Class School quản lý tất cả các giáo viên và khóa học, giúp tổ chức thông tin một cách khoa học và bảo mật.

Kết Luận

Tính đóng gói là một nguyên lý thiết yếu trong Java, góp phần tạo ra mã nguồn dễ bảo trì, an toàn và có tổ chức. Việc áp dụng tính đóng gói một cách thông minh giúp lập trình viên kiểm soát quyền truy cập và tạo ra các ứng dụng mạnh mẽ và linh hoạt.
Chúng ta hãy xem xét tính đóng gói không chỉ như một kỹ thuật, mà còn là một cách thức tư duy trong việc xây dựng phần mềm bền vững và chất lượng cao.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào