Özet - Banka Hesabı Yöneticisi
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 14 / 87.
Görev
KolayKapsülleme (encapsulation), erişim belirleyiciler (access modifiers), getter'lar, setter'lar ve final anahtar kelimesi hakkında öğrendiğiniz her şeyi bir araya getiren eksiksiz bir BankAccount sistemi oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
BankAccount.java: Hassas finansal verileri koruyan güvenli bir banka hesabı sınıfı tasarlayın:- Hesap oluşturulduktan sonra asla değişemeyen sabit (immutable) bir hesap numarası
- 0.0'dan başlayan ve yalnızca kontrollü yöntemlerle değiştirilebilen özel (private) bir bakiye
- Alınabilen ancak doğrudan değiştirilemeyen özel (private) bir sahip adı
- Hesap numarasını ve sahip adını alan bir yapıcı (constructor)
- Hesap numarası için bir getter
- Sahip adı için bir getter
- Bakiye için bir getter
- Yalnızca miktar pozitifse bakiyeye ekleme yapan, başarı durumunda
trueveya reddedilirsefalsedöndüren birdeposit(double amount)metodu - Yalnızca miktar pozitifse VE yeterli bakiye varsa bakiyeden düşen, başarı durumunda
trueveya reddedilirsefalsedöndüren birwithdraw(double amount)metodu - Şu formatı döndüren bir
getAccountSummary()metodu:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(bakiye 2 ondalık basamak olacak şekilde formatlanmış)
Main.java: Bir BankAccount oluşturun ve bir dizi işlem gerçekleştirin. Beş girdi alacaksınız: hesap numarası, sahip adı, para yatırma miktarı, ilk para çekme miktarı ve ikinci para çekme miktarı. Dört satır yazdırın:- Para yatırma işleminin sonucu:
Deposit: trueveyaDeposit: false - İlk para çekme işleminin sonucu:
Withdraw 1: trueveyaWithdraw 1: false - İkinci para çekme işleminin sonucu:
Withdraw 2: trueveyaWithdraw 2: false - Nihai hesap özeti
- Para yatırma işleminin sonucu:
Sırasıyla beş girdi alacaksınız: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Bakiyeyi 2 ondalık basamağa formatlamak için String.format("%.2f", balance) kullanabilirsiniz.
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: accountNumber ve ownerName ile bir BankAccount nesnesi oluşturun
// TODO: Para yatırma işlemini gerçekleştirin ve sonucu "Deposit: true" veya "Deposit: false" olarak yazdırın
// TODO: İlk para çekme işlemini gerçekleştirin ve sonucu "Withdraw 1: true" veya "Withdraw 1: false" olarak yazdırın
// TODO: İkinci para çekme işlemini gerçekleştirin ve sonucu "Withdraw 2: true" veya "Withdraw 2: false" olarak yazdırın
// TODO: Hesap özetini 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ı