Menu
Coddy logo textTech

Bakiye Sorgulama

Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 26 / 61.

challenge icon

Görev

Kolay

Bank Account hesabınız neredeyse tamamlandı! Hesap oluşturma, para yatırma ve para çekme yeteneklerini geliştirdiniz, ancak çok önemli bir parça eksik. Şu anda harici kodun mevcut bakiyeyi görmesinin hiçbir yolu yok. Bir getter işlevi ekleyerek bunu düzeltelim.

Getter, kapsüllenmiş bir modüldeki gizli verileri açığa çıkarmanın doğru yoludur. Bakiye alanını herkese açık hâle getirmek (bu, kapsüllemeyi bozardı) yerine, değeri döndüren salt okunur bir işlev sağlarsınız. Böylece kontrollü erişime izin verirken veriler korunur.

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

  • account.h: Yeni bir işlev prototipi ekleyin: get_balance. Bu işlev, yalnızca verileri okuduğu ve hiçbir zaman değiştirmediği için bir const Account * alır ve mevcut bakiyeyi temsil eden bir double döndürür. Mevcut tüm bildirimlerinizi koruyun.
  • account.c: get_balance işlevini uygulayın. Bu işlev, hesaptaki gizli bakiye alanını döndürür. Bu işlevin, struct ile aynı dosyada tanımlandığı için dahili verilere erişebildiğine dikkat edin: harici kod yine de doğrudan içeri bakamaz.
  • main.c: Artık hesaplarınızın içinde neler olduğunu 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'ınızı kullanın.

Dört girdi alacaksınız: hesap kimliği (bir tam sayı), bir yatırma tutarı, bir çekme tutarı ve bir ikinci 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ırmayı 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 sırasıyla başlangıç (0.00), 500.00 yatırıldıktan sonraki, 300.00 çekildikten sonraki ve 150.00 daha yatırıldıktan sonraki değerleri yansıtır. Tüm bakiye değerlerini %.2f kullanarak iki ondalık basamakla biçimlendirin.

Bu getter'ın eklenmesiyle Bank Account modülünüz artık hesap verilerine eksiksiz ve kontrollü erişim sunar: kullanıcılar bakiyeyi görebilir, ancak bakiyeyi yalnızca doğrulanan yatırma ve çekme işlevleriniz aracılığıyla değiştirebilir.

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);
    
    // TODO: get_balance kullanarak başlangıç bakiyesini yazdır
    
    deposit(account, deposit1);
    // TODO: İlk yatırımdan sonraki bakiyeyi yazdır
    
    withdraw(account, withdraw_amount);
    // TODO: Çekimden sonraki bakiyeyi yazdır
    
    deposit(account, deposit2);
    // TODO: İkinci yatırımdan sonraki bakiyeyi yazdır
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

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

Kendi başına pratik yap: Online C derleyicisi