Bakiye Sorgulama
Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 26 / 61.
Görev
KolayBank 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 birconst Account *alır ve mevcut bakiyeyi temsil eden birdoubledöndürür. Mevcut tüm bildirimlerinizi koruyun.account.c:get_balanceiş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 destroyedBurada 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
1Modüler Programlama Temelleri
Başlık DosyalarıInclude Guard'larKaynak DosyalarıStatik FonksiyonlarÖzet: Modüler Hesap Makinesi4Kapsülleme
Opaque Pointer KavramıOpaque Struct TanımlamaGetter ve Setter MetotlarıSetter Metotlarında DoğrulamaÖzet: Gizli Kutu2Nesneler ve Metotlar
Nesne Olarak Struct'lar'Self' İşaretçisiConst Doğruluğuİşaretçi vs DeğerYardımcı MetotlarÖzet: Point Manager5Proje: Basit Banka Hesabı
Proje KurulumuHesabın Oluşturulması3Nesne Yaşam Döngüsü
Constructor DeseniDestructor DeseniStack İlklendirmeDerin KopyalamaÖzet: String Wrapper6Kompozisyon Yoluyla Kalıtım
Struct Gömmeİlk Üye KuralıÜst Üyelere ErişimUpcastingÖzet: Şekil HiyerarşisiKendi başına pratik yap: Online C derleyicisi