Menu
CoddyTech

Ö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ğin tüm sınıf özellikleri kavramlarını bir araya getiren eksiksiz bir Bank Account Manager oluşturalım: getter ve setter'lara sahip private üyeler, const üye fonksiyonları, mutable üyeler, static değişkenler ve metotlar ile friend fonksiyonlar.

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

  • BankAccount.h: Hesap verilerini uygun kapsüllemeyle yöneten bir BankAccount sınıfı tanımla. Sınıfında şunlar bulunmalı:
    • Private üyeler: accountNumber (string), ownerName (string), balance (double) ve bakiyenin kaç kez kontrol edildiğini izlemek için bir mutable int queryCount
    • Kaç hesabın var olduğunu izlemek için private bir static üye olan totalAccounts
    • Hesap numarasını, hesap sahibinin adını ve başlangıç bakiyesini alan bir constructor. queryCount değerini 0 olarak başlatmalı ve totalAccounts değerini artırmalı
    • Const getter'lar: getAccountNumber(), getOwnerName() ve getBalance(): bakiye getter'ı her çağrıldığında queryCount değerini artırmalı
    • Bakiyenin kaç kez kontrol edildiğini döndüren bir const getter olan getQueryCount()
    • Yalnızca miktar pozitif olduğunda bakiyeye ekleme yapan bir deposit(double amount) metodu
    • Yalnızca miktar pozitif olduğunda ve mevcut bakiyeyi aşmadığında bakiyeden çıkarma yapan bir withdraw(double amount) metodu
    • Oluşturulan toplam hesap sayısını döndüren bir static metot olan getTotalAccounts()
    • Hesaplar arasında para aktaran bir friend fonksiyon olan transfer(BankAccount& from, BankAccount& to, double amount) tanımla. Yalnızca miktar pozitifse ve kaynak hesapta yeterli para varsa aktarım yapmalı

    Static üyeyi ve friend fonksiyonu sınıf tanımından sonra tanımla.

  • main.cpp: Tüm bu özelliklerin birlikte çalıştığını göster. Girdiden iki hesap sahibinin adını ve iki başlangıç bakiyesini oku (toplam dört satır: name1, balance1, name2, balance2), ardından:
    • "ACC001" ve "ACC002" hesap numaralarıyla iki BankAccount nesnesi oluştur
    • "Total accounts: <count>" yazdır
    • İlk hesap için "<name>: $<balance>" yazdır
    • İkinci hesap için "<name>: $<balance>" yazdır
    • İlk hesaba 500.0 yatır
    • İlk hesap için "After deposit - <name>: $<balance>" yazdır
    • Friend fonksiyonunu kullanarak ilk hesaptan ikinci hesaba 300.0 aktar
    • "After transfer:" yazdır
    • İlk hesap için " <name>: $<balance>" yazdır
    • İkinci hesap için " <name>: $<balance>" yazdır
    • İlk hesap için "Query count for <name>: <count>" yazdır

<iomanip> içindeki std::fixed ve std::setprecision(2) kullanarak tüm bakiye değerlerini iki ondalık basamakla biçimlendir. Bakiye girdilerini std::stod() kullanarak string'lerden double değerlerine dönüştür.

Header dosyana header guard'ları eklemeyi ve gerektiği yerlerde <string> ile <iostream> eklemeyi unutma.

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 virgülden sonra 2 basamak gösterecek şekilde ayarla
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: "ACC001" ve "ACC002" hesap numaralarıyla iki BankAccount nesnesi oluştur
    
    // TODO: "Total accounts: <count>" yazdır
    
    // TODO: İlk hesap için "<name>: $<balance>" yazdır
    
    // TODO: İkinci hesap için "<name>: $<balance>" yazdır
    
    // TODO: İlk hesaba 500.0 yatır
    
    // TODO: İlk hesap için "After deposit - <name>: $<balance>" yazdır
    
    // TODO: friend fonksiyonunu kullanarak ilk hesaptan ikinci hesaba 300.0 aktar
    
    // TODO: "After transfer:" yazdır
    
    // TODO: İlk hesap için "  <name>: $<balance>" yazdır (2 boşlukluk girintiye dikkat et)
    
    // TODO: İkinci hesap için "  <name>: $<balance>" yazdır (2 boşlukluk girintiye dikkat et)
    
    // TODO: İlk hesap için "Query count for <name>: <count>" yazdır
    
    return 0;
}

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

Kendi başına pratik yap: Online C++ derleyicisi