Özet - Ş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 (interfaces) gücünü gösteren bir şekil hesaplayıcı oluşturalım. Alan hesaplamak için bir sözleşme tanımlayan bir arayüz oluşturacak ve ardından bunu farklı şekil sınıflarında uygulayacaksınız.
Kodunuzu dört dosya halinde düzenleyeceksiniz:
Calculable.php— Tek bir metot imzasına sahip birCalculablearayüzü tanımlayın:calculateArea(). Bu sözleşme, hesaplanabilir herhangi bir ş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, yapıcı (constructor) aracılığıyla ayarlanan özel$widthve$heightözelliklerine sahip olmalıdır. Alanı (genişlik çarpı yükseklik) döndürmek içincalculateArea()metodunu uygulayın.Circle.php— YineCalculablearayüzünü uygulayan birCirclesınıfı oluşturun. Arayüz dosyasını dahil edin. Sınıf, yapıcı aracılığıyla ayarlanan özel bir$radiusözelliğine sahip olmalıdır.pi() * radius * radiusformülünü kullanarak alanı 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 edendisplayAreaadında bir fonksiyon oluşturun. Fonksiyon şunu yazdırmalıdır:"[name] area: [area]"; burada alan,number_format()kullanılarak virgülden sonra 2 basamağa yuvarlanmalıdır.
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ükseklik ile bir Rectangle (float'a dönüştürün) ve yarıçap ile bir Circle (float'a dönüştürün) oluşturun. displayArea() fonksiyonunu iki kez çağırın — önce isim olarak "Rectangle" kullanarak dikdörtgen için, ardından sağlanan şekil adını kullanarak daire için. Her sonucu kendi satırına yazdırın.
displayArea() fonksiyonu, Calculable arayüzünü uygulayan her şekille çalışır — bir dikdörtgenin mi, dairenin mi yoksa gelecekte ekleyebileceğiniz başka bir şeklin mi alanını hesapladığını bilmesine gerek yoktur. Bir arayüze göre programlama yapmanı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şturun
// Bu fonksiyon bir Calculable parametresi ve bir şekil adı (string) almalıdır
// Yazdır: "[name] area: [area]" burada alan number_format() kullanılarak 2 ondalık basamağa yuvarlanmalıdır
// Girişleri oku
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: Genişlik ve yükseklik ile bir Rectangle (Dikdörtgen) oluşturun
// TODO: Yarıçap ile bir Circle (Daire) oluşturun
// TODO: "Rectangle" adını kullanarak dikdörtgen ile displayArea() fonksiyonunu çağırın
// TODO: Sağlanan şekil adını kullanarak daire ile displayArea() fonksiyonunu çağırın
?>Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar KelimesiMetotlarÖzelliklerYapıcı Metot (__construct)Yıkıcı Metot (__destruct)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar KelimesiMetot Geçersiz Kılmafinal Anahtar KelimesiSoyut SınıflarÖzet - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicilere Derinlemesine BakışGetter ve Setter MetotlarıBilgi GizlemeConstructor Promotion (8.0)Özet - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımDependency InjectionAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlama: Derinlemesine İncelemeGenerator'lar ve Iterator'lar13Tasarı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ıKompozit KalıbıRepository Kalıbı2İsim Alanları ve Autoloading
İsim Alanlarına Girişuse Anahtar KelimesiPSR-4 Autoloading StandartıComposer AutoloaderÖzet - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Fazla Arayüz UygulamaArayüz vs Soyut SınıfArayüzler ile Tip BelirlemeÖzet - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Nesne Klonlama__serialize & __unserializeÖzet - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerReadonly Özellikler (PHP 8.1)Özet - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmaya Yeniden BakışArayüzler ile Çok BiçimlilikType Hinting ve Union TypesLate Static BindingÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişÇoklu Trait KullanımıTrait Çakışma ÇözümüTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım12Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı15Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi