Tổng quan dự án và thiết kế UML
Thuộc phần Lập trình hướng đối tượng trong hành trình Java của Coddy. Bài học 77 trên 87.
Thử thách
DễHãy bắt đầu dự án Hệ thống quản lý thư viện bằng cách xây dựng nền tảng: các lớp thực thể cốt lõi mà mọi thành phần khác sẽ dựa vào. Thử thách đầu tiên này tập trung vào việc tạo các lớp Book và User có cấu trúc tốt để mô hình hóa các thực thể cốt lõi của hệ thống.
Bạn sẽ sắp xếp code trong ba tệp:
Book.java: Tạo lớpBookđại diện cho một cuốn sách trong thư viện. Mỗi cuốn sách cần có các thuộc tính private gồmisbn(String),title(String),author(String) vàisAvailable(boolean, mặc định làtrue). Thêm hàm khởi tạo nhận isbn, title và author. Tạo các phương thức getter phù hợp cho tất cả thuộc tính và một phương thức setter choisAvailable. Thêm phương thứcgetDetails()trả về một chuỗi có định dạng:[isbn] title by author.User.java: Tạo lớpUserđại diện cho một thành viên thư viện. Mỗi người dùng cần có các thuộc tính private gồmid(String) vàname(String). Thêm hàm khởi tạo nhận cả hai giá trị và tạo các phương thức getter cho từng thuộc tính. Thêm phương thứctoString()trả về:User[id]: name.Main.java: Kết hợp các lớp để chứng minh chúng hoạt động chính xác. Bạn sẽ nhận năm đầu vào: ISBN, tiêu đề, tác giả của một cuốn sách, sau đó là ID và tên của người dùng.Tạo một
Bookbằng ba đầu vào đầu tiên và mộtUserbằng hai đầu vào cuối. In thông tin chi tiết của sách bằnggetDetails(), sau đó in trạng thái sách còn hay không còn trong thư viện theo định dạngAvailable: truehoặcAvailable: false. Cuối cùng, in thông tin người dùng bằng phương thứctoString().
Bạn sẽ nhận năm đầu vào theo thứ tự: ISBN (String), tiêu đề (String), tác giả (String), ID người dùng (String) và tên người dùng (String).
Ví dụ, với các đầu vào 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 và Alice Smith, đầu ra sẽ là:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithCác lớp nền tảng này sẽ là những khối xây dựng cho toàn bộ Hệ thống quản lý thư viện. Trong các bài học sắp tới, bạn sẽ mở rộng chúng với chức năng mượn sách, khả năng tìm kiếm và nhiều tính năng khác!
Tự làm thử
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Đọc thông tin sách
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Đọc thông tin người dùng
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Tạo đối tượng Book với isbn, title và author
// TODO: Tạo đối tượng User với userId và userName
// TODO: In ra thông tin chi tiết của sách bằng getDetails()
// TODO: In ra trạng thái sách có sẵn hay không (định dạng: "Available: true" hoặc "Available: false")
// TODO: In ra thông tin người dùng bằng toString()
}
}
Tất cả bài học trong Lập trình hướng đối tượng
1Kiến thức cơ bản về lập trình hướng đối tượng
Tệp bên ngoàiGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTừ khóa thisPhương thứcTrường (thuộc tính)Phương thức khởi tạoNạp chồng phương thức khởi tạoÔn tập: Máy tính đơn giản4Kế thừa
Kế thừa cơ bản (extends)Từ khóa superGhi đè phương thức (@Override)Chuỗi gọi hàm khởi tạoLớp ObjectKế thừa đơn và đa cấpVì sao không hỗ trợ kế thừa nhiều lớpÔn tập: Phân cấp lớp Employee7Phương thức đặc biệt và lớp Object
Phương thức toString()equals() và hashCode()Phương thức clone()compareTo() và ComparableGiao diện ComparatorÔn tập: sắp xếp tùy chỉnh10Xử lý ngoại lệ trong OOP
Phân cấp lớp ngoại lệNgoại lệ tùy chỉnhLỗi có kiểm tra và không kiểm traMẫu try-with-resourcesÔn tập: người dùng đã xác thực13Dự án: Quản lý thư viện
Tổng quan dự án và thiết kế UMLLớp sách và người dùngHệ thống mượn sáchChức năng tìm kiếmGiao diện quản trịTích hợp xử lý ngoại lệKiểm thử và tích hợp2Bộ điều chỉnh quyền truy cập và đóng gói
Tổng quan về các mức truy cậpPhương thức getter và setterẨn thông tinTừ khóa finalÔn tập: Trình quản lý tài khoản ngân hàng5Tính đa hình
Kiến thức cơ bản về nạp chồng phương thứcGhi đè phương thức (thời gian chạy)Chuyển kiểu lên và chuyển kiểu xuốngToán tử instanceofLớp và phương thức trừu tượngÔn tập: máy tính hình học8Khái niệm OOP nâng cao
Kết hợp và kế thừaKết tập và hợp thànhLớp bên trong, lớp lồng nhau và lớp ẩn danhKiểu enum và phương thức enumBản ghi (Java 16+)Lớp sealed (Java 17+)3Thuộc tính lớp và thành viên tĩnh
Biến của instance và biến tĩnhPhương thức tĩnhKhối tĩnhHằng số (static final)Ôn tập: bộ đếm và tiện ích6Giao diện và lớp trừu tượng
Giới thiệu về giao diệnTriển khai giao diệnTriển khai nhiều giao diệnPhương thức mặc định và tĩnh trong giao diệnLớp trừu tượng và giao diệnGiao diện hàmÔn tập: hệ thống thanh toán9Kiểu tổng quát
Giới thiệu về kiểu tổng quátLớp tổng quátPhương thức tổng quátTham số kiểu có giới hạnKý tự đại diện (?, extends, super)Ôn tập: vùng chứa tổng quát12Mẫu thiết kế, phần 2
Mẫu CommandMẫu AdapterMẫu DecoratorMẫu Template MethodMẫu StateMẫu CompositeMẫu IteratorTự luyện tập: Trình biên dịch Java online