Özet - Ödeme Sistemi
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 40 / 87.
Görev
KolayBu bölümde arayüzler (interfaces) hakkında öğrendiğiniz her şeyi bir araya getiren eksiksiz bir ödeme işleme sistemi kuralım. Farklı ödeme yöntemlerinin ortak bir arayüz aracılığıyla tek tip olarak işlenebildiği esnek bir sistem oluşturacaksınız.
Kodunuzu beş dosya halinde düzenleyeceksiniz:
Payable.java: Tüm ödeme yöntemlerinin uygulaması gereken temel arayüzü tanımlayın. Ödeme işlemini açıklayan bir String döndüren tek birpay(double amount)metodu bildirmelidir.CreditCard.java: Kredi kartı ödemelerini temsil eden vePayablearayüzünü uygulayan bir sınıf oluşturun. Bir CreditCard, son 4 haneyi saklayan bircardNumberalanına (String) sahiptir. Bunu başlatmak için bir yapıcı (constructor) ekleyin.paymetodu şu sonucu döndürmelidir:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: PayPal ödemeleri içinPayablearayüzünü uygulayan başka bir sınıf oluşturun. Bir PayPal hesabının biremailalanı (String) vardır. Bunu başlatmak için bir yapıcı (constructor) ekleyin.paymetodu şu sonucu döndürmelidir:Paid [amount] via PayPal account [email]PaymentProcessor.java: Herhangi birPayablenesnesini işleyebilen bir işlemci sınıfı oluşturun. Ödeme yöntemininpaymetodunu çağıran ve sonucu döndüren birprocessPayment(Payable paymentMethod, double amount)metoduna sahip olmalıdır. Bu, arayüzlerin polimorfik (çok biçimli) davranışı nasıl sağladığını gösterir; işlemcinin belirli ödeme türünü bilmesine gerek yoktur!Main.java: Her şeyi bir araya getirin. Üç girdi alacaksınız: bir kart numarası (son 4 hane), bir e-posta adresi ve bir ödeme tutarı. BirPaymentProcessoroluşturun, ardından bunu verilen tutar için hem birCreditCardhem de birPayPalhesabı ile ödemeleri işlemek için kullanın. Her sonucu ayrı bir satıra yazdırın.
Üç girdi alacaksınız: kart numarasının son 4 hanesi (String), PayPal e-postası (String) ve ödeme tutarı (double).
Çıktınızda tutarları iki ondalık basamakla biçimlendirin. Aynı PaymentProcessor sınıfının, arayüzlerin gücü sayesinde tamamen farklı ödeme türlerini nasıl işlediğine dikkat edin!
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
String cardNumber = scanner.nextLine(); // Son 4 hane
String email = scanner.nextLine(); // PayPal e-postası
double amount = scanner.nextDouble(); // Ödeme tutarı
// TODO: Bir PaymentProcessor oluşturun
// TODO: cardNumber ile bir CreditCard oluşturun
// TODO: email ile bir PayPal hesabı oluşturun
// TODO: CreditCard ile ödemeyi işleyin ve sonucu yazdırın
// TODO: PayPal ile ödemeyi işleyin ve sonucu yazdırın
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici Kalıbı