Menu
Coddy logo textTech

Bakiye Sorgulama

Coddy'nin C Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 26 / 61.

challenge icon

Görev

Kolay

Banka Hesabınız neredeyse tamamlanmak üzere! Hesap oluşturma, para yatırma ve para çekme yeteneklerini oluşturdunuz; ancak çok önemli bir parça eksik. Şu anda, harici kodun mevcut bakiyeyi görmesinin bir yolu yok. Bir getter (getirici) fonksiyonu ekleyerek bunu düzeltelim.

Bir getter, kapsüllenmiş (encapsulated) bir modüldeki gizli verileri açığa çıkarmanın doğru yoludur. Bakiye alanını herkese açık hale getirmek yerine (ki bu kapsüllemeyi bozar), değeri döndüren salt okunur bir fonksiyon sağlarsınız. Bu, kontrollü erişime izin verirken verilerin korunmasını sağlar.

Üç dosyanızla çalışmaya devam edeceksiniz:

  • account.h: Yeni bir fonksiyon prototipi ekleyin: get_balance. Bu fonksiyon bir const Account * alır (çünkü veriyi sadece okur, asla değiştirmez) ve mevcut bakiyeyi temsil eden bir double döndürür. Mevcut tüm bildirimlerinizi koruyun.
  • account.c: get_balance fonksiyonunu uygulayın. Sadece hesaptaki gizli bakiye alanını döndürür. Bu fonksiyonun dahili verilere nasıl erişebildiğine dikkat edin; çünkü struct ile aynı dosyada tanımlanmıştır; harici kod hala doğrudan içeriye bakamaz.
  • main.c: Artık hesaplarınızın içinde neler olup bittiğini nihayet görebilirsiniz! Bir hesap oluşturun, bazı işlemler gerçekleştirin ve her adımda bakiyeyi görüntülemek için yeni getter fonksiyonunuzu kullanın.

Dört girdi alacaksınız: hesap kimliği (bir tam sayı), bir para yatırma tutarı, bir para çekme tutarı ve ikinci bir para yatırma tutarı.

Ana dosyanızda bir hesap oluşturun ve başlangıç bakiyesini yazdırın (0.00 olmalıdır). İlk tutarı yatırın ve yeni bakiyeyi yazdırın. Belirtilen tutarı çekin ve bakiyeyi tekrar yazdırın. Son olarak, ikinci yatırma işlemini yapın ve son bakiyeyi yazdırın. Ardından hesabı yok edin.

Çıktıyı şu formatta yazdırın:

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

Burada 1001 hesap kimliğidir ve bakiyeler şunları yansıtır: başlangıç (0.00), 500.00 yatırdıktan sonra, 300.00 çektikten sonra ve başka bir 150.00 yatırdıktan sonra. Tüm bakiye değerlerini %.2f kullanarak iki ondalık basamakla biçimlendirin.

Bu getter ile Banka Hesabı modülünüz artık hesap verilerine eksiksiz ve kontrollü erişim sağlar; kullanıcılar bakiyeyi görebilir ancak onu yalnızca doğrulanmış para yatırma ve çekme fonksiyonlarınız aracılığıyla değiştirebilirler.

Kendin dene

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // YAPILACAK: get_balance kullanarak başlangıç bakiyesini yazdırın
    
    deposit(account, deposit1);
    // YAPILACAK: İlk yatırma işleminden sonraki bakiyeyi yazdırın
    
    withdraw(account, withdraw_amount);
    // YAPILACAK: Para çekme işleminden sonraki bakiyeyi yazdırın
    
    deposit(account, deposit2);
    // YAPILACAK: İkinci yatırma işleminden sonraki bakiyeyi yazdırın
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Object Oriented Programming bölümündeki tüm dersler