Para Çekme Metodu
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 21 / 70.
Görev
KolayDijital Bankanız büyüyor! Hesaplar artık para yatırma işlemlerini kabul edebiliyor, ancak gerçek bir bankanın müşterilerin para çekmesine de izin vermesi gerekir. Haydi bir :withdraw(amount) metodu ekleyelim—ancak önemli bir güvenlik kontrolü ile birlikte.
Para yatırma işlemlerinin aksine, para çekme işlemleri başarısız olabilir. Eğer bir müşteri sahip olduğundan daha fazla para çekmeye çalışırsa, banka buna izin vermemelidir. Para çekme metodunuzun, tutarı düşmeden önce yeterli bakiye olup olmadığını kontrol etmesi gerekir.
İki dosyanız üzerinde çalışmaya devam edeceksiniz:
Account.lua: Mevcut Account sınıfınıza bir:withdraw(amount)metodu ekleyin. Eğer hesabın yeterli bakiyesi varsa, tutarı düşürün vetruedöndürün. Eğer yeterli bakiye yoksa,Insufficient fundsyazdırın ve bakiyeyi değiştirmedenfalsedöndürün.main.lua: Bir hesap oluşturun, ona biraz fon sağlamak için bir para yatırma işlemi yapın, ardından hem başarılı hem de başarısız işlemleri görmek için birkaç para çekme denemesi yapın.
Dört girdi alacaksınız:
- Başlangıç yatırma tutarı
- Birinci para çekme tutarı
- İkinci para çekme tutarı
- Üçüncü para çekme tutarı
Ana dosyanızda bir hesap oluşturun, başlangıç tutarını yatırın, ardından her bir para çekme işlemini sırasıyla deneyin. Her para çekme denemesinden sonra, mevcut bakiyeyi yeni bir satıra yazdırın. Başarısız para çekme işlemlerinin, bakiyeyi yazdırmadan önce Insufficient funds yazdıracağını unutmayın.
Örneğin, girdiler 100, 30, 50 ve 40 ise, çıktı şöyle olmalıdır:
70
20
Insufficient funds
20Hesap, para yatırma işleminden sonra 100 ile başlar. 30'luk ilk para çekme işlemi başarılı olur (bakiye: 70), 50'lik ikinci para çekme işlemi başarılı olur (bakiye: 20), ancak 40'lık üçüncü para çekme işlemi başarısız olur çünkü sadece 20 kalmıştır—bu nedenle bakiye 20'de kalır.
Kendin dene
-- Account modülünü dahil et
local Account = require('Account')
-- Dört girdiyi oku
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Tek bir hesap oluştur
local account = Account:new()
-- Başlangıç tutarını yatır
account:deposit(initialDeposit)
-- İlk para çekme işlemini dene ve bakiyeyi yazdır
-- TODO: burada account:withdraw(withdrawal1) çağrısı yapın
print(account.balance)
-- İkinci para çekme işlemini dene ve bakiyeyi yazdır
-- TODO: burada account:withdraw(withdrawal2) çağrısı yapın
print(account.balance)
-- Üçüncü para çekme işlemini dene ve bakiyeyi yazdır
-- TODO: burada account:withdraw(withdrawal3) çağrısı yapın
print(account.balance)
Object Oriented Programming bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi