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.
Görev
KolayBu 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 birBankAccountsınıfı tanımla. Sınıf şunları içermelidir:100değerine ayarlanmış birMINIMUM_BALANCEsabiti- 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 0değerinden başlayan bir private static$totalAccountsözelliği0değerinden başlayan bir private static$totalDepositsözelliği
getBalance(): mevcut bakiyeyi döndürürdeposit($amount): bakiyeye ekleme yapar, toplam yatırma takipçisini günceller ve yeni bakiyeyi döndürürwithdraw($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ıç bakiyesi500olan iki hesap oluştur. İlk hesap için200yatır, ardından100çek. Hesap ID'sini, hesap sahibinin adını ve bakiyeyi şu biçimde tek satırda yazdır:"[accountId]: [holderName] - $[balance]"İkinci hesap için300yatır, ardından800ç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
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar SözcüğüMetotlarÖzelliklerYapıcı (__construct)Yıkıcı (__destruct)Tekrar - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar SözcüğüMetot Geçersiz Kılmafinal Anahtar SözcüğüSoyut SınıflarTekrar - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicileri DerinlemesineGetter ve Setter'larBilgi GizlemeYapıcı Özellik Terfisi (8.0)Tekrar - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Composition ve KalıtımBağımlılık EnjeksiyonuAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlamaya Derinlemesine BakışÜreteçler ve Yineleyiciler13Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik KalıpDepo Kalıbı2Namespace’ler ve Autoloading
Namespace’lere Girişuse Anahtar SözcüğüPSR-4 Autoloading StandardıComposer AutoloaderTekrar - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Çok Arayüz UygulamaArayüz ve Soyut Sınıf KarşılaştırmasıArayüzlerle Tür İpuçlarıTekrar - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString ve __debugInfo__get, __set, __isset, __unset__call ve __callStatic__clone ve Nesne Klonlama__serialize ve __unserializeTekrar - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerSalt Okunur Özellikler (PHP 8.1)Tekrar - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmayı Yeniden Ele AlmaArayüzler Yoluyla Çok BiçimlilikTür İpuçları ve Birleşim TürleriGeç Bağlanan Statik ÇağrılarÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişBirden Çok Trait KullanımıTrait Çakışmalarını ÇözümlemeTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım Karşılaştırması12Tasarım Desenleri 1. Bölüm
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online PHP derleyicisi