Metode personalizate - Integrare completă

Input/Output și Fluxuri în Java

Alex Liu

Software Development Engineer

Integrarea conceptelor

  • Combinați și utilizați:
    • Enumerări (Enums)
    • Dată și oră
    • Recursivitate
  • Obiectiv: metode clare, reutilizabile și ușor de întreținut

  • Program exemplu:

    • Un site de comerț electronic
      • cu un sistem practic OrderStatus și metode de urmărire a comenzilor
      • cu algoritm de reducere pentru loialitate.
Input/Output și Fluxuri în Java

Definirea unui Enum cu metode

  • Definim Enum-ul OrderStatus pentru a reprezenta stările unei comenzi
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 și Fluxuri în Java

Metodă personalizată pentru operații cu date

  • Utilizați orderDate pentru a estima data livrării
    • Metoda .plusDays() adaugă zile la o dată specificată
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Input/Output și Fluxuri în Java

Metodă recursivă pentru reduceri

  • Politică de recompense: Reduceri crescătoare lunar pentru clienții fideli
    • Utilizați o metodă recursivă pentru a calcula reducerea cumulativă:
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 și Fluxuri în Java

Obiect personalizat

  • Creați o clasă Order care conține toate informațiile despre comandă
    • Include informații esențiale precum id, dată și status curent.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Input/Output și Fluxuri în Java

Obiectul Customer cu metoda toString()

  • Dorim să afișăm comanda într-un format ușor de citit sau procesat
    • Definim metoda toString() pentru a specifica modul de afișare a obiectului Order.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Exemplu de ieșire prin apelul .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output și Fluxuri în 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 și Fluxuri în Java

Metoda main - ieșire

  • Această metodă main este executată când se plasează o nouă comandă cu următoarele informații:
    • Utilizatorul este abonat de 3 luni
    • Timpul estimat de livrare este 7 zile
    • Statusul inițial al comenzii este PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output și Fluxuri în Java

Să exersăm!

Input/Output și Fluxuri în Java

Preparing Video For Download...