Tekrar - Şekil Hesaplayıcı
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 32 / 91.
Görev
KolayEsnek ve genişletilebilir kod oluşturmak için arayüzlerin gücünü gösteren bir şekil hesaplayıcı oluşturalım. Alanları hesaplamak için bir sözleşme tanımlayan bir arayüz oluşturacak, ardından bunu farklı şekil sınıflarında uygulayacaksınız.
Kodunuzu dört dosyaya ayıracaksınız:
Calculable.php: Tek bir metot imzasına sahip birCalculablearayüzü tanımlayın:calculateArea(). Bu sözleşme, hesaplanabilir her şeklin alanını hesaplayabilmesini sağlar.Rectangle.php:Calculablearayüzünü uygulayan birRectanglesınıfı oluşturun. Arayüz dosyasını dahil edin. Sınıfın, yapıcı aracılığıyla ayarlanan özel$widthve$heightözellikleri olmalıdır. Alanı (genişlik çarpı yükseklik) döndürmek içincalculateArea()metodunu uygulayın.Circle.php: Aynı zamandaCalculablearayüzünü uygulayan birCirclesınıfı oluşturun. Arayüz dosyasını dahil edin. Sınıfın, yapıcı aracılığıyla ayarlanan özel bir$radiusözelliği olmalıdır. Alanıpi() * radius * radiusformülünü kullanarak döndürmek içincalculateArea()metodunu uygulayın.main.php: Her iki şekil dosyasını da dahil edin. BirCalculableparametresi ve bir şekil adı (string) kabul eden,displayAreaadlı bir fonksiyon oluşturun. Fonksiyon, alanınnumber_format()kullanılarak 2 ondalık basamağa yuvarlandığı şu çıktıyı vermelidir:"[name] area: [area]".
Dört girdi alacaksınız: dikdörtgen genişliği, dikdörtgen yüksekliği, daire yarıçapı ve daire için bir şekil adı. Genişlik ve yükseklikle bir Rectangle oluşturun (float türüne dönüştürün) ve yarıçapla bir Circle oluşturun (float türüne dönüştürün). displayArea() fonksiyonunu iki kez çağırın: önce dikdörtgen için ad olarak "Rectangle" kullanın, ardından sağlanan şekil adıyla daireyi kullanın. Her sonucu kendi satırında yazdırın.
displayArea() fonksiyonu, Calculable arayüzünü uygulayan herhangi bir şekille çalışır. Bir dikdörtgenin, dairenin veya gelecekte ekleyebileceğiniz başka bir şeklin alanını hesaplayıp hesaplamadığını bilmesine gerek yoktur. Arayüze göre programlamanın güzelliği budur!
Kendin dene
<?php
// Şekil dosyalarını dahil et
require_once 'Rectangle.php';
require_once 'Circle.php';
// TODO: displayArea adında bir fonksiyon oluştur
// Calculable parametresi ve bir şekil adı (string) kabul etmeli
// Yazdır: "[name] area: [area]" burada area number_format() kullanılarak 2 ondalık basamağa yuvarlanır
// Girdileri oku
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: width ve height ile bir Rectangle oluştur
// TODO: radius ile bir Circle oluştur
// TODO: displayArea() fonksiyonunu rectangle ile "Rectangle" adını kullanarak çağır
// TODO: displayArea() fonksiyonunu circle ile sağlanan şekil adını kullanarak çağır
?>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