4 kapılı bir banliyö arabası kullanabiliyorsanız, bir kamyonet de kullanabilirsiniz. Yanmalı motorlu bir araba sürdüyseniz, elektrikli bir araba da kullanabilirsiniz.

Binek araçların şekli ve boyutu birbirinden farklı olabilir. Bu araçları çalıştıran motor da tamamen farklı olabilir. Ama sürücü için önemli değil.

Sadece binin, kemerinizi bağlayın, aracı çalıştırın, vitese takın ve sürün. Çünkü arabalar, kamyonlar ve kamyonetler polimorfik.

Polimorfizm: Parçalamak

Polimorfizm kelimesine bakalım. içine kırabilirsin poli, biçim, ve izm.

Poli çokgen anlamına gelir, tıpkı çokgenin birçok açı anlamına gelmesi gibi. İsim olarak kullanıldığında, bir biçim bir türün bir çeşididir. Ve izm sistem anlamına gelebilir.

Yani polimorfizm basitçe birçok varyasyondan oluşan bir sistem anlamına gelir. Yine de bu size programlamada nasıl kullanıldığı hakkında pek bir şey söylemiyor. Sıradaki.

Ördek Gibi Yürüyorsa... Polimorfik Nesneler Neden Harikadır?

Kodunuzda başka bir sınıftan miras alan bir sınıf oluşturduğunuzda, yeni sınıfı bir sözleşmeye bağlarsınız. Sözleşme, ebeveyndeki her değişkenin ve işlevin çocukta da olacağını belirtir.

instagram viewer

Her aracın direksiyonu, gaz ve fren pedalları ve dönüş sinyali vardır. Araba kullanmak için kaputu açmanıza gerek yok. Önemli olan tek şey onun bir araba olması.

Aynı şey diğer sınıflardan miras alan sınıflar için de geçerlidir. TypeScript'te bir örnek:


sınıf Araç {
özel _motor: dize;
özel _lastikler: sayı;
yapıcı (motor: string = "yanma", lastikler: sayı = 4) {
this._engine = motor;
this._tires = lastikler;
}
hızlandırmak (hız: sayı) {
konsol.log("hızla hızlanıyor" + hız);
}
fren (basınç: sayı) {
konsol.log("uygulama" + basınç + "basınç");
}
Sola çevirin() {
konsol.log("sola dönüş");
}
Sağa dönün() {
konsol.log("sağa dönüş");
}
}
sınıf Araba, Araç'ı genişletir {
}
sınıf Tesla, Arabayı uzatır {
yapıcı() {
süper ("elektrikli");
}
}

Bu örnekte, bir Araç sınıf. NS Araba sınıf miras alır Araç sınıf. Ve tesla miras Araba. Şimdi birkaç nesne oluşturalım ve onlara bakalım.

izin ver myCoupe: Araba = yeni Araç();
konsol.log (myCoupe);
konsol.log (myCoupe.constructor.name);
izin ver mySedan: Araç = yeni Tesla();
konsol.log (mySedan);
konsol.log (benimSedan.constructor.name);
myCoupe.turnLeft();
mySedan.turnLeft();

ilan ettiğimizi görebilirsiniz. benim kupam biri olmak Araba ve benim Sedanım biri olmak Araç. Sonra somutlaştırdık benim kupam yeni olarak Araç ve benim Sedanım yeni olarak tesla. Eğer sen TypeScript sanal alanını ziyaret edin ve kodu çalıştırın, hatasız çalıştığını göreceksiniz. Ve sözleşmeye göre beklediğiniz gibi davranır.

Başka bir deyişle, tüm araçlar sola dönebilir çünkü onu miras aldıkları için. Araç sınıf. Derleyici, her çocuğunun Araç sözleşmeyi kabul etti. Bu nedenle, nesnelerin hangi sınıflar olarak yazıldığı veya başlatıldığı önemli değil, her şeyin yolunda olduğunu varsayar.

