Phương thức tùy chỉnh - Tổng hợp

Nhập/Xuất và Streams trong Java

Alex Liu

Software Development Engineer

Tích hợp các khái niệm

  • Kết hợp và sử dụng:
    • Enum
    • Ngày và Giờ
    • Đệ quy
  • Mục tiêu: xây dựng phương thức rõ ràng, tái sử dụng, dễ bảo trì

  • Chương trình ví dụ:

    • Một trang thương mại điện tử
      • hệ thống OrderStatus thực tiễn với phương thức theo dõi đơn
      • thuật toán chiết khấu khách hàng thân thiết.
Nhập/Xuất và Streams trong Java

Định nghĩa Enum với phương thức

  • Định nghĩa Enum OrderStatus để biểu diễn trạng thái đơn hàng
enum OrderStatus {
    PLACED("Order placed successfully"),
    DELIVERED("Order delivered");

private final String message; OrderStatus(String message) { this.message = message; } public String getMessage() { return message; } }
Nhập/Xuất và Streams trong Java

Phương thức tùy chỉnh cho thao tác Ngày

  • Dùng orderDate để ước tính ngày giao cho khách
    • Dùng .plusDays() để cộng ngày vào một ngày cho trước
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Nhập/Xuất và Streams trong Java

Phương thức đệ quy cho chiết khấu

  • Chính sách thưởng: tăng chiết khấu theo tháng để tri ân khách quay lại
    • Dùng phương thức đệ quy tính tổng chiết khấu:
public class DiscountCalculator {
    public static double cumulativeDiscount(int months) {
        if (months <= 0) return 0;
        return 5 + cumulativeDiscount(months - 1); // $5 discount per month
    }
}
Nhập/Xuất và Streams trong Java

Đối tượng tùy chỉnh

  • Tạo lớp Order chứa mọi thông tin đơn hàng
    • Thông tin chính: id, date, current status.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Nhập/Xuất và Streams trong Java

Đối tượng Customer với phương thức toString()

  • In hóa đơn sao cho nhân viên dễ đọc/xử lý
    • Định nghĩa phương thức toString() để quyết định cách in đối tượng Order.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Kết quả khi gọi .toString():
    Order[id=10015, date=2025-03-19]
    
Nhập/Xuất và Streams trong Java

Phương thức main

public class Main {
    public static void main(String[] args) {
        Order order = new Order(101, LocalDate.now());
        System.out.println(order.toString());

LocalDate delivery = OrderUtils.estimateDelivery(order.orderDate, 7); System.out.println("Estimated Delivery: " + delivery); System.out.println(OrderStatus.PLACED);
double discount = DiscountCalculator.cumulativeDiscount(3); System.out.println("Total Discount: $" + discount); } }
Nhập/Xuất và Streams trong Java

Phương thức main - đầu ra

  • Phương thức main chạy khi tạo đơn mới với thông tin sau:
    • Người dùng đã đăng ký 3 tháng
    • Thời gian giao dự kiến: 7 ngày
    • Trạng thái ban đầu: PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Nhập/Xuất và Streams trong Java

Ayo berlatih!

Nhập/Xuất và Streams trong Java

Preparing Video For Download...