⊗ppOpIfAp 68 of 107 menu

PHP'de OOP'de Arayüzlerin Kullanımı

Böylece, arayüzlerin bir sınıftaki gerekli tüm metodların uygulandığını kontrol etmek için iyi bir yol olduğunu zaten anladık.

Şimdi başka, daha pratik bir örneği ele alalım. Bir sınıfımız olsun ve bu sınıf bir dizi şekil nesnesini içinde saklasın:

<?php class FiguresCollection { private $figures = []; // şekiller için dizi } ?>

Sınıfımıza, koleksiyona nesne eklemek için addFigure metodunu uygulayalım:

<?php class FiguresCollection { private $figures = []; // Parametre olarak bir şekil nesnesi iletilir: public function addFigure($figure) { $this->figures[] = $figure; } } ?>

Açıktır ki, addFigure metodunun parametresine bir şekil nesnesi iletileceğini varsayıyoruz. Ancak bunun için hiçbir kontrol yok!

Hadi tip ipuçlarını kullanalım ve nesne tipini açıkça Figure olarak belirtelim:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } } ?>

Yaptığımız şeyi anlamaya çalışalım.

Eğer Figure gerçekten var olan bir sınıf olsaydı, metod parametresine bu sınıfın nesnelerini ve ayrıca onun mirasçılarını iletebilirdik.

Ancak bizim durumumuzda, Figure bir arayüzdür. Bu durumda tip ipucu, metod parametresine sadece bizim arayüzümüzü uygulayan sınıfların nesnelerinin iletilebileceği anlamına gelir.

Sınıfımızın bir nesnesini oluşturmayı ve içine şekiller eklemeyi deneyelim:

<?php $figuresCollection = new FiguresCollection; // Birkaç kare ekleyelim: $figuresCollection->add(new Quadrate(2)); $figuresCollection->add(new Quadrate(3)); // Birkaç dikdörtgen ekleyelim: $figuresCollection->add(new Rectangle(2, 3)); $figuresCollection->add(new Rectangle(3, 4)); ?>

Başka bir sınıfın nesnesini ekleme girişimi hataya yol açacaktır:

<?php $figuresCollection = new FiguresCollection; class Test {}; // başka bir sınıf $figuresCollection->add(new Test); // hata verecek ?>

Pratikte böyle bir kontrol bize ne sağlar: koleksiyona eklenen tüm şekiller Figure arayüzünü uyguladığı için, her birinde getSquare metodu ve getPerimeter metodu olacağından emin olabiliriz.

Belki ileride kare ve dikdörtgenin yanı sıra, örneğin bir üçgen daha ortaya çıkacak. Bu durumda üçgenin de getSquare ve getPerimeter metodları olacaktır.

Pratikte bu bize şunu sağlar: FiguresCollection sınıfında, örneğin, koleksiyondaki şekillerin toplam alanını bulan getTotalSquare metodunu yapabiliriz. Bu metotta şekil dizisini döngü ile gezeceğiz ve her şekilde getSquare metodunu çağıracağız.

Her şekil Figure arayüzünü uyguladığı için, %100 her şekilde bu getSquare metodunun olacağından emin olabiliriz.

İşte metodun uygulaması:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } // Toplam alanı bulalım: public function getTotalSquare() { $sum = 0; foreach ($this->figures as $figure) { $sum += $figure->getSquare(); // getSquare metodunu kullan } return $sum; } } ?>

Benim koduma bakmadan aynı FiguresCollection sınıfını uygulayın.

FiguresCollection sınıfına tüm şekillerin toplam çevresini bulmak için getTotalPerimeter metodunu ekleyin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet