Menu
Coddy logo textTech

Tekrar - Banka Hesabı Yöneticisi

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 20 / 91.

challenge icon

Görev

Kolay

Bu bölümde öğrendiğin tüm sınıf özelliği kavramlarını bir araya getiren eksiksiz bir banka hesabı yönetim sistemi oluşturalım. Hesap verilerini uygun şekilde kapsülleyen ve banka genelindeki istatistikleri takip eden bir BankAccount sınıfı oluşturacaksın.

Kodunu iki dosyaya ayıracaksın:

  • BankAccount.php: Bireysel hesapları yöneten ve genel banka istatistiklerini takip eden bir BankAccount sınıfı tanımla. Sınıf şunları içermelidir:
    • 100 değerine ayarlanmış bir MINIMUM_BALANCE sabiti
    • Oluşturulduktan sonra değiştirilemeyen, public readonly bir string $accountId özelliği
    • Hesap sahibinin adı için bir public $holderName özelliği
    • Hesap bakiyesini korumak için bir private $balance özelliği
    • 0 değerinden başlayan bir private static $totalAccounts özelliği
    • 0 değerinden başlayan bir private static $totalDeposits özelliği
    Yapıcı; hesap ID'sini, hesap sahibinin adını ve başlangıç bakiyesini kabul etmelidir. Tüm örnek özelliklerini ayarlamalı ve toplam hesap sayısını artırmalıdır. Şu metotları ekle:
    • getBalance(): mevcut bakiyeyi döndürür
    • deposit($amount): bakiyeye ekleme yapar, toplam yatırma takipçisini günceller ve yeni bakiyeyi döndürür
    • withdraw($amount): yalnızca kalan bakiye minimum bakiye sabitine eşit veya bundan büyük kalıyorsa bakiyeden çıkarma yapar; yeni bakiyeyi döndürür (veya para çekme işlemine izin verilmiyorsa değişmemiş bakiyeyi döndürür)
    • Bir static metot olan getTotalAccounts(): oluşturulan toplam hesap sayısını döndürür
    • Bir static metot olan getTotalDeposits(): tüm hesaplar üzerinden yapılan tüm yatırımların toplamını döndürür
  • main.php: BankAccount sınıfı dosyasını dahil et. Dört girdi alacaksın: ilk hesap ID'si, ilk hesap sahibinin adı, ikinci hesap ID'si ve ikinci hesap sahibinin adı. Başlangıç bakiyesi 500 olan iki hesap oluştur. İlk hesap için 200 yatır, ardından 100 çek. Hesap ID'sini, hesap sahibinin adını ve bakiyeyi şu biçimde tek satırda yazdır: "[accountId]: [holderName] - $[balance]" İkinci hesap için 300 yatır, ardından 800 çekmeyi dene (bu işlem minimum bakiye nedeniyle başarısız olmalıdır). Bu hesap için de aynı biçimi yazdır. Son olarak, toplam hesap sayısını ve toplam yatırma tutarını ayrı satırlarda yazdır:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Bu görev; değiştirilemeyen tanımlayıcılar için readonly özellikleri, korunan veriler için getter metotlarıyla birlikte private özellikleri, sabit kurallar için sabitleri ve banka genelindeki istatistikler için static metotlarla birlikte static özellikleri bir araya getirir.

Kendin dene

<?php

require_once 'BankAccount.php';

// Girdileri oku
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: İlk hesabı 500 başlangıç bakiyesiyle oluştur

// TODO: İkinci hesabı 500 başlangıç bakiyesiyle oluştur

// TODO: İlk hesap: 200 yatır, sonra 100 çek

// TODO: İlk hesap bilgisini yazdır: "[accountId]: [holderName] - $[balance]"

// TODO: İkinci hesap: 300 yatır, sonra 800 çekmeyi dene

// TODO: İkinci hesap bilgisini yazdır: "[accountId]: [holderName] - $[balance]"

// TODO: Print "Total Accounts: [count]"

// TODO: Print "Total Deposits: $[amount]"

?>

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi