Konstruktor Çeşitleriyle Nesne Yönelimli Programlama Nasıl Yapılır?

Konstruktor Çeşitleriyle Nesne Yönelimli Programlama Nasıl Yapılır?

İşlev Üzerinden Yöntem, farklı parametreler alan metotların aynı isimle tanımlanmasına izin veren bir tekniktir Bu, kod tekrarını önlemeye, okunabilirliği arttırmaya ve daha esnek kodlama yapmaya olanak tanır Özellikle büyük projelerde kullanımı faydalıdır Konstruktorlar ise, bir sınıfın örneği oluşturulduğunda çalışan ve sınıf özelliklerine başlangıç değerleri atayan işlevlerdir Konstruktorlar, sınıfın adıyla aynı isme sahiptir ve otomatik olarak çağrılırlar Sınıf özelliklerini tanımlamak için kullanılırlar ve tam sayılar, ondalık sayılar, karakter dizileri veya başka nesneler olabilirler

Konstruktor Çeşitleriyle Nesne Yönelimli Programlama Nasıl Yapılır?

İşlev Üzerinden Yöntem, bir sınıfta aynı isme sahip farklı parametreler alan birden fazla metodun tanımlanmasına izin veren bir tekniktir. Bu teknik, programlamada ayrıntıların önemli olduğu durumlarda oldukça işlevseldir. Özellikle, farklı parametreler alan fonksiyonlar içeren bir sınıf tasarladığınızda, İşlev Üzerinden Yöntem kullanarak aynı adı taşıyan bu fonksiyonları oluşturabilirsiniz.

İşlev Üzerinden Yöntem kullanırken, metotlar farklı sayıda parametre alabilir veya parametrelerin veri türleri farklı olabilir. Bu sayede, parametre farklılıkları nedeniyle farklı metotların tanımlanması gerekiyorsa, bu metotları her biri için ayrı ayrı yazmak yerine, İşlev Üzerinden Yöntem kullanarak farklı fonksiyonlara tek bir ad vererek, programlama sürecini kısaltabilirsiniz.

Bu teknik sayesinde yazılımınız daha okunaklı ve kullanımı daha kolay hale gelir. Ayrıca, sınıfta tanımlanan metodların adını, kullanım şeklini ve parametrelerini değiştirmeden, farklı işlevlerini yerine getiren farklı metotlar tanımlama imkânı sunar.

Tablo ve liste gibi HTML yapıları kullanarak İşlev Üzerinden Yöntem uygulamalarınızı daha anlaşılır hale getirebilirsiniz. Bu sayede, yazılım ekibinde yer alan kişilerin farklı fonksiyonlara hızlı ve doğru bir şekilde erişebilmesi mümkün olur.


1. İşlev Üzerinden Yöntem Kullanım Amaçları

İşlev Üzerinden Yöntem, aynı isme sahip farklı parametrelerle işlevlerin tanımlanmasını sağlayan bir programlama tekniğidir. Bu teknik sayesinde aynı isimle farklı parametrelerle işlevlerin tanımlanabilmesi, kodun okunabilirliğini arttırır ve kod tekrarını engeller. İşlev Üzerinden Yöntem'in kullanım amaçları şunlardır:

  • Kod tekrarını önlemek: Farklı parametrelerle aynı isimli işlevleri tanımlayabildiğimiz için, benzer işlemlerin tekrarının önüne geçilir.
  • Okunabilirliği arttırmak: İşlevlerin adları aynı olduğu için kod daha kolay okunabilir hale gelir.
  • Daha esnek kodlama yapmak: İşlev Üzerinden Yöntem sayesinde farklı parametrelerle aynı ismi taşıyan işlevler tanımlanabilir. Bu sayede, kodlama daha esnek hale gelir.

Bu teknik özellikle büyük projelerde kullanımı son derece avantajlıdır. İşlev Üzerinden Yöntem ile birlikte tanımlanacak işlevler, daha açık ve anlaşılır olacak ve projenin bakımı ve geliştirilmesi daha etkili bir şekilde gerçekleştirilecektir.


2. Örnek Uygulama: İşlev Üzerinden Yöntem ile Hesap Makinesi Oluşturma

İşlev Üzerinden Yöntem (Method Overloading) kullanarak birçok programlama örneği oluşturulabilir. Bu programlama yöntemi ile hesap makinesi uygulaması oluşturma bir örnektir. Hesap makinesi uygulaması, kullanıcının girdiği sayıların toplama, çıkarma, çarpma veya bölme işlemlerini yaparak sonucu görüntüler. Bu örnekte, işlevlerin isimleri aynı kalırken, parametrelerin sayısı ve tipleri değişir.

Öncelikle, toplama, çıkarma, çarpma ve bölme işlemi için dört ayrı işlev oluşturulur. Sonra, işlevlerin isimleri aynı kalırken, işlevin parametreleri değiştirilir. Örneğin, iki tane integer değerini toplamak için yazılmış olan işlem, iki double değeri de toplayacak şekilde değiştirilebilir.

İşlev Parametreler Açıklama
topla int sayi1, int sayi2 İki sayıyı toplar ve sonucu döndürür.
topla double sayi1, double sayi2 İki double değeri toplar ve sonucu döndürür.
çıkar int sayi1, int sayi2 Birinci sayıdan ikinci sayıyı çıkarır ve sonucu döndürür.
çıkar double sayi1, double sayi2 Birinci double değerden ikinci double değerini çıkarır ve sonucu döndürür.
çarp int sayi1, int sayi2 İki sayıyı çarpar ve sonucu döndürür.
çarp double sayi1, double sayi2 İki double değeri çarpar ve sonucu döndürür.
böl int sayi1, int sayi2 Birinci sayıyı ikinci sayıya böler ve sonucu döndürür.
böl double sayi1, double sayi2 Birinci double değerini ikinci double değerine böler ve sonucu döndürür.

Hesap makinesi uygulaması için kullanıcıya ilk olarak yapmak istediği işlem (toplama, çıkarma, çarpma veya bölme) seçenekleri sunulur. Daha sonra, kullanıcı sayıları girer ve sonucu elde etmek için uygun olan işlev çağrılır. Bu örnek, İşlev Üzerinden Yöntem'in nasıl kullanabileceğimiz gibi programlama yöntemlerinden birini göstermektedir.

Nesne yönelimli programlamada en önemli kavramlardan biri konstruktorlardır. Konstruktorlar, bir sınıfın örneği (nesnesi) oluşturulduğunda çalışan özel bir işlevdir. Konstruktorlar, sınıf özelliklerine başlangıç değerleri atamak için kullanılır.

Konstruktorlar, sınıfın adıyla aynı isme sahip olan işlevlerdir ve geri dönüş değeri yoktur. Konstruktorlar ayrıca sınıf örneği oluşturulurken otomatik olarak çağrılır. Eğer bir sınıfta tanımlanan konstruktor yoksa, varsayılan konstruktor kullanılır.

Konstruktorlar, sınıfların obje/nesne özelliklerini tanımlamak için kullanılabilir. Bu özelliklerden bazıları tam sayılar, ondalık sayılar, karakter dizileri veya başka nesneler olabilir. Konstruktorların çeşitleri şunlardır:

  • Varsayılan Konstruktor: Sınıfın herhangi bir parametresi olmadan oluşturulmasını sağlayan özel bir konstruktordur.
  • Parametresiz Konstruktor: Bu konstruktor, sınıfın özelliklerinin değerlerinin elle atandığı durumlarda kullanılır.
  • Parametreli Konstruktor: Bu konstruktor, sınıfın özelliklerinin değerleri parametreler aracılığıyla atanır.
  • Kopyalama Konstruktoru: Bu konstruktor, bir nesne örneğinden diğerine özelliklerin kopyalanması için kullanılır.

Eğer bir sınıfta birden fazla konstruktor tanımlanmışsa, kullanılacak konstruktor, obje/nesne örneği oluşturulurken belirlenir. Nesne örneği oluşturulurken, hangi konstruktorun kullanılacağı ilgili parametrelerin verilmesiyle belirlenir.


1. Konstruktor Nedir?

Konstruktor, sınıfın bir nesnesi oluşturulduğunda otomatik olarak çağrılan bir özel bir yöntemdir. Yani bir sınıf oluşturulduğunda, bellekte ona ayrılan alanı kullanarak nesneyi oluşturur. Bu nesne, sınıfın özelliklerini ve yöntemlerini içerir.

