Para Çekme Metodu
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama 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. Bir :withdraw(amount) yöntemi ekleyelim, ancak önemli bir güvenlik kontrolüyle.
Para yatırma işlemlerinden farklı olarak para çekme işlemleri başarısız olabilir. Bir müşteri hesabında bulunandan daha fazla para çekmeye çalışırsa banka buna izin vermemelidir. withdraw yönteminiz, tutarı düşmeden önce yeterli bakiyenin olup olmadığını kontrol etmelidir.
İki dosyanızla çalışmaya devam edeceksiniz:
Account.lua: Mevcut Account sınıfınıza bir:withdraw(amount)yöntemi ekleyin. Hesabın bakiyesi yeterliyse tutarı çıkarın vetruedöndürün. Yeterli bakiye yoksaInsufficient fundsyazdırın ve bakiyeyi değiştirmedenfalsedöndürün.main.lua: Bir hesap oluşturun, hesaba bir miktar para yatırın ve ardından hem başarılı hem de başarısız işlemleri görmek için birkaç para çekme girişiminde bulunun.
Dört girdi alacaksınız:
- Başlangıç para yatırma tutarı
- İlk 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 ve ardından her para çekme işlemini sırayla gerçekleştirmeyi deneyin. Her para çekme girişiminden sonra mevcut bakiyeyi yeni bir satıra yazdırın. Başarısız para çekme işlemlerinin de 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
20Para yatırma işleminden sonra hesap 100 ile başlar. İlk 30 tutarındaki para çekme işlemi başarılı olur (bakiye: 70), ikinci 50 tutarındaki para çekme işlemi başarılı olur (bakiye: 20), ancak yalnızca 20 kaldığı için üçüncü 40 tutarındaki para çekme işlemi başarısız olur ve bakiye 20 olarak kalır.
Kendin dene
-- Account modülünü gerektir
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
print(account.balance)
-- İkinci para çekme işlemini dene ve bakiyeyi yazdır
-- TODO: burada account:withdraw(withdrawal2) çağır
print(account.balance)
-- Üçüncü para çekme işlemini dene ve bakiyeyi yazdır
-- TODO: burada account:withdraw(withdrawal3) çağır
print(account.balance)
Nesne Yönelimli Programlama 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şisiKendi başına pratik yap: Online Lua derleyicisi