Buna bazen "ördek yazarak" denir. Derleyici, ördek gibi yürür ve ördek gibi konuşursa, ördek de olabileceğini varsayar. Böylece derleyici ayrıntılar hakkında endişelenmez ve nesneye bir ördek gibi davranır.

Polimorfizm, Kodunuzu Kurşun Geçirmez Hale Getirir

Polimorfizm sözleşmesinin bir başka avantajı da kodunuzun çalışacağının garantisidir. Tüm değişkenlerinizi ve her işlevin ne döndürdüğünü güçlü bir şekilde yazdıysanız, her çocuğun her zaman değişkenler, işlevler ve türlerle eşleşeceğini bilirsiniz.

Bu, programınızı bozmadan sınıflarınıza kod ekleyip değiştirebileceğiniz anlamına gelir. Bir referansa başvuran her nesne Araç nesne, ne kadar olursa olsun, her zaman beklentileri karşılayan verileri ve işlevleri alacaktır. Araba değişir.

Fonksiyonun içindeki kod doğru sonuçları vermeyebilir. Ama bu farklı bir sorun. İşlev sözleşmeyi takip ettiği ve beklenen değişken türünü döndürdüğü sürece, bir kod kırma hatasıyla sonuçlanmaz.

Polimorfizm çok büyük ve İşte bilmeniz gereken 10 programlama ilkesi daha.

Polimorfizmi uygulayın

  • oluşturmak için yukarıdaki korumalı alan bağlantısını kullanın. Bot sınıf.
  • Yeni bir tekne nesnesini öyle bir örnekleyin ki, Araç yazın, ama yine de bir tekneye benziyor.
  • Teknenin hala bir araç gibi davrandığından emin olun.

Polimorfizmin Son Bir Örneği

Polimorfizm, başlangıçta kavramak için zor bir kavram olabilir. Ancak bir kez anladığınızda, nesne yönelimli programlamanın gerçekte neyle ilgili olduğunu anlamak için büyük bir adım atmış olursunuz. Konsept yine de teorik görünebilir. İşte ne kadar yararlı olduğunu görmenize yardımcı olacak sağlam bir gerçek dünya örneği.

MySQL veritabanına bağlanan bir web uygulaması oluşturduğunuzu hayal edin. Ardından patron bir PostgreSQL veritabanına geçmeye karar verir. Bu, tüm veritabanı çağrılarınızı yeniden yazmanız gerektiği anlamına mı geliyor?

Hayır, değil. Uygulamanız bir Veri Erişimi Aslında verilerle uğraşan alt sınıfları olan bir sınıf, şanslısınız. NS Veri Erişimi class, uygulamanızın veri tabanıyla nasıl etkileşime girdiğini değil, verilerle nasıl etkileşime girdiğini tanımlar.

gibi alt sınıflarınız var MySQL Erişimi ve PostgresQLAerişim tüm kirli işleri yapanlar. Ancak uygulamanız yalnızca Veri Erişimi nesneleri, tek bir uygulama kodu satırını yeniden yazmadan veritabanlarını değiştirebilirsiniz.

PaylaşmakCıvıldamakE-posta
Kalıtım ile Nesne Yönelimli Kodunuzu Nasıl Düzenlersiniz?

Nesne yönelimli programlamayı doğru yapmak, kalıtım ve kodlamayı nasıl basitleştirip hataları nasıl azaltabileceği hakkında bilgi sahibi olmanız gerektiği anlamına gelir.

Sonrakini Oku

İlgili konular
  • Programlama
  • Programlama
  • Nesne yönelimli programlama
Yazar hakkında
Lee Nathan (19 Makale Yayınlandı)

Lee, tam zamanlı bir göçebe ve birçok tutku ve ilgi alanına sahip bir bilgedir. Bu tutkulardan bazıları üretkenlik, kişisel gelişim ve yazma etrafında dönüyor.

Lee Nathan'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın