사용자 정의 메서드 - 종합 정리

Java의 입력/출력과 스트림

Alex Liu

Software Development Engineer

개념 통합하기

  • 다음을 결합하여 사용합니다:
    • Enum
    • 날짜와 시간
    • 재귀
  • 목표: 명확하고 재사용 가능하며 유지보수 쉬운 메서드 작성

  • 예제 프로그램:

    • 전자상거래 사이트
      • 주문 추적 메서드가 있는 실용적 OrderStatus 시스템
      • 충성도 할인 알고리즘
Java의 입력/출력과 스트림

메서드가 있는 Enum 정의

  • 주문 상태를 표현하는 OrderStatus Enum을 정의합니다
enum OrderStatus {
    PLACED("Order placed successfully"),
    DELIVERED("Order delivered");

private final String message; OrderStatus(String message) { this.message = message; } public String getMessage() { return message; } }
Java의 입력/출력과 스트림

날짜 연산 사용자 정의 메서드

  • orderDate를 사용해 고객에게 도착할 예상 배송일을 계산합니다
    • .plusDays() 메서드는 지정한 날짜에 일수를 더합니다
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Java의 입력/출력과 스트림

할인 재귀 메서드

  • 보상 정책: 단골 고객을 위해 월별로 할인 증가
    • 누적 할인을 재귀 메서드로 계산합니다:
public class DiscountCalculator {
    public static double cumulativeDiscount(int months) {
        if (months <= 0) return 0;
        return 5 + cumulativeDiscount(months - 1); // $5 discount per month
    }
}
Java의 입력/출력과 스트림

사용자 정의 객체

  • 주문 관련 정보를 담는 Order 클래스를 만듭니다
    • 주문의 핵심 정보: id, date, current status
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Java의 입력/출력과 스트림

toString()이 있는 Customer 객체

  • 직원이 읽거나 처리하기 쉬운 방식으로 주문을 출력하고자 합니다
    • Order 객체의 출력 형식을 정의하려면 toString() 메서드를 정의합니다.
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • .toString() 호출 예시 출력:
    Order[id=10015, date=2025-03-19]
    
Java의 입력/출력과 스트림

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); } }
Java의 입력/출력과 스트림

Main 메서드 - 출력

  • 이 main 메서드는 다음 정보로 새 주문이 생성될 때 실행됩니다:
    • 사용자는 이미 3개월 구독 중
    • 예상 배송 시간은 7일
    • 주문 상태는 처음에 PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Java의 입력/출력과 스트림

Ayo berlatih!

Java의 입력/출력과 스트림

Preparing Video For Download...