getter ne demek?

Getter (Bilgisayar Bilimi)

Getter, Nesne Yönelimli Programlama (OOP) prensipleri doğrultusunda, bir nesnenin özel (private) veya korumalı (protected) üye değişkenlerinin değerini okumak için kullanılan bir yöntemdir. Get, İngilizce "almak" fiilinden türetilmiştir ve bu yöntemlerin temel amacı, sınıfın iç yapısını doğrudan erişime kapatarak veri kapsülleme ilkesini sağlamaktır. Getter'lar aracılığıyla, nesnenin özelliklerine kontrollü bir şekilde erişim sağlanır. Bu, kodun daha güvenli, bakımı daha kolay ve daha esnek olmasını sağlar.

İçindekiler

  1. Temel Tanım ve Amaç
  2. Veri Kapsülleme ve Getter'ların Rolü
  3. Getter Yöntemlerinin Avantajları
  4. Getter Yöntemlerinin Dezavantajları
  5. Farklı Programlama Dillerinde Getter Kullanımı
  6. Getter ve Setter Farkı
  7. Ne Zaman Getter Kullanılmalı?
  8. Alternatifler ve İlgili Kavramlar
  9. Örnek Senaryolar
  10. Sonuç
  11. Kaynakça

1. Temel Tanım ve Amaç

Getter, bir sınıfın üye değişkenine (attribute) dışarıdan erişimi kontrol etmek ve bu erişimi belirli kurallar çerçevesinde gerçekleştirmek için kullanılan bir yöntemdir. Temel amacı, sınıfın iç yapısını korurken, değişken değerine erişim imkanı sunmaktır. Genellikle get... şeklinde adlandırılır (örneğin, getName, getAge).

2. Veri Kapsülleme ve Getter'ların Rolü

Veri kapsülleme, bir sınıfın veri (üye değişkenler) ve bu veriyi işleyen yöntemleri (metotlar) bir araya getirme ve bu veriye doğrudan erişimi engelleme prensibidir. Getter'lar, veri kapsüllemenin önemli bir parçasıdır. Üye değişkenleri private veya protected olarak tanımlayarak, dışarıdan doğrudan erişimi engelleriz. Daha sonra, getter yöntemleri aracılığıyla, bu değişkenlerin değerlerine kontrollü bir şekilde erişim sağlanır.

3. Getter Yöntemlerinin Avantajları

  • Veri Kapsülleme: Sınıfın iç yapısını korur.
  • Kontrollü Erişim: Değişkenlere erişimi belirli kurallara bağlar. Örneğin, değer okunmadan önce bir doğrulama işlemi yapılabilir.
  • Değişiklik Esnekliği: Sınıfın iç yapısında değişiklik yapıldığında, dışarıdaki kodun etkilenmesini önler. Getter'ın içindeki mantık değiştirilerek, dışarıdaki kodun aynı şekilde çalışması sağlanabilir.
  • Hata Ayıklama Kolaylığı: Hangi kodun bir değişkenin değerini okuduğunu kolayca tespit etmeyi sağlar.
  • Salt Okunur Erişim: Bazı değişkenlerin değerinin sadece okunmasını, değiştirilmemesini sağlamak mümkündür.

4. Getter Yöntemlerinin Dezavantajları

  • Kod Karmaşıklığı: Basit durumlarda bile, getter yöntemleri ek kod satırları gerektirir.
  • Performans: Getter yöntemleri, doğrudan erişime göre daha yavaştır (ancak bu fark genellikle ihmal edilebilir düzeydedir).
  • Aşırı Kullanım: Her değişken için getter oluşturmak, bazen gereksiz olabilir ve kodun okunabilirliğini azaltabilir.

5. Farklı Programlama Dillerinde Getter Kullanımı

Java

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

C++

class Person {
private:
    std::string name;

public:
    Person(std::string name) : name(name) {}

    std::string getName() const {
        return name;
    }
};

Python

Python'da getter'lar, property dekoratörü kullanılarak veya manuel olarak tanımlanabilir.

class Person:
    def __init__(self, name):
        self._name = name # _ ile başlayan değişkenler genellikle protected kabul edilir.

    @property
    def name(self):
        return self._name

    #Manuel yöntem:
    def get_name(self):
        return self._name

C#

public class Person
{
    private string name;

    public Person(string name)
    {
        this.name = name;
    }

    public string Name
    {
        get { return name; }
    }
}

6. Getter ve Setter Farkı

Getter ve Setter yöntemleri, OOP'de birlikte kullanılır. Getter, bir değişkenin değerini okumak için kullanılırken, setter ise bir değişkenin değerini değiştirmek için kullanılır. Setter'lar genellikle set... şeklinde adlandırılır (örneğin, setName, setAge).

7. Ne Zaman Getter Kullanılmalı?

  • Bir sınıfın üye değişkenine dışarıdan sadece okunabilir erişim sağlamak gerektiğinde.
  • Değişkenin değerini okurken, bazı ek işlemler (örneğin, doğrulama, formatlama) yapmak gerektiğinde.
  • Sınıfın iç yapısında gelecekte değişiklik yapma olasılığı olduğunda.
  • Veri kapsülleme prensiplerini uygulamak gerektiğinde.

8. Alternatifler ve İlgili Kavramlar

  • Setter: Değişkenin değerini değiştirmek için kullanılır.
  • Property (C#, Python): Getter ve setter'ı birleştiren bir kavramdır.
  • Immutable Object: Değeri değiştirilemeyen nesnelerdir. Bu durumda getter kullanılır ancak setter kullanılmaz.
  • Fluent Interface: Metot zincirleme (method chaining) ile nesnenin özelliklerini ayarlamayı sağlayan bir tasarım desenidir.

9. Örnek Senaryolar

  • Bir Person sınıfında, kişinin adını (name) okumak için getName getter'ı kullanılabilir.
  • Bir BankAccount sınıfında, hesap bakiyesini (balance) okumak için getBalance getter'ı kullanılabilir. Bu getter, bakiyeyi göstermeden önce bir güvenlik kontrolü yapabilir.
  • Bir Product sınıfında, ürünün fiyatını (price) okumak için getPrice getter'ı kullanılabilir. Bu getter, fiyatı döviz kuruna göre güncelleyebilir.

10. Sonuç

Getter yöntemleri, nesne yönelimli programlama'da veri kapsülleme ve kontrollü erişim sağlamak için önemli bir araçtır. Doğru kullanıldığında, kodun daha güvenli, bakımı daha kolay ve daha esnek olmasını sağlar. Ancak, aşırı kullanımı kod karmaşıklığını artırabilir. Bu nedenle, getter yöntemlerinin ne zaman ve nasıl kullanılacağını iyi anlamak önemlidir.

11. Kaynakça

Kendi sorunu sor