Final Banka Testi
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 25 / 70.
Görev
KolayEksiksiz bir Dijital Banka sistemi oluşturduğunuz için tebrikler! Account sınıfınız artık para yatırma, para çekme, bakiye kontrolleri, hesap tanımlama ve hesaplar arası transfer işlemlerini gerçekleştirebiliyor. Şimdi hepsini gerçekçi bir çoklu hesap bankacılık senaryosu ile test edelim.
Bu son görevde, çeşitli işlemler yapan üç müşterili küçük bir bankayı simüle edeceksiniz. Bu, tüm metotlarınızın birlikte doğru çalışıp çalışmadığını ve hesapların gerçekten bağımsız durumlarını koruyup korumadığını doğrulayacaktır.
İki dosyanız:
Account.lua: Bu proje boyunca oluşturduğunuz tüm işlevlere (ID içeren yapıcı, deposit, withdraw, getBalance, __tostring ve transfer) sahip eksiksiz Account sınıfınız.main.lua: Birden fazla hesap oluşturan ve aralarında bir dizi işlem yürüten bir simülasyon betiği.
Altı adet girdi alacaksınız:
- Hesap 1 ID
- Hesap 2 ID
- Hesap 3 ID
- Hesap 1 için başlangıç yatırımı
- Hesap 2 için başlangıç yatırımı
- Hesap 3 için başlangıç yatırımı
Ana dosyanızda, aşağıdaki bankacılık gününü simüle edin:
- Verilen ID'lerle üç hesap oluşturun
- Başlangıç tutarlarını ilgili her bir hesaba yatırın
- Hesap 1, Hesap 2'ye 100 transfer eder
- Hesap 2, Hesap 3'e 150 transfer eder
- Hesap 3, Hesap 1'ye 50 transfer eder
- Hesap 1, Hesap 3'e 1000 transfer etmeye çalışır (bu başarısız olmalıdır)
- Üç hesabı da sırasıyla yazdırın (Hesap 1, sonra 2, sonra 3)
Örneğin, girdiler A001, A002, A003, 500, 300 ve 200 ise çıktı şu şekilde olmalıdır:
Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300Süreci takip edelim: Hesap 1 500 ile başlar, 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), Hesap 3'e 150 transfer eder (şimdi 250). Hesap 3 200 ile başlar, 150 alır (şimdi 350), Hesap 1'e 50 transfer eder (şimdi 300). 1000 tutarındaki son transfer başarısız olur çünkü Hesap 1'in sadece 450'si vardır.
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
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