PHP'de OOP'de Arayüzde Yapıcı Bildirimi
Bir arayüzde sınıf yapıcısı da bildirilebilir.
Bir örnek üzerinden inceleyelim. Diyelim ki
içinde alan ve çevre bulma metotları olan ve
iki parametre alan bir yapıcıya sahip Rectangle
(Dikdörtgen) sınıfı oluşturmaya karar verdik.
Sınıfımızı bir arayüz kullanarak tanımlayalım:
<?php
interface iRectangle
{
public function __construct($a, $b); // iki parametreli yapıcı
public function getSquare();
public function getPerimeter();
}
?>
Şimdi iRectangle arayüzümüzü uygulayan
bir sınıf yazalım:
<?php
class Rectangle implements iRectangle
{
private $a;
private $b;
public function __construct($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function getSquare()
{
return $this->a * $this->b;
}
public function getPerimeter()
{
return 2 * ($this->a + $this->b);
}
}
?>
Arayüzde yapıcı bildirmek bize ne sağladı? İlk olarak, sınıfta yapıcıyı uygulamayı unutmayacağız. İkinci olarak, arayüz açıkça sınıf yapıcısının iki parametre alması gerektiğini belirtiyor: ne eksik ne fazla. Bu ayrıca bizleri olası bir hatadan koruyacaktır.
Neden Figure (Şekil) arayüzüne yapıcı
eklemek yerine ayrı bir iRectangle
arayüzü oluşturduk? Çünkü tüm şekiller farklı
sayıda kenara sahiptir ve dolayısıyla yapıcıda
farklı sayıda parametre gerektirir. Bu nedenle
özellikle dikdörtgenler için ayrı, daha kesin
bir arayüz oluşturmak zorunda kaldık.
Küp şeklini tanımlayan bir iCube
arayüzü yapın. Arayüzünüz, küpün bir kenarını
parametre olarak alan bir yapıcıyı ve ayrıca
küpün hacmini ve yüzey alanını elde etmek
için metotlar tanımlasın.
iCube arayüzünü uygulayan bir
Cube sınıfı yapın.
Kullanıcıyı tanımlayan bir iUser
arayüzü yapın. Kullanıcının bir adı ve
yaşı olacağı ve bu alanların yapıcı
parametreleri olarak geçirileceği
varsayılmaktadır. Arayüzünüz ayrıca
kullanıcı için ad ve yaş için alıcı
(getter) metotları (ancak ayarlayıcı
(setter) olmayan) belirtmelidir.
iUser arayüzünü uygulayan bir
User sınıfı yapın.