Vlastní metody – vše dohromady

Input/Output and Streams in Java

Alex Liu

Software Development Engineer

Integrace konceptů

  • Kombinujte a používejte:
    • Výčty (Enums)
    • Datum a čas
    • Rekurzi
  • Cíl: psát přehledné, znovupoužitelné a udržovatelné metody

  • Ukázkový program:

    • E-commerce web
      • se systémem OrderStatus pro sledování objednávek
      • s algoritmem věrnostních slev.
Input/Output and Streams in Java

Definice výčtu s metodami

  • Definujte výčet OrderStatus pro reprezentaci stavů objednávky
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 and Streams in Java

Vlastní metoda pro operace s datem

  • Pomocí orderDate odhadněte datum doručení zákazníkovi
    • Metoda .plusDays() přičte dny k danému datu
import java.time.LocalDate;

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

Rekurzivní metoda pro slevy

  • Pravidlo odměn: Postupně rostoucí slevy pro věrné zákazníky
    • Kumulativní slevu vypočítejte rekurzivní metodou:
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 and Streams in Java

Vlastní objekt

  • Vytvořte třídu Order obsahující všechny informace o objednávce
    • Uchovává důležité údaje jako id, datum a aktuální stav.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

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

Objekt Customer s metodou toString()

  • Chceme vypsat objednávku tak, aby ji zaměstnanec snadno přečetl nebo zpracoval
    • Definujte metodu toString(), která určí, jak se objekt Order vypíše.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Ukázkový výstup voláním .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output and Streams in Java

Metoda 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 and Streams in Java

Metoda main – výstup

  • Tato metoda main se spustí při zadání nové objednávky s těmito údaji:
    • Uživatel je přihlášen k odběru již 3 měsíce
    • Odhadovaná doba doručení je 7 dní
    • Počáteční stav objednávky je PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output and Streams in Java

Pojďme procvičovat!

Input/Output and Streams in Java

Preparing Video For Download...