Final Banka Testi
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 25 / 70.
Görev
KolayTam bir Dijital Banka sistemi oluşturduğun için tebrikler! Account sınıfın artık para yatırma, para çekme, bakiye kontrolü, hesap tanımlama ve hesaplar arası transfer işlemlerini gerçekleştiriyor. Şimdi gerçekçi, birden fazla hesap içeren bir bankacılık senaryosuyla hepsini test edelim.
Bu son görevde, çeşitli işlemler gerçekleştiren üç müşterisi olan küçük bir bankayı simüle edeceksin. Bu, tüm metotlarının birlikte doğru şekilde çalıştığını ve hesapların gerçekten birbirinden bağımsız durumlarını koruduğunu doğrulayacak.
İki dosyan:
Account.lua: Bu proje boyunca oluşturduğun tüm işlevlere sahip eksiksiz Account sınıfın (ID içeren oluşturucu, deposit, withdraw, getBalance, __tostring ve transfer).main.lua: Birden fazla hesap oluşturan ve bunlar arasında bir dizi işlem gerçekleştiren simülasyon betiği.
Altı girdi alacaksın:
- Hesap 1 ID'si
- Hesap 2 ID'si
- Hesap 3 ID'si
- Hesap 1 için başlangıç yatırma tutarı
- Hesap 2 için başlangıç yatırma tutarı
- Hesap 3 için başlangıç yatırma tutarı
main dosyanda aşağıdaki bankacılık gününü simüle et:
- Verilen ID'lerle üç hesap oluştur
- Başlangıç tutarlarını ilgili hesapların her birine yatır
- Hesap 1, Hesap 2'ye 100 transfer eder
- Hesap 2, Hesap 3'e 150 transfer eder
- Hesap 3, Hesap 1'e 50 transfer eder
- Hesap 1, Hesap 3'e 1000 transfer etmeyi dener (bu başarısız olmalı)
- Üç hesabı sırayla yazdır (önce Hesap 1, sonra 2, ardından 3)
Örneğin girdiler A001, A002, A003, 500, 300 ve 200 ise çıktı şöyle olmalıdır:
Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300Adım adım inceleyelim: Hesap 1, 500 ile başlar ve Hesap 2'ye 100 transfer eder (şimdi 400), ardından Hesap 3'ten 50 alır (şimdi 450). Hesap 2, 300 ile başlar, 100 alır (şimdi 400) ve Hesap 3'e 150 transfer eder (şimdi 250). Hesap 3, 200 ile başlar, 150 alır (şimdi 350) ve Hesap 1'e 50 transfer eder (şimdi 300). Hesap 1'in yalnızca 450'si olduğu için 1000 tutarındaki son transfer başarısız olur.
Kendin dene
-- Account modülünü dahil et
local Account = require('Account')
-- Altı girişi oku
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())
-- Kimliklerle üç hesap oluştur
-- YAPILACAK: Account:new() kullanarak account1, account2, account3 oluşturun
-- Başlangıç tutarlarını ilgili her bir hesaba yatırın
-- YAPILACAK: initialDeposit1'i account1'e, initialDeposit2'yi account2'ye, initialDeposit3'ü account3'e yatırın
-- Hesap 1, Hesap 2'ye 100 transfer eder
-- YAPILACAK: account1:transfer(account2, 100)
-- Hesap 2, Hesap 3'e 150 transfer eder
-- YAPILACAK: account2:transfer(account3, 150)
-- Hesap 3, Hesap 1'e 50 transfer eder
-- YAPILACAK: account3:transfer(account1, 50)
-- Hesap 1, Hesap 3'e 1000 transfer etmeye çalışır (bu başarısız olmalı)
-- YAPILACAK: account1:transfer(account3, 1000)
-- Üç hesabı da sırasıyla yazdırın
-- YAPILACAK: account1, account2, account3 yazdırın
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