Aangepaste methoden - Alles samenbrengen

Input/Output en streams in Java

Alex Liu

Software Development Engineer

Concepten integreren

  • Combineer en gebruik:
    • Enums
    • Datum en tijd
    • Recursie
  • Doel: duidelijke, herbruikbare en onderhoudbare methoden bouwen

  • Voorbeeldprogramma:

    • Een e-commercesite
      • met praktisch OrderStatus-systeem en trackingmethoden
      • met loyaliteitskorting-algoritme.
Input/Output en streams in Java

Enum met methoden definiëren

  • Definieer OrderStatus-Enum voor orderstatussen
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 en streams in Java

Aangepaste datum-methode

  • Gebruik orderDate om de bezorgdatum te schatten
    • Methode .plusDays() voegt dagen toe aan een datum
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Input/Output en streams in Java

Recursieve methode voor korting

  • Beloningsbeleid: maandelijkse korting voor terugkerende klanten
    • Gebruik een recursieve methode voor de cumulatieve korting:
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 en streams in Java

Aangepast object

  • Maak een Order-klasse met alle orderinfo
    • Bevat kerngegevens zoals id, datum en huidige status.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Input/Output en streams in Java

Customer-object met toString()-methode

  • We willen de order zo printen dat het voor de medewerker makkelijk te lezen/verwerken is
    • Definieer de methode toString() om te bepalen hoe het Order-object wordt geprint.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Voorbeeldoutput via .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output en streams in Java

Main-methode

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 en streams in Java

Main-methode - output

  • Deze main-methode draait wanneer een nieuwe order wordt geplaatst met:
    • De gebruiker is al 3 maanden geabonneerd
    • De geschatte levertijd is 7 dagen
    • Orderstatus is initieel PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output en streams in Java

Laten we oefenen!

Input/Output en streams in Java

Preparing Video For Download...