Menu
Coddy logo textTech

Para Transferi

Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 24 / 70.

challenge icon

Görev

Kolay

Dijital Bankanız neredeyse tamamlandı! Son büyük özellik, hesaplar arasında para transferi yapabilme yeteneğidir. Nesne yönelimli tasarımınızın gerçekten parladığı yer burasıdır; bir hesap nesnesi doğrudan başka bir hesap nesnesiyle etkileşime girebilir.

Bir hesaptan diğerine para taşıyan bir :transfer(targetAccount, amount) metodu ekleyeceksiniz. Bu işlemin gerçekte neyi içerdiğini düşünün: kaynak hesaptan bir para çekme ve ardından hedef hesaba bir para yatırma işlemidir. İşin güzel tarafı, halihazırda oluşturduğunuz metotları yeniden kullanabilmenizdir!

Mevcut dosyalarınız üzerinde geliştirmeye devam edin:

  • Account.lua: Account sınıfınıza bir :transfer(targetAccount, amount) metodu ekleyin. Bu metot, self üzerinden belirtilen miktarı çekmeye çalışmalı ve başarılı olursa bu miktarı targetAccount hesabına yatırmalıdır. Para çekme işlemi başarısız olursa (yetersiz bakiye), transfer gerçekleşmemelidir. Mevcut tüm işlevlerinizi (ID içeren yapıcı, deposit, withdraw, getBalance ve __tostring) koruyun.
  • main.lua: Birden fazla hesap oluşturun ve aralarındaki transferleri göstererek bakiyelerin farklı hesap nesneleri arasında nasıl değiştiğini sergileyin.

Beş girdi alacaksınız:

  1. Birinci hesabın ID'si
  2. İkinci hesabın ID'si
  3. Birinci hesaba yapılacak ilk para yatırma miktarı
  4. İlk transfer miktarı (hesap 1'den hesap 2'ye)
  5. İkinci transfer miktarı (hesap 1'den hesap 2'ye)

Ana dosyanızda, verilen ID'lerle (her ikisi de 0 bakiye ile başlayan) iki hesap oluşturun, ilk miktarı birinci hesaba yatırın, ardından birinci hesaptan ikinciye her iki transferi de gerçekleştirmeyi deneyin. Her transfer denemesinden sonra, her iki hesabı da yazdırın (__tostring mevcut durumlarını gösterecektir).

Örneğin, girdiler 101, 102, 500, 200 ve 400 ise çıktı şu şekilde olmalıdır:

Account [101]: Balance = 300
Account [102]: Balance = 200
Insufficient funds
Account [101]: Balance = 300
Account [102]: Balance = 200

Birinci hesap, para yatırma işleminden sonra 500 ile başlar. 200'lük ilk transfer başarılı olur, hesap 101'de 300 ve hesap 102'de 200 kalır. 400'lük ikinci transfer başarısız olur çünkü hesap 101'de sadece 300 vardır; bu nedenle her iki bakiye de değişmeden kalır.

Kendin dene

-- Account modülünü dahil et
local Account = require('Account')

-- Beş girişi oku
local id1 = io.read()
local id2 = io.read()
local initialDeposit = tonumber(io.read())
local transfer1 = tonumber(io.read())
local transfer2 = tonumber(io.read())

-- Kimliklerle (ID) iki hesap oluştur
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- İlk tutarı birinci hesaba yatır
account1:deposit(initialDeposit)

-- YAPILACAK: account1'den account2'ye ilk transferi dene

-- YAPILACAK: İlk transferden sonra her iki hesabı da yazdır

-- YAPILACAK: account1'den account2'ye ikinci transferi dene

-- YAPILACAK: İkinci transferden sonra her iki hesabı da yazdır

Object Oriented Programming bölümündeki tüm dersler