Bakiye Sorgulama
Coddy'nin C Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 26 / 61.
Görev
KolayBanka 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 birconst Account *alır (çünkü veriyi sadece okur, asla değiştirmez) ve mevcut bakiyeyi temsil eden birdoubledöndürür. Mevcut tüm bildirimlerinizi koruyun.account.c:get_balancefonksiyonunu 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 destroyedBurada 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
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şisi