Menu
Coddy logo textTech

Özet - Banka Hesabı Yöneticisi

Coddy'nin C++ Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 33 / 104.

challenge icon

Görev

Kolay

Bu bölümde öğrendiğiniz tüm sınıf özelliği kavramlarını bir araya getiren eksiksiz bir Banka Hesabı Yöneticisi oluşturalım: getter ve setter'lara sahip özel (private) üyeler, const üye fonksiyonlar, mutable üyeler, statik değişkenler ve metotlar ve arkadaş (friend) fonksiyonlar.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • BankAccount.h: Uygun kapsülleme (encapsulation) ile hesap verilerini yöneten bir BankAccount sınıfı tanımlayın. Sınıfınız şunlara sahip olmalıdır:
    • Özel (private) üyeler: accountNumber (string), ownerName (string), balance (double) ve bakiyenin kaç kez kontrol edildiğini takip etmek için bir mutable int queryCount
    • Kaç tane hesap olduğunu takip etmek için özel bir statik üye totalAccounts
    • Hesap numarasını, sahip adını ve başlangıç bakiyesini alan bir yapıcı (constructor). queryCount değerini 0 olarak başlatmalı ve totalAccounts değerini artırmalıdır
    • Const getter'lar: getAccountNumber(), getOwnerName() ve getBalance() — bakiye getter'ı her çağrıldığında queryCount değerini artırmalıdır
    • Bakiyenin kaç kez kontrol edildiğini döndüren bir const getter getQueryCount()
    • Yalnızca miktar pozitifse bakiyeye ekleme yapan bir deposit(double amount) metodu
    • Yalnızca miktar pozitifse ve mevcut bakiyeyi aşmıyorsa bakiyeden çıkarma yapan bir withdraw(double amount) metodu
    • Oluşturulan toplam hesap sayısını döndüren statik bir metot getTotalAccounts()
    • Hesaplar arasında para taşıyan bir arkadaş (friend) fonksiyonu transfer(BankAccount& from, BankAccount& to, double amount) bildirin — bu fonksiyon yalnızca miktar pozitifse ve kaynak hesapta yeterli bakiye varsa transfer yapmalıdır

    Statik üyeyi ve arkadaş fonksiyonu sınıf tanımından sonra tanımlayın.

  • main.cpp: Tüm bu özelliklerin birlikte çalıştığını gösterin. Girişten iki sahip adı ve iki başlangıç bakiyesi okuyun (toplam dört satır: name1, balance1, name2, balance2), ardından:
    • "ACC001" ve "ACC002" hesap numaralarına sahip iki BankAccount nesnesi oluşturun
    • "Total accounts: <count>" yazdırın
    • İlk hesap için "<name>: "<name>: $<balance>"lt;balance>" yazdırın
    • İkinci hesap için "<name>: "<name>: $<balance>"lt;balance>" yazdırın
    • İlk hesaba 500.0 yatırın
    • İlk hesap için "After deposit - <name>: "After deposit - <name>: $<balance>"lt;balance>" yazdırın
    • Arkadaş fonksiyonu kullanarak ilk hesaptan ikinci hesaba 300.0 transfer edin
    • "After transfer:" yazdırın
    • İlk hesap için " <name>: " <name>: $<balance>"lt;balance>" yazdırın
    • İkinci hesap için " <name>: " <name>: $<balance>"lt;balance>" yazdırın
    • İlk hesap için "Query count for <name>: <count>" yazdırın

Tüm bakiye değerlerini <iomanip> kütüphanesinden std::fixed ve std::setprecision(2) kullanarak iki ondalık basamakla biçimlendirin. Bakiye girişlerini std::stod() kullanarak string'den double'a dönüştürün.

Başlık dosyanızda header guard kullanmayı ve gerektiğinde <string> ve <iostream> kütüphanelerini dahil etmeyi unutmayın.

Kendin dene

#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"

int main() {
    // Girdiyi oku
    std::string name1, name2;
    std::string balance1Str, balance2Str;
    
    std::getline(std::cin, name1);
    std::getline(std::cin, balance1Str);
    std::getline(std::cin, name2);
    std::getline(std::cin, balance2Str);
    
    double balance1 = std::stod(balance1Str);
    double balance2 = std::stod(balance2Str);
    
    // Çıktı biçimlendirmesini 2 ondalık basamak için ayarla
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: "ACC001" ve "ACC002" hesap numaralarına sahip iki BankAccount nesnesi oluşturun
    
    // TODO: "Total accounts: <count>" yazdırın
    
    // TODO: İlk hesap için "<name>: $<balance>" yazdırın
    
    // TODO: İkinci hesap için "<name>: $<balance>" yazdırın
    
    // TODO: İlk hesaba 500.0 yatırın
    
    // TODO: İlk hesap için "After deposit - <name>: $<balance>" yazdırın
    
    // TODO: friend fonksiyonunu kullanarak ilk hesaptan ikinciye 300.0 transfer edin
    
    // TODO: "After transfer:" yazdırın
    
    // TODO: İlk hesap için "  <name>: $<balance>" yazdırın (2 boşluklu girintiye dikkat edin)
    
    // TODO: İkinci hesap için "  <name>: $<balance>" yazdırın (2 boşluklu girintiye dikkat edin)
    
    // TODO: İlk hesap için "Query count for <name>: <count>" yazdırın
    
    return 0;
}

Nesne Yönelimli Programlama bölümündeki tüm dersler