Java ile bir banka hesap yönetim sistemi yazacaksın. İki sınıfı (Account ve Bank) tamamlayarak encapsulation, static alanlar, dizi yönetimi ve nesne kullanımı konularını pekiştireceksin. (Main hazır verildi — sınıflarını bitirince çalıştırıp sonucu görürsün.) Tahmini süre: 4–6 saat.
privatealanları getter/metod ile kontrollü açmak (encapsulation)staticalan ve sabitleri kullanmak- String karşılaştırmasında
.equals()ile==farkını kavramak - Sabit boyutlu dizi (
Account[]) ile veri yönetmek - Constructor'da doğrulama (guard clause)
toStringile nesneyi okunabilir metne çevirmek
- Java 17 veya üzeri kurulu olmalı (
java -version). - IDE: IntelliJ IDEA (Community ücretsiz) veya VS Code + Java Extension Pack.
src/Account.javavesrc/Bank.javaiçindeki her// TODO'yu sırayla çöz.Main'i çalıştırarak sınıflarını deneyebilirsin (hazır demo, değiştirme gerekmez).
- Constructor doğrulaması (TODO 1–3):
accountNumber,ownerName,pinboş olamaz;initialBalancenegatif olamaz. Hatalıysa ekrana mesaj yaz +return. Doğruysa alanları ata,totalAccountsCreated'ı artır. deposit(TODO 4–7): Negatif/sıfır miktarı reddet. Geçerliysebalance'ı vetotalTransactionCount'u artır.withdraw(TODO 8–13): Sırayla PIN → miktar →MIN_BALANCEkontrol et. Başarısızlıktafalse. Başarılıysa bakiyeyi düşür, sayacı artır,true.getBalance(TODO 14–15): Yanlış PIN'de-1, doğruysabalance.changePin(TODO 16–19): Eski PIN doğru + yeni PIN boş değilse güncelle,true.getAccountNumber(TODO 20):accountNumberdöndür.toString(TODO 21):accountNumber,ownerName,balanceiçeren satır. PIN gösterilmez.
💡 String karşılaştırmasında her zaman
.equals()kullan (==referans karşılaştırır).MIN_BALANCEgibi sabit değerleri tek yerde tanımla, koda dağıtma. Her metod tek iş yapsın.
addAccount(TODO 1–4):nullya da dizi doluysa reddet; değilseaccounts[size]'a ata,size'ı artır.findByNumber(TODO 5–6):0'dansize'a dön,getAccountNumber()'ı.equals()ile karşılaştır; bulamazsannull.listAll(TODO 7–8): Boşsa bilgi mesajı; değilse her hesabı yazdır.
💡 Dizinin kapasitesi (
accounts.length) ile içindeki eleman sayısı (size) farklı şeylerdir.
src/Main.java hazır bir demo — birkaç hesap oluşturup işlem yapar ve sonuçları ekrana yazar. Sen bir şey yazmazsın; Account ve Bank'ı bitirince Main'i çalıştır, sınıflarının çalıştığını gör.
Main'i çalıştırınca (sınıflar tamamlandığında) şuna benzer bir çıktı görürsün:
=== Banka Hesap Yönetim Sistemi (Demo) ===
Açılan hesaplar:
Hesap[TR001 | Ali Veli | 1000.0 TL]
Hesap[TR002 | Ayşe Kaya | 2500.0 TL]
TR001'e 500 TL yatırılıyor...
TR001 güncel bakiye: 1500.0
TR002'den 1000 TL çekiliyor...
TR002 güncel bakiye: 1500.0
TR002'den yanlış PIN ile çekme denemesi:
Hatalı PIN.
=== İstatistikler ===
Toplam açılan hesap : 2
Toplam işlem sayısı : 2
Projede 24 JUnit testi var (tests/ klasöründe). Testleri çalıştırınca skorun otomatik Kaizu paneline işlenir — ayrı bir "tamamladım" adımı yok.
1. Öğrenci numaranı gir. student_id.txt dosyasını aç, 123456'yı sil, Kaizu'daki öğrenci numaranı yaz, kaydet. (Bir kez yaparsın.)
2. Testleri çalıştır.
- macOS / Linux:
./run-tests.sh - Windows:
.\run-tests.ps1
İlk çalıştırmada JUnit kütüphanesi (~6 MB) lib/'e otomatik iner. Başlangıçta testler kırmızıdır; TODO'ları çözdükçe yeşile döner.
3. Skor otomatik gider. Testler bitince çıktının sonunda görürsün:
[Kaizu] ✅ Skorun (100/100) kaydedildi. Panelde tik birazdan görünür.
Tüm testler geçince (100/100) panelde yeşil tik gelir.
Skor için testleri
run-tests.shile çalıştır (tüm testleri koşar). IDE'de tek bir testi çalıştırmak geliştirme/hata ayıklama içindir, panele işlemez.
- Para transferi:
Bank'atransfer(fromNumber, toNumber, amount, pin)ekle. - İşlem geçmişi:
Accountiçinde son 10 işlemi tutanString[]. - PIN uzunluğu:
changePin'de yeni PIN tam 4 hane değilse reddet.
Takılırsan proje sayfasındaki "Çözümü Göster" butonunu kullan (proje verildikten 3 gün sonra açılır). Ama önce en az 1 saat kendin uğraş — tests/ içindeki testler ve hata mesajları en iyi ipucu.