Metodi personalizzati - Mettere tutto insieme

Input/Output e Stream in Java

Alex Liu

Software Development Engineer

Integrazione dei concetti

  • Combina e usa:
    • Enum
    • Data e ora
    • Ricorsione
  • Obiettivo: creare metodi chiari, riutilizzabili e manutenibili

  • Programma di esempio:

    • Un sito e-commerce
      • con sistema OrderStatus pratico e metodi di tracciamento
      • con algoritmo di sconto fedeltà.
Input/Output e Stream in Java

Definire un Enum con metodi

  • Definisci l’Enum OrderStatus per rappresentare gli stati dell’ordine
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 e Stream in Java

Metodo personalizzato per operazioni su date

  • Usa orderDate per stimare quando l’ordine verrà consegnato al cliente
    • Il metodo .plusDays() aggiunge giorni a una data
import java.time.LocalDate;

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

Metodo ricorsivo per lo sconto

  • Politica di reward: sconti incrementali mese per mese per clienti fedeli
    • Usa un metodo ricorsivo per calcolare lo sconto cumulativo:
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 e Stream in Java

Oggetto personalizzato

  • Crea una classe Order che contenga tutte le info dell’ordine
    • Dati chiave: id, data e stato corrente.
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

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

Oggetto Customer con metodo toString()

  • Vogliamo stampare l’ordine in modo facile da leggere/elaborare per l’addetto
    • Definisci il metodo toString() per stabilire come stampare l’oggetto Order.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Esempio di output chiamando .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output e Stream in Java

Metodo 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 e Stream in Java

Metodo main - output

  • Questo metodo main viene eseguito quando si inserisce un nuovo ordine con queste info:
    • L’utente è abbonato da 3 mesi
    • Consegna stimata in 7 giorni
    • Lo stato iniziale è PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output e Stream in Java

Ayo berlatih!

Input/Output e Stream in Java

Preparing Video For Download...