Metode kustom - Menggabungkan semuanya

Input/Output dan Stream di Java

Alex Liu

Software Development Engineer

Mengintegrasikan Konsep

  • Gabungkan dan gunakan:
    • Enum
    • Tanggal dan Waktu
    • Rekursi
  • Tujuan: membangun metode yang jelas, dapat digunakan ulang, dan mudah dirawat

  • Contoh program:

    • Situs e-commerce
      • dengan sistem OrderStatus praktis dan metode pelacakan pesanan
      • dengan algoritme diskon loyalitas.
Input/Output dan Stream di Java

Mendefinisikan Enum dengan metode

  • Definisikan Enum OrderStatus untuk merepresentasikan status pesanan
enum OrderStatus {
    PLACED("Order placed successfully"),
    DELIVERED("Order delivered");

private final String message; OrderStatus(String message) { this.message = message; } public String getMessage() { return message; } }
Input/Output dan Stream di Java

Metode kustom untuk operasi Tanggal

  • Gunakan orderDate untuk memperkirakan kapan pesanan dikirim ke pelanggan
    • Metode .plusDays() menambah hari ke tanggal tertentu
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Input/Output dan Stream di Java

Metode rekursif untuk diskon

  • Kebijakan hadiah: Diskon bertambah per bulan untuk pelanggan setia
    • Gunakan metode rekursif untuk menghitung diskon kumulatif:
public class DiscountCalculator {
    public static double cumulativeDiscount(int months) {
        if (months <= 0) return 0;
        return 5 + cumulativeDiscount(months - 1); // $5 discount per month
    }
}
Input/Output dan Stream di Java

Objek kustom

  • Buat kelas Order yang memuat semua info terkait pesanan
    • Memuat info penting seperti id, tanggal, dan status saat ini.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Input/Output dan Stream di Java

Objek Customer dengan metode toString()

  • Kita ingin mencetak order agar mudah dibaca/diproses karyawan
    • Definisikan metode toString() untuk menentukan cara objek Order dicetak.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Contoh output saat memanggil .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output dan Stream di Java

Metode 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); } }
Input/Output dan Stream di Java

Metode main - output

  • Metode main ini dijalankan saat order baru dibuat dengan info berikut:
    • Pengguna sudah berlangganan 3 bulan
    • Perkiraan waktu kirim 7 hari
    • Status awal order adalah PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output dan Stream di Java

Ayo berlatih!

Input/Output dan Stream di Java

Preparing Video For Download...