// OrderProcessor クラス(抽象クラス)
abstract class OrderProcessor {
// 注文ã®åˆè¨ˆé‡‘é¡ã‚’計算ã™ã‚‹æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰
abstract double calculateTotalCost();
// 支払ã„を処ç†ã™ã‚‹æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰
abstract void processPayment();
}
// CreditCardPaymentProcessor クラス(具象クラス)
class CreditCardPaymentProcessor extends OrderProcessor {
// クレジットカードをèªè¨¼ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
void authorizeCreditCard() {
// クレジットカードèªè¨¼ã®å…·ä½“çš„ãªå‡¦ç†
}
// 注文ã®åˆè¨ˆé‡‘é¡ã‚’計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
double calculateTotalCost() {
// åˆè¨ˆé‡‘é¡ã®è¨ˆç®—ã®å…·ä½“çš„ãªå‡¦ç†
return 0.0;
}
// 支払ã„を処ç†ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
void processPayment() {
authorizeCreditCard();
// クレジットカード支払ã„ã®å‡¦ç†
System.out.println("Processing credit card payment");
}
}
// PayPalPaymentProcessor クラス(具象クラス)
class PayPalPaymentProcessor extends OrderProcessor {
// PayPal アカウントを確èªã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
void verifyPayPalAccount() {
// PayPal アカウント確èªã®å…·ä½“çš„ãªå‡¦ç†
}
// 注文ã®åˆè¨ˆé‡‘é¡ã‚’計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
double calculateTotalCost() {
// åˆè¨ˆé‡‘é¡ã®è¨ˆç®—ã®å…·ä½“çš„ãªå‡¦ç†
return 0.0;
}
// 支払ã„を処ç†ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
void processPayment() {
verifyPayPalAccount();
// PayPal 支払ã„ã®å‡¦ç†
System.out.println("Processing PayPal payment");
}
}
// OnlineOrder クラス(具象クラス)
class OnlineOrder extends OrderProcessor {
// 商å“リストã®ãƒ¡ãƒ³ãƒãƒ¼å¤‰æ•°
private List<Item> itemList;
// コンストラクタ
public OnlineOrder(List<Item> itemList) {
this.itemList = itemList;
}
// 商å“を発é€ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
void shipOrder() {
// 商å“ã®ç™ºé€ã®å…·ä½“çš„ãªå‡¦ç†
System.out.println("Shipping items");
}
// 注文ã®åˆè¨ˆé‡‘é¡ã‚’計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
double calculateTotalCost() {
// åˆè¨ˆé‡‘é¡ã®è¨ˆç®—ã®å…·ä½“çš„ãªå‡¦ç†
return 0.0;
}
// 支払ã„を処ç†ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
void processPayment() {
// 注文ã«é–¢ã™ã‚‹æ”¯æ‰•ã„処ç†ã®å…·ä½“çš„ãªå®Ÿè£…
System.out.println("Processing payment for online order");
}
}
// 商å“を表㙠Item クラス(例)
class Item {
// 商å“ã«é–¢ã™ã‚‹æƒ…å ±ã‚„ãƒ¡ã‚½ãƒƒãƒ‰ã®å®šç¾©
}
ã“ã®è§£ç”例ã§ã¯ã€OrderProcessor ã‚¯ãƒ©ã‚¹ãŒæ³¨æ–‡å‡¦ç†ã«é–¢ã™ã‚‹å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æä¾›ã—ã€å…·è±¡ã‚¯ãƒ©ã‚¹ã§ã‚ã‚‹ CreditCardPaymentProcessor 㨠PayPalPaymentProcessor ã¯ãれãžã‚Œã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰æ”¯æ‰•ã„㨠PayPal 支払ã„ã«ç‰¹æœ‰ã®å‡¦ç†ã‚’æä¾›ã—ã¾ã™ã€‚ã¾ãŸã€OnlineOrder クラスã¯å•†å“リストをæŒã¡ã€å•†å“ã®ç™ºé€ã«é–¢ã™ã‚‹ç‰¹æœ‰ã®å‡¦ç†ã‚’æä¾›ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚·ãƒ§ãƒƒãƒ”ãƒ³ã‚°ã®æ³¨æ–‡å‡¦ç†ãŒæŸ”è»Ÿã§æ‹¡å¼µå¯èƒ½ãªè¨è¨ˆã¨ãªã‚Šã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント