요약 - 결제 프로세서
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 62번째.
챌린지
쉬움다형성의 강력함을 보여주는 결제 처리 시스템을 구축해 봅시다! 추상 결제 수단 클래스와 여러 구체적인 구현체를 만들고, 통합된 인터페이스를 통해 다양한 결제 유형의 컬렉션을 처리하게 됩니다.
코드를 두 개의 파일로 구성합니다:
payments.dart: 여기에 결제 계층 구조를 정의하세요:String accountHolder속성, 생성자, 그리고 추상 메서드processPayment(double amount)를 가진 추상 클래스PaymentMethodPaymentMethod를 확장하고 추가로String cardNumber속성(마지막 4자리만)을 가진CreditCard클래스. 이 클래스의processPayment는Processing $[amount] via Credit Card ****[cardNumber] for [accountHolder]를 출력해야 합니다.PaymentMethod를 확장하고 추가로String email속성을 가진PayPal클래스. 이 클래스의processPayment는Processing $[amount] via PayPal ([email]) for [accountHolder]를 출력해야 합니다.PaymentMethod를 확장하고 추가로String bankName속성을 가진BankTransfer클래스. 이 클래스의processPayment는Processing $[amount] via Bank Transfer from [bankName] for [accountHolder]를 출력해야 합니다.
processAllPayments(List<PaymentMethod> methods, double amount)함수를 만드세요:Processing [count] payments of $[amount] each:를 출력합니다. 여기서 count는 결제 수단의 개수입니다.- 각 결제 수단을 순회하며
processPayment(amount)를 호출합니다. - 모든 결제를 처리한 후,
is연산자를 사용하여CreditCard유형이 몇 개인지 세고Credit card payments: [count]를 출력합니다.
main.dart: 결제 파일을 임포트하고 결제 프로세서를 시연하세요:- 다음을 포함하는
List<PaymentMethod>를 생성합니다:'Alice Smith'를 위한 카드 번호'1234'인CreditCard'Bob Jones'를 위한 이메일'bob@email.com'인PayPal'Carol White'를 위한 은행'National Bank'인BankTransfer'David Brown'를 위한 카드 번호'5678'인CreditCard
- 이 리스트와 금액
99.99를 사용하여processAllPayments를 호출합니다.
- 다음을 포함하는
processAllPayments 함수가 추상 PaymentMethod 유형으로 작동함에도 불구하고, 각 결제가 특정 구현에 따라 어떻게 처리되는지 주목해 보세요. 마지막의 유형 검사는 필요한 경우 특정 유형을 여전히 식별할 수 있음을 보여줍니다.
예상 출력:
Processing 4 payments of $99.99 each:
Processing $99.99 via Credit Card ****1234 for Alice Smith
Processing $99.99 via PayPal (bob@email.com) for Bob Jones
Processing $99.99 via Bank Transfer from National Bank for Carol White
Processing $99.99 via Credit Card ****5678 for David Brown
Credit card payments: 2직접 해보기
import 'payments.dart';
void main() {
// TODO: 다음을 포함하는 List<PaymentMethod>를 생성하세요:
// - 카드 번호가 '1234'인 'Alice Smith'의 CreditCard
// - 이메일이 'bob@email.com'인 'Bob Jones'의 PayPal
// - 은행이 'National Bank'인 'Carol White'의 BankTransfer
// - 카드 번호가 '5678'인 'David Brown'의 CreditCard
// TODO: 해당 리스트와 금액 99.99로 processAllPayments를 호출하세요
}