Kalıtım ve Polimorfizm, nesne odaklı programlamanın temel yapı taşlarıdır Bu kavramları öğrenerek, nesne kullanımının gücünü keşfedin Bu yazımızda bu konuları ele alıyor ve örneklerle anlatıyoruz Okumaya devam edin ve nesne kullanımında ustalaşın!

Bu makalede, nesne oluşturma konusu ele alınırken kalıtım ve polimorfizm konseptleri üzerinde durulacaktır. Nesne tabanlı programlamada, objeler oluşturmak için use-case senaryolar üzerinden hareket edilerek kodlanan aksiyonların tekrar kullanılabilirliği hedeflenir. Bu hedef, kalıtım ve polimorfizm gibi konseptler ile kolayca gerçekleştirilir.
Özellikle büyük ölçekli projelerde, kalıtım ve polimorfizm konseptleri kodun daha sade ve anlaşılır olmasını sağlar. Nesne tabanlı programlamadaki bu yaklaşım kodun daha kolay anlaşılmasını ve bakımını sağlarken, zaman tasarrufunun önemli bir parçasıdır.
Kalıtım Nedir?
Kalıtım, nesne yönelimli programlama dillerinde kullanılan bir özelliktir. Bir sınıfın özelliklerini başka bir sınıfa aktarma işlemidir. Bu sayede, bir sınıfın özellikleri diğer sınıflar tarafından da kullanılabilir hale gelir.
Bu özellik sayesinde, kodun tekrar kullanılabilirliği artar ve kod tekrarından kaçınılabilir. Örneğin, bir araba sınıfı oluşturulduğunu düşünelim. Bu sınıfın özellikleri, bir sedan veya jeep sınıfı için de kullanılabilir hale getirilebilir. Böylelikle, her sınıfın özelliklerini tekrar tekrar kodlamak yerine, kalıtım özelliği kullanılarak daha az kod yazılması ve tekrardan kaçınılması sağlanır.
Polimorfizm Nedir?
Polimorfizm, bir nesnenin farklı şekillerde davranabilmesini sağlayan bir özelliktir. Yani, aynı isme sahip ama farklı görevleri olan metotları birbirinden ayırt edebilirsiniz. Bu özellik, kodlama açısından oldukça faydalıdır.
Örneğin, bir araç kiralama şirketi düşünün. Şirketin araçları, farklı sınıflara ayrılabileceği gibi polimorfizm özelliği de kullanılabilir. Bu durumda, farklı araç türlerinin özellikleri, aynı arayüz üzerinden çağrılabilir. Böylece işlem yapılan aracın türü, kullanıcının ilgilendiği tek şey olur.
- Polimorfizm, kodun daha okunabilir olmasını sağlar.
- Aynı işlemi farklı parametrelerle yapabilme esnekliği verir.
- Kodun tekrarlanması önlenir.
- Satır sayısı azalır.
Görüldüğü gibi, polimorfizm kullanımı oldukça avantajlıdır. Kod yazımında büyük kolaylıklar sağlayan bu özelliği kullanmak, yazılım geliştiricilerin koda daha güçlü bir kontrol sağlamalarına yardımcı olur.
Statik Polimorfizm Nedir?
Statik polimorfizm, aynı isme sahip fakat farklı parametrelerle çalışan fonksiyonların kullanımıdır. Aşırı yüklemeye (overloading) dayalıdır. İki veya daha fazla fonksiyon aynı isimde tanımlanabilir, ancak farklı parametreler alır. Fonksiyon hangi parametreyle çağrılırsa o parametreye uygun olan çalıştırılır.
Bu özellik, aynı ismi taşıyan fonksiyonlar için kod tekrarını önler. Fonksiyonların tek tek tanımlanması yerine, aynı işlevi gören her farklı türdeki parametrelerin bulunduğu bir fonksiyon oluşturulabilir.
Fonksiyon | Parametre | Çıktı |
---|---|---|
Topla | int a, int b | a+b |
Topla | double a, double b | a+b |
Topla(2, 3)
fonksiyonunu çağırdığımızda, int değerleri olan 2 ve 3 yazdığımız için sonuç 5 olacaktır.Topla(2.5, 3.7)
fonksiyonunu çağırdığımızda, doble değerleri olan 2.5 ve 3.7 yazdığımız için sonuç 6.2 olacaktır.
Statik polimorfizm, programlama dili tarafından derleme anında kontrol edilir. Başka bir deyişle, aşırı yüklenmiş fonksiyon çağrısının hangi parametrelere uygun olduğu, kod derlenirken belirlenir.
Aşırı Yükleme Nedir?
Aşırı yükleme, bir fonksiyonun aynı isimle farklı parametrelere sahip birden fazla tanımlamasıdır. Böylece aynı işlem farklı parametrelerle yapılabilmektedir. Bu durum programlama dilinde oldukça sık kullanılan bir tekniktir.
Özellikle C# dilinde aşırı yükleme oldukça yaygın olarak kullanılmaktadır. C# dilinde aşırı yüklemeyi yapmak için aynı isme sahip farklı parametreleri olan fonksiyonlar tanımlamanız yeterlidir. Kullanımında ise hangi fonksiyonun çalışacağı derleme zamanında belirlenir.
Aşırı yükleme ile fonksiyonlar daha esnek hale getirilir ve kod tekrarı önlenir. Ayrıca aynı isimle birden fazla fonksiyon kullanımı programlama dilinde oldukça sık tercih edilen bir yöntemdir.
Aşırı Yüklenmiş Bir Fonksiyon Nasıl Çalışır?
Aşırı yüklenme, birden fazla fonksiyonun farklı parametrelerle aynı isimle tanımlandığı durumlarda kullanılır. Bu durumda, hangi fonksiyonun çağrılacağı, fonksiyonun hangi parametrelerle çağrıldığına ve fonksiyonun hangi türde bir nesneye yönelik olduğuna bağlıdır.
Derleme zamanında, fonksiyon çağrısı hangi aramada bulunduğuna bağlı olarak belirlenir. Eğer fonksiyon çağrısı bir nesne üzerinde yapılıyorsa, fonksiyonun çalıştırılacağı sınıf, derleme zamanında bu nesnenin türüne göre belirlenir.
Ayrıca, fonksiyonun aldığı parametrelerin türüne göre de hangi fonksiyonun çağrılacağı belirlenir. Eğer birden fazla fonksiyon, aynı adı ve parametre tiplerini aldığı takdirde, fonksiyonların sırayla denenmesiyle, uygun fonksiyon bulunana kadar denemeye devam edilir. Eğer uygun fonksiyon bulunamazsa, derleme hatası verilir.
Aşırı yüklenmiş fonksiyonların aynı amaç için farklı parametrelerle kullanılması, kodu daha okunaklı hale getirir ve aynı işlemi farklı türleri için kullanmamızı sağlayarak yazılımın esnekliğini arttırır. Ancak, aşırı yüklenmiş fonksiyonların çok fazla kullanılması, kodun karmaşık hale gelmesine sebep olabilir ve performansı olumsuz etkileyebilir.
Dinamik Polimorfizm Nedir?
Dinamik polimorfizm, kalıtım yoluyla miras alınan sınıflarda, alt sınıflar tarafından yeniden tanımlanabilen fonksiyonlar sayesinde nesnenin farklı şekillerde davranmasını mümkün kılan bir özelliktir. Bu şekilde, aynı isimli fonksiyonlar, farklı alt sınıflar arasında çağrıldığında, o sınıfın özel davranışını yerine getirir.
Bir örnek olarak, bir Hayvan sınıfı ve bu sınıftan miras alan Köpek ve Kedi sınıfları düşünelim. Bu durumda, Hayvan sınıfındaki bir ses çıkarma fonksiyonunu Köpek ve Kedi sınıflarında yeniden tanımlayabiliriz. Bu sayede, Köpek sınıfında bu fonksiyon "Hav Hav" şeklinde çalışırken, Kedi sınıfında "Miyav" şeklinde çalışır.
Dinamik polimorfizm, kodun daha esnek ve modüler hale gelmesine de yardımcı olur. Bu özellik sayesinde, farklı alt sınıfların kendi davranışlarını tanımlayarak daha özelleştirilmiş bir nesne yaratabilmek mümkün hale gelir. Örneğin, bir Hayvan sınıfına sahip bir proje geliştiriyorsanız, farklı hayvan türleri için özel sınıflar oluşturarak, her bir sınıfın kendine özgü özellikleri ve davranışları tanımlayabilirsiniz.
Nesne Oluşturma Örneği
Bu yazıda, kalıtım ve polimorfizm kullanarak bir nesne oluşturma örneği verilecektir. Bu örnek C# programlama diliyle gerçekleştirilecektir
Bir temel sınıf oluşturarak başlayalım. Şimdi, Araba adında bir sınıf oluşturacağız. Bu sınıfın araçla ilgili özellikleri ve davranışları içermesi gerekiyor. Örneğin, aracın hızı, kilidi açık mı kapalı mı, yakıt seviyesi gibi özellikler temel sınıfta yer alacaktır.
Şimdi bir alt sınıf oluşturalım, Sedan adında bir sınıf. Temel sınıftan miras alacağı özelliklerin yanı sıra, Sedan sınıfı aracın markası, modeli, renk gibi özelliklerini de içermelidir. Ayrıca Sedan sınıfı, örneğin hızlanma işlemi için yeni bir davranış (fonksiyon) ekleyebilir.
Bu noktada, nesne oluşturabiliriz. Örneğin, Sedan sınıfından yeni bir araç örneğine ihtiyacımız var. Bunun için ana programda bir Sedan nesnesi oluşturmalı ve özelliklerini belirlemeliyiz.
Bu örnekle, kalıtım ve polimorfizmin nasıl kullanılabileceğini ve nesne oluşturmanın nasıl gerçekleştirilebileceğini göstermiş oluyoruz. Bu örneği uygulayarak, C# dilinde nesne oluşturma işlemi hakkında daha da bilgi sahibi olabilirsiniz.
Önceki Sınıfı Oluşturma
Araba sınıfını oluşturuyoruz. Araba sınıfı, tüm araçların sahip olduğu özellikleri içeren bir sınıftır. Örneğin, bir aracın ne kadar hızlı gidebileceği veya kaç tekerleği olduğu gibi özellikler, Araba sınıfı içinde tanımlanabilir.
Araba sınıfının oluşturulması için, C# dilinde aşağıdaki gibi bir kod örneği kullanılabilir:
Kod | Açıklama |
---|---|
public class Araba | Araba sınıfı oluşturuluyor. |
{ | |
public int hiz; | Aracın hızı tutulacak değişken tanımlanıyor. |
public int tekerlekSayisi; | Aracın tekerlek sayısı tutulacak değişken tanımlanıyor. |
} |
Yukarıdaki kod bloğu, Araba sınıfını oluşturur ve iki temel özellik olan hız ve tekerlek sayısı için değişkenler tanımlar. Bu iki özellik nesne oluşturulduğunda kullanılacak değerlerdir.
ArabaAraba sözcüğü, günümüzde hayatımızın ayrılmaz bir parçası haline gelmiştir. Arabalar, insanların seyahat etmesini, taşımacılık işlemlerini, alışveriş yapmasını ve birçok farklı işi kolaylaştırmaktadır. Arabaların tarihi, insanlık tarihi kadar eski olmasa da, yaklaşık yüz yıllık bir geçmişe sahiptir. İlk otomobilin 1885 yılında Karl Benz tarafından yapıldığı bilinmektedir.
Arabalar, farklı şekil, özellik ve amaçlar için tasarlanabilirler. Bazı arabalar, hız performansı ve spor amaçları için tasarlanırken, bazıları ise daha çok ailelerin günlük ihtiyaçlarını karşılamak için üretilir. Ayrıca, elektrikli arabalar, hibrit arabalar ve gazlı arabalar gibi çevre dostu seçenekler de mevcuttur. Araba üreticileri, her yıl yeni modeller üreterek ve teknolojiyi kullanarak arabaların performansını artırmaya devam etmektedirler.
sınıfı oluşturulacaktır.Öncelikle, Araba adında bir sınıf oluşturulacaktır. Bu sınıfın içerisinde, bir aracın sahip olabileceği özellikler (marka, model, renk, hız vb.) ve davranışlar (hareket etme, durma, hız değiştirme vb.) tanımlanacaktır. Araba sınıfı, Sedan sınıfı tarafından kalıtılacaktır. Bu sayede Sedan sınıfı, Araba sınıfının özelliklerini ve davranışlarını miras almış olacaktır.
Alt Sınıfı Oluşturma
temel sınıf olan Araba sınıfını miras alan bir alt sınıf, yani Sedan sınıfı oluşturulacaktır. Bu sınıf, Araba sınıfındaki özelliklerin yanı sıra kendi özelliklerine de sahip olacaktır. Örneğin, Sedan sınıfı Araba sınıfının sahip olduğu hız özelliğine ek olarak, yolcu kapasitesi gibi özelliklere de sahip olabilir. Sedan sınıfı Araba sınıfını miras aldığı için, Araba sınıfındaki tüm özellikleri ve fonksiyonları kullanabilir. Buna ek olarak, Sedan sınıfı kendi özelliklerine özgü fonksiyonlar da tanımlayabilir.
Sedan sınıfını tanımlarken, öncelikle Araba sınıfının özelliklerini miras olarak alınmalıdır. Bu işlem, Sedan sınıfı tanımlandığında kullanılacak olan kalıtım sözcüğü ile gerçekleştirilir. Daha sonra, Sedan sınıfının kendisine özgü özellikleri tanımlanabilir. Kullanıcılar, Sedan sınıfını kullanırken, hem Araba sınıfındaki özellikleri hem de Sedan sınıfının özelliklerini kullanabilirler.
Örneğin, Sedan sınıfı için önceden tanımlanmış bir hız özelliği var ise, Sedan sınıfı farklı yol koşullarına göre hız değiştirilebilecek fonksiyonları da içerebilir. Benzer şekilde, yolcu kapasitesi özelliği de Sedan sınıfı tarafından tanımlanabilir. Bu özellik, Araba sınıfından miras alınan özellikler olmasa da, Sedan sınıfının kendi özellikleri olarak tanımlanabilir.
Böylece, kalıtım ve polimorfizm kullanarak nesne oluşturma işlemi daha da geliştirilmiş olacaktır. Oluşturulan Sedan sınıfı ve buna benzer örnekler, nesne yönelimli programlama dünyası için önemli bir işlev sağlamaktadır.
Sedanalt sınıfı, Araba sınıfından miras alınarak oluşturulan bir sınıftır. Sedan arabaları genellikle aile arabaları olarak bilinir ve 4 kapılı olma özelliğiyle tanınır. Sedan arabaları, diğer arabalardan iç tasarımı ve genişliği ile ayrılır. Bu arabalar genellikle üst sınıf araçları temsil eder ve konforlu bir sürüş deneyimi sunar.
Sedan sınıfının özellikleri Araba sınıfından miras alınarak oluşturulmaktadır. Sedan sınıfının özellikleri arasında geniş ve ferah bir iç mekan, yüksek yakıt verimliliği, yüksek güvenlik standartları yer alır. Sedan arabaları, diğer arabalardan ayıran bir diğer özellikleri de stabilite kontrolüdür. Bu özellik sayesinde sürücülerin daha kontrollü ve güvenli bir sürüş deneyimi yaşaması sağlanmaktadır.
Sedan arabaları dünyanın birçok yerinde yoğun bir talep görmektedir. Bu arabalar lüks segment içerisinde yer alsalar da, fiyatları geniş bir yelpazede yer almaktadır. Sundukları konfor ve güvenli sürüş deneyimi nedeniyle, özellikle ailelerin tercih ettiği arabalardan biridir.
Sedan arabaları, müşterilerin ihtiyaç ve beklentilerini karşılayabilecek birçok modelle mevcuttur. Farklı boyutları ve fiyat aralıklarıyla, müşterilere geniş bir seçenek sunulmaktadır. Her bir model farklı bir tasarıma sahiptir ve kullanıcılarına özel bir deneyim sunar.
Sonuç olarak, Sedan arabaları geniş iç hacimleri, konforlu sürüş deneyimi, yüksek güvenlik standartları ve etkileyici tasarımları ile birçok sürücü için ideal bir seçenektir. Araba sınıfından miras alan Sedan sınıfı, modern teknolojik özellikleri de içinde barındırarak hem sürücülerin hem de yolcuların ihtiyacını karşılamaktadır.
adında bir alt sınıf oluşturulacaktır.Şimdi, bir alt sınıf oluşturmak için Sedan sınıfını oluşturalım. Bu alt sınıf, Araba sınıfından miras alacak ve daha belirgin özelliklere sahip olacak. Yani, Sedan sınıfı, Araba sınıfındaki özelliklerle birlikte kendi özelliklerini de içerecek. Alt sınıf oluşturmak için colon işaretinden sonra temel sınıf adı belirtilerek tanımlama yapılmalıdır. Ayrıca, alt sınıfın kendi özelliklerini tanımlamak için yeni değişkenler ekleyebiliriz.
Nesne Oluşturma
önceden tanımladığımız Sedan sınıfından bir nesne oluşturacağız ve bu nesne üzerinden işlemler yapacağız. Öncelikle, Sedan sınıfından bir nesne oluşturmak için ```csharpSedan araba = new Sedan();```kodunu yazmamız gerekiyor. Bu kod Sedan sınıfından yeni bir nesne oluşturuyor ve nesneyi araba adlı değişkene atıyor.
Oluşturduğumuz bu nesne ile sınıflar arasındaki ilişkiyi daha net görebiliriz. Misal olarak, Araba sınıfında tanımlanan özellikleri ve metodları Sedan sınıfından oluşturduğumuz nesne üzerinden kullanabileceğimizi görürüz. Böylece, alt sınıfta ek özellikler veya değişiklikler yazarak ana sınıfın özelliklerini kolayca genişletebiliriz.
Örneğin, Sedan sınıfında hız limiti isimli bir özellik eklemiş olsak bile, Araba sınıfı üzerinden oluşturduğumuz araba nesnesine bu özelliği eklemiş olacağız. Bu sayede, alt sınıfta tanımladığımız özellikleri temel sınıfta kullanabileceğiz.
Sonuç olarak, kalıtım ve polimorfizm kavramlarının kullanımı, nesne yönelimli programlama dillerinde oldukça önemlidir. Bu özellikleri doğru bir şekilde kullanarak, kodlarımızı daha kısa, daha okunaklı ve daha kolay anlaşılır hale getirebiliriz. Bu nedenle, programlama dilini öğrenirken kalıtım ve polimorfizm kavramlarını da öğrenmek oldukça önemlidir.
SedanSedan, otomotiv endüstrisinde bir arabanın gövde tipi olarak adlandırılır. Sedan tipi araçlar genelde dört kapılıdır. Bu araçlarda genellikle sürücü ve yolcular farklı kabinden geçerek araca binerler. Sedanlar, aile arabaları olarak bilinirler. Yolculara rahat bir sürüş deneyimi sunan bu araçlar, aynı zamanda şık bir görünüm de sağlarlar.
Sedanlar, diğer birçok araba türüne göre daha geniş bir iç hacme sahiptirler. Bu sebeple, seyahat ederken rahat bir genişliğe sahip olmak isteyen insanlar sedan araçları tercih ederler. Genellikle acil durumlarda da tercih edilen sedan arabaları, güvenli, konforlu ve uzun mesafeler için ideal bir sürüş deneyimi sunarlar.
Birçok otomobil üreticisi, farklı özelliklere sahip sedan araçlar üretmektedir. Bu özellikler arasında konfor, performans, yakıt tasarrufu ve güvenlik sistemleri vardır. Arabaların fiyatı, modeline, özelliklerine ve alınacak dilen markaya göre değişim gösterir.
Özetle, sedan türü araçlar, rahatlığı, şıklığı ve performansı bir arada sunan ideal aile arabalarıdır. Sundukları rahatlık ve konfor, uzun sürüşlerde insanlar için olmazsa olmaz bir özelliktir. Bu araçlar, otomotiv endüstrisinde oldukça popülerdir ve araba severler tarafından tercih edilirler.
sınıfından bir nesne oluşturulup kullanılacaktır.Sedan sınıfından bir nesne oluşturmak için yapmanız gereken oldukça basit. Öncelikle, Sedan sınıfının özelliklerini kullanmak istediğimizi belirtmeliyiz. Bunun içinAraba sınıfından kalıtım aldığı için, Sedan sınıfına erişmek için Araba tipinden bir nesne oluşturabiliriz. Ardından, bu nesneyi Sedan sınıfına dönüştürmek için Tür dönüşümü yapmalıyız.
Ortaya çıkan kod şu şekilde olacaktır:
Araba arabam = new Sedan();Sedan sedanAraba = (Sedan)arabam;
Böylece,Sedan sınıfından bir nesne oluşturmuş olduk. Artık, sedanAraba nesnesi üzerinden Sedan sınıfının özelliklerine ve fonksiyonlarına erişebiliriz.