Özel bir yöntem olması nedeniyle konstruktorun ismi sınıfın adı ile aynıdır ve genellikle sınıfın baş harfi büyük yazılır. Konstruktorlar geriye bir değer döndürmezler ve void anahtar kelimesi kullanılmaz.

Konstruktorlar, sınıfın özelliklerini ve metotlarını ilk değerleri ile birlikte başlatmak için kullanılırlar. Örnek olarak bir Araba sınıfı düşünelim. Bu sınıf bir arabanın özelliklerini (marka, model, renk vb.) ve onunla yapılabilecek işlemleri (hızlanma, yavaşlama, frenleme vb.) içerir. Bu sınıftan bir nesne oluşturulduğunda, o nesne bu özelliklerin default değerleri ile birlikte oluşturulur. Konstruktorlar kullanılarak, bu default değerler yerine nesnenin başlangıçtaki değerleri ataması yapılabilir.

public Araba () {
    marka = "BMW";  
    model = "Sedan";  
    renk = "Siyah";  
}      

Yukarıda verilen örnekte, Araba sınıfının varsayılan konstruktoru yer almaktadır. Bu konstruktorunun içinde, marka, model ve renk özellikleri varsayılan değerleri ile atanmıştır. Bu şekilde, bu sınıftan bir nesne oluşturulduğunda, bu özellikler varsayılan değerleri ile birlikte atanmış olacaktır.


2. Konstruktor Çeşitleri ve Kullanımları

Konstruktorlar, nesne yönelimli programlamada oldukça önemli bir yer tutarlar. Bu nedenle, konstruktorlar farklı amaçlarla kullanılabilir. İçindeki örneklerle birlikte konstruktor çeşitlerine ve kullanımlarına daha ayrıntılı bir bakış atalım.

Varsayılan konstruktor, parametre almayan ve herhangi bir işlem yapmayan bir yapıya sahiptir. Bu konstruktor, sınıf tanımlandığında otomatik olarak oluşturulur. Özellikle, bir sınıfın kullanıcı tarafından parametre belirtilmeden oluşturulması durumunda kullanılır. Aşağıdaki örnek konstruktorumuzda, VarsayılanKonstruktor adı altında bir Varsayılan Konstruktor oluşturduk.

