İçindekiler
Polimorfizm, soyut bir sınıfın veya belirli bir nesnenin aynı yönteme kendi davranışıyla yanıt verme yeteneğidir.. Polimorfizm, geçirilen veya beklenen bir parametrenin veya nesnelerin birden çok biçim alabileceğini ve aynı yöntemlerle farklı davranışlara sahip olabileceğini belirtir.Polimorfizmlerle nesne yönelimli programlama yaptığımızda, bir sınıfın veya nesnenin bir örneğinin çağrılabileceğini ve nesnenin ait olduğu sınıftan bağımsız olarak aynı şekilde çalışacağını ve davranacağını aklımızda tutmalıyız. Çok sayıda sınıfımız ve nesnemiz varsa, sınıfların ve soyut sınıfların hiyerarşilerini iyi yapılandırmamız gerekir. Diğer bir avantaj, sınıfın örneğine atıfta bulunduğumuz için, işlevleri tamamen farklı olsa da aynı adla yöntemleri bildirebilmek veya programlayabilmektir.
Örnek olarak, yakıt seviyesi, marka ve araç modelini bazı ortak veriler olarak paylaşan araç sayısını temsil eden soyut bir sınıf varsayalım.
Araçlar sınıfının özellikleri, daha sonra araca yüklenen litre sayısını içerecek ve araca yüklenecek olan yakıt olacaktır. marka ve model araç.
Aşağıda yakıt dolduracak tüm araçlar için ortak yöntemleri tanımlıyoruz ve ne kadar yakıt kaldığını gösteriyoruz, ayrıca her araca bir marka ve model verebilmeliyiz ve ayrıca marka ve modellerine de danışabilmeliyiz. . Ardından, Vehicles sınıfı için yöntemleri tanımlarız.
yakıt = $ yakıt; } public function yakıtı göster () {return $ this-> fuel; } public function atamavehicle ($ marka, $ model) {$ bu-> brandymodel = $ marka. ' '.$ modeli; } public function showbrandmodel () {return $ this-> markandmodel; }}?> var13 ->Daha sonra araçlardan miras kalan sınıfları oluşturmaya başlayacağız ve onların kendilerine özgü yöntemleri olacak, örneğin Arabalar sınıfını oluşturacağız, arabayı ilerletme özelliğine sahip olacak ve her ilerlediğinde bir litre yakıt tüketecek. (egzersizin kolayca anlaşılması için)
sınıf Arabalar Araç uzatır {kamu işlevi ilerlemesi () {// her 10 kilometrede bir litre tüketir $ bu-> yakıt - = 1; }} // Sınıfı BitirŞimdi aracın sürücüsü için genel bir sınıf uygulayacağız, burada bir veya birkaç sürücünün farklı araçları kullanabileceğini dikkate alıyoruz.
Bu sınıfta genel veya soyut tip bir kurucu tanımlayacağız.
function __construct ($ nesne_parametresi) {$ bu-> nesnem = $ nesne_parametre}Böylece, yapıcının parametresi olarak iletilen herhangi bir nesneyi manipüle edebiliriz, böylece sınıfımız bir nesneyi parametre olarak alma yeteneğine sahip olur, bu polimorfizmdir, yani tam nesneleri kullanabilir, örneğin gönderebiliriz sınıf autos parametre olarak ve tüm yöntemlerini kullanır.
Örnekleri php 5'te uygulayacağız, bu nedenle bir yöntemin kapsamını ve değişkenleri hatırlamak önemlidir, çoğu dilde çok benzerdir. Bir değişkenin veya özelliğin kapsamını atamak veya değiştirmek için, sahip olmasını istediğimiz erişim veya kapsama göre değişkeni veya yöntemi bildirirken karşılık gelen ayrılmış kelimeyi kullanmalıyız:
- özel: değişkene veya yönteme yalnızca nesnenin ait olduğu sınıfın yöntemleriyle erişilebileceğini ve başka herhangi bir yöntemle erişilebileceğini belirtir.
- korumalı: değişkenin veya yöntemin, yöntemlerin ve ayrıca bu sınıfa ait olan alt sınıflarının herhangi birinden erişilebilir olduğunu gösterir.
- halka açık: değişkenlere veya yöntemlere başka herhangi bir yöntemden veya nereye veya kime ait olduğuna bakılmaksızın erişilebilir olduğunu gösterir. Başka bir sınıf veya başka bir yöntem tarafından da kullanılan bir değeri değiştirebilecekleri için genel niteliklere dikkat edin.
Ardından, aşağıdaki yöntemlere sahip olacak Sürücü sınıfını oluşturuyoruz: yakıt yükleme, araç atama, marka ve model görüntüleme, aracı ilerletme ve ilerledikçe kalan yakıtı kontrol etme.
araç = $ nesne; } kamu işlevi yakıt yükü ($ yakıt) {$ bu-> araç-> yakıt yükü ($ yakıt); } public function assignvehicle ($ make, $ model) {$ this-> araç-> assignvehicle ($ make, $ model); } public function brandymodel () {return $ this-> araç-> showbrandmodel (); } public function forwardvehicle () {$ bu-> araç-> avans (); } kamu işlevi kalan yakıt () {dönüş $ this-> araç-> yakıtı göster (); }}?> var13 ->Arabalar sınıfının her bir işlevinde, tüm araçlar için ortak olmayan belirli özellikleri veya yöntemleri atamak için Süper Araçlar sınıfının ortak yöntemlerini nasıl somutlaştırdığımızı görebiliriz.
Şimdi bu sınıfları ve polimorfizmin kendisini nasıl kullanacağımızı görelim.
aracı atayın ('Ferrari', '550 MARANELLO'). 'Şimdi polimorfizm ve sınıf kalıtımının gerçek avantajlarını görelim, hadi sınıfı ekleyelim.
'; // Atanan araç echo $ ferrari-> brandymodel()'i gösteriyoruz.'
'; // Araca litre cinsinden miktarı belirterek yakıt yüklüyoruz 'Yakıt yükü' yankılanıyor. $ Ferrari-> yakıt yükü (50). '
'; // Mevcut yakıt miktarını eko 'Mevcut yakıt' gösteriyoruz. $ Ferrari-> kalan yakıt (). ' litre
'; echo 'Gelişmiş araç
'; $ ferrari-> avansVehicle (); echo $ ferrari-> brandymodel().' '.$ ferrari-> kalan yakıtınız () var.' litre yakıt
'; // Başka bir araçla başka bir örnek oluşturuyoruz, örneğin marka ve patent olan bir değişken oluşturabiliriz $ hondaHB0071 = new Driver (new Autos); echo $ hondaHB0071-> araç ata ('Honda', 'UYARI'). '
'; echo $ hondaHB0071-> makeandmodel().'
'; echo 'Yakıt yükü'. $ hondaHB0071-> yakıt yükü (50). '
'; echo 'Mevcut yakıt'. $ hondaHB0071-> kalan yakıt (). ' litre
'; echo 'Advanced Honda aracı
'; $ hondaHB0071-> avansAraç (); echo $ hondaHB0071-> makeandmodel().' '.$ hondaHB0071-> kalan yakıt ().' var. litre yakıt
'; ?> var13 ->
// Motosikletler sınıfı Motosikletler Genişliyor Araç {kamu işlevi ilerlemesi () {// her 10 kilometrede bir litre tüketir $ bu-> yakıt - = 1; }} $ moto = yeni Sürücü (yeni Motosikletler); echo $ moto-> araç ata ('Yamaha', 'YBR 125'). '
'; echo $moto-> makeymodel().'
'; echo 'Yakıt yükü'. $ motosiklet-> yakıt yükü (10). '
'; echo 'Mevcut yakıt'. $ moto-> kalan yakıt (). ' litre
'; echo 'Motosiklet araçta ilerlemeler
'; $ moto-> avansVehicle (); echo $moto-> makeymodel().' '.$ moto-> kalan yakıt ().' bıraktınız. litre yakıt
'; ?> var13 ->
Araca göre yakıt tüketimini daha gerçekçi hale getirmek için gerekli hesaplamaları dahil edebiliriz.
Polimorfizm kullanmanın avantajı, örneğin farklı parametrelerle benzer yöntemler oluşturabilmemizdir.
pHp ile arayüzlerin uygulanması
Arabirimler, bir sınıf tarafından hangi yöntemlerin uygulanabileceğini tanımlayan ve bu yöntemlerin nasıl kullanıldığını veya yönetildiğini gizleyen bildirimlerdir. Uyguladığımız sınıfların erişebilmesi için bir arabirimde bildirilen yöntemlerin genel olması gerekir. Sınıfların ve polimorfizmlerin kapsüllenmesine izin verirler.
Php ile bir arayüz uygulamak için, uygular anahtar sözcüğü kullanılır. Bir arabirimde bildirilmiş birkaç yöntemimiz varsa, bunların bir sınıfta uygulanması gerekir. Sınıflar, farklı yöntemlere erişebilmek için birden fazla arabirim uygulayabilir, böylece farklı sınıflarda farklı işlevlere sahip olabiliriz.
Arayüzlerin bir örneğini görüyoruz
Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.