Egna metoder – samlad genomgång

Input/Output och strömmar i Java

Alex Liu

Software Development Engineer

Integrera koncept

  • Combine and use:
    • Enums
    • Date and Time
    • Recursion
  • Goal: build clear, reusable, and maintainable methods

  • Example program:

    • An e-commerce site
      • with practical OrderStatus system with order tracking methods
      • with loyalty discount algorithm.
Input/Output och strömmar i Java

Definiera en Enum med metoder

  • Definiera OrderStatus Enum för att representera ordertillstånd
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 och strömmar i Java

Egen metod för datumoperationer

  • Använd orderDate för att beräkna leveransdatum
    • Metoden .plusDays() lägger till dagar till ett givet datum
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Input/Output och strömmar i Java

Rekursiv metod för rabatt

  • Belöningspolicy: Ökande rabatter månad för månad för att belöna återkommande kunder
    • Använd en rekursiv metod för att beräkna den ackumulerade rabatten:
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 och strömmar i Java

Eget objekt

  • Skapa en Order-klass som innehåller all orderrelaterad information
    • Innehåller viktig information om ordern, som id, datum och aktuell 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 och strömmar i Java

Kundobjekt med metoden toString()

  • Vi vill skriva ut ordern på ett sätt som är lätt för medarbetaren att läsa och hantera
    • Definiera metoden toString() för att styra hur Order-objektet skrivs ut.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • Exempelutdata vid anrop av .toString():
    Order[id=10015, date=2025-03-19]
    
Input/Output och strömmar i Java

Main-metoden

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 och strömmar i Java

Main-metoden – utdata

  • Denna main-metod körs när en ny order läggs med följande information:
    • Användaren har prenumererat i 3 månader
    • Beräknad leveranstid är 7 dagar
    • Orderstatus är inledningsvis PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Input/Output och strömmar i Java

Nu kör vi en övning!

Input/Output och strömmar i Java

Preparing Video For Download...