public class VarsayılanKonstruktor {    VarsayılanKonstruktor (){      // Constructors - Varsayılan Konstruktor   }   public static void main (String args[]) {      VarsayılanKonstruktor VK = new VarsayılanKonstruktor();   }}

Parametresiz konstruktorlar, sınıfın başlatılması için kullanılan ve hiçbir parametre almayan konstruktorlardır. Bu konstruktor, sınıfın tüm üyelerine varsayılan değer atar. Aşağıdaki örnek konstruktorumuzda, ParametresizKonstruktor adı altında bir parametresiz konstruktor oluşturduk.

public class ParametresizKonstruktor {    int sayi;   String kelime;   ParametresizKonstruktor (){      sayi = 10;      kelime = "Merhaba Dünya!";   }   public static void main (String args[]) {      ParametresizKonstruktor PK = new ParametresizKonstruktor();      System.out.println(PK.sayi + " " + PK.kelime);   }}

Parametreli konstruktorlar, belirli parametreleri alan ve bu parametrelerin değerleriyle sınıfı başlatan konstruktorlardır. Aşağıdaki örnekte, ParametreliKonstruktor sınıfının bir örneği oluşturulurken iki parametre gönderilir.

public class ParametreliKonstruktor {    int sayi;   String kelime;   ParametreliKonstruktor (int a, String b){      sayi = a;      kelime = b;   }   public static void main (String args[]) {      ParametreliKonstruktor PK = new ParametreliKonstruktor(5,"Merhaba");      System.out.println(PK.sayi + " " + PK.kelime);   }}

Kopyalama konstruktorları, bir nesne oluşturmak için kullanılan diğer bir konstruktördür. Bu konstruktor, aynı sınıftan bir örneği alan ve bu örneği kopyalayan başka bir örnek oluşturur. Bu konstruktorlar, nesnelerin derin bir kopyasını oluşturmaya izin verirler. Aşağıdaki örnekte, KopyalamaKonstruktoru adı altında bir örnek kopyalama konstruktoru oluşturduk.

public class KopyalamaKonstruktoru {    int sayi;   String kelime;      KopyalamaKonstruktoru(int a, String b){      sayi = a;      kelime = b;   }     KopyalamaKonstruktoru(KopyalamaKonstruktoru kc){      sayi = kc.sayi;      kelime =kc.kelime;   }      public static void main (String args[]) {      KopyalamaKonstruktoru KK1 = new KopyalamaKonstruktoru(10,"Merhaba");      KopyalamaKonstruktoru KK2 = new KopyalamaKonstruktoru(KK1);      System.out.println(KK2.sayi + " " +KK2.kelime);    }} 

Bu örnekler, konstruktorların ne olduğu, neden kullanıldıkları ve farklı çeşitleri hakkında daha iyi bir anlayış sağlamaktadır. Konstruktorlar, nesne yönelimli programlamanın önemli bir parçasıdır ve kod yazarken dikkate alınması gereken anahtar unsurlardan biridir.


2.1 Varsayılan Konstruktor

Varsayılan konstruktor, sınıfın örneklerini oluşturmak için kullanılan bir yapıdır. Sınıfın kendisi için belirtilmemişse varsayılan olarak otomatik olarak oluşturulur. Bu nedenle, sınıfın herhangi bir örneği oluşturulmadan önce varsayılan konstruktor çağrılır.

Varsayılan konstruktor, herhangi bir parametre almadığından, sınıfın özellikleri için ön tanımlı değerler oluşturur. Örneğin, bir araba sınıfı işlevselliğini yerine getirmek için tekerlekler, bir motor ve kapılar içermelidir. Ancak sınıftan bir araba örneği oluşturulmadan önce, her bir özellik için varsayılan bir değer atanır. Bu sayede sınıftan bir örneği oluşturmak istediğinizde, özellikleri belirtme ihtiyacınız olmaz.

Varijabli Tipi Açıklamalar
marka String Otomobilin markası
model String Otomobilin modeli
tekerlekSayisi int Otomobilin tekerlek sayısı

Yukarıdaki örnek, "Araba" sınıfının varsayılan özelliklerini göstermektedir. Varsayılan bir konstruktor, "marka" özelliğini "null" olarak, "model" özelliğini "null" olarak ve "tekerlekSayisi" özelliğini "0" olarak belirler. Bu özelliklere bir değer atamadan sınıftan bir nesne oluşturabilir ve sonra bu özelliklere istediğiniz değerleri atayabilirsiniz.

Bazı durumlarda, varsayılan konstruktorlar özelleştirilmelidir. Örneğin, sınıfın özellikleri için benzersiz ön tanımlı değerler oluşturmanız gerekebilir. Bu durumda, varsayılan konstruktoru özelleştirebilirsiniz ve özelliklere özel değerler atayabilirsiniz.

Özetle, varsayılan konstruktorlar, sınıfın özellikleri için ön tanımlı değerler oluşturan ve sınıftan örneği oluşturmadan önce çağrılan yapıdır. Sınıfnız için özel ön tanımlı değerler oluşturmak istiyorsanız, varsayılan konstruktörü özelleştirerek çağrıları özelleştirebilirsiniz.


2.2 Parametresiz Konstruktor

Parametresiz konstruktor, nesneleri varsayılan halde oluşturmak için kullanılan bir yapıdır. Bu konstruktor, sınıfın özelliklerine ve davranışlarına varsayılan değerler atar. İster varsayılan isterse başka bir constructor kullanılsın, parametresiz konstruktor her zaman çağrılır.

Bu konstruktor, sınıfın özelliklerinin varsayılan değerleri ile nesneyi oluşturmak istediğimizde kullanılır. Örneğin, bir öğrenci sınıfı düşünelim. Öğrencinin ismi, numarası, bölümü gibi özellikleri vardır. Ancak öğrenciyi oluştururken, bu özelliklerin hepsi belirtilmez. Böyle durumlarda, parametresiz konstruktor ile öğrenci nesnesi varsayılan özellikler ile oluşturulabilir.

Parametresiz konstruktorun kullanımı, nesne oluşturmak istediğimizde sınıfın ismi ile çağrılır. Örneğin:

// Öğrenci sınıfının parametresiz constructor'ı çağrılıyorÖğrenci ogrenci = new Öğrenci();

Bu kodda, "Öğrenci" sınıfının parametresiz constructor'ı çağrılır. Bu şekilde, özellikleri varsayılan değerlerde olan bir öğrenci nesnesi oluşturulmuş olur.


2.3 Parametreli Konstruktor

Parametreli konstruktorlar, nesne oluşturulurken yapıcıya parametreler sağlayan bir yapıdır. Bu konstruktorlar, özel bir gereksinimi yerine getirmek amacıyla sıklıkla kullanılır. Özellikle, nesne özellikleri farklı olacak şekilde birden çok örneğin oluşturulması gerektiğinde parametreli konstruktorlar kullanılabilir.

Parametreli konstruktorlar, birçok parametre içerebilecekleri için kullanımı oldukça esnektir. Bu sayede, nesnelerin özellikleri değişken şekilde tanımlanabilir. Parametreler, nesnelerin özelliklerine önceden tanımlanmış değerler vererek, daha az kod yazarak nesne oluşturmayı mümkün kılar.

Aşağıdaki örnek ile parametreli konstructorların nasıl kullanılabileceği gösterilmiştir. Burada, bir Kitap nesnesi oluşturulurken kitap adı, yazarı ve sayfa sayısı için parametreler tanımlanıyor.

```public class Kitap { String ad, yazar; int sayfaSayisi; public Kitap(String ad, String yazar, int sayfaSayisi) { this.ad = ad; this.yazar = yazar; this.sayfaSayisi = sayfaSayisi; }}```

Yukarıdaki örnek, Kitap sınıfındaki nesne özelliklerini oluşturmak için parametreli bir konstruktör kullanır. Bu konstruktor, kitap adı, yazar ve sayfa sayısı gibi parametrelerin nesne oluşturulurken tanımlanabilmesini sağlar.

Özetle, parametreli konstruktorlar, nesne oluştururken parametreler tanımlayarak nesnenin özelliklerini değiştirmek için kullanılır. Bu sayede, kod yazma süresi azaltılabilir ve nesne özelliklerinde esneklik sağlanabilir.


2.4 Kopyalama Konstruktoru

Kopyalama konstruktoru, mevcut bir nesnenin özelliklerini başka bir nesneye kopyalamak için kullanılan bir konstruktördür. Bu, bir nesnenin bir derin kopyasını almak ve özelliklerini diğer nesnelere aktarmak için kullanışlıdır. Kopyalama konstruktoru, her zaman önceden tanımlanmış bir nesnenin tam bir kopyasını oluşturur.

Kopyalama konstruktoru, bir nesnenin bellek adresini alır ve aynı özelliklere sahip bir nesne oluşturur. Bu özelliklerin tamamı, ilk nesnenin özellikleriyle aynıdır ve bellekte farklı bir adresle saklanır. Bu nedenle, her iki nesne de birbirinden bağımsızdır.

Örneğin, bir sınıfın özelliklerini ve bu özelliklerle birlikte kopyalama konstruktorunu kullanarak bir nesne oluşturma işlemini ele alalım. Aşağıda verilen örnek kodda, kopyalama konstruktoru, bir öğrencinin adı, yaş ve okul numarasının yani tüm özelliklerinin kopyalanmasını sağlamak için kullanılır:

```C++class Ogrenci{public: string ad; int yas; int okulNo;

Ogrenci(){} // varsayılan konstruktor

Ogrenci(Ogrenci& orj){ // kopyalama konstruktoru ad = orj.ad; yas = orj.yas; okulNo = orj.okulNo; }

Ogrenci(string a, int y, int oN){ ad = a; yas = y; okulNo = oN; }};

int main() { Ogrenci ilk("Ali",20,123); Ogrenci ikinci=ilk; return 0;}

```

Yukarıdaki örnekte, "ilk" nesnesinin özellikleri, "ikinci" nesnesine kopyalanır ve "ikinci" nesnesi de "ilk" nesnesiyle tamamen aynı hale gelir. Bu şekilde, "ilk" ve "ikinci" nesneleri birbirinden bağımsız ancak özelliklerinin aynı olduğu iki ayrı nesne olarak kalır.

Kopyalama konstruktoru, nesne yönelimli programlama kavramları arasında önemli bir yere sahiptir ve bu konu, daha kapsamlı projelerde oldukça yararlıdır.