Inheritance kelimesini nasıl türkçeleştireceğimi düşünürken tüm yapının yani nesneye dayalı diye adlandırılan programlama türünün kötü türkçeleştirmelerden oluştuğunu düşünmeye başladım. Daha önce bunları hep ingilizce gördüğüm ya da kullandığım için pek sorun olmamıştı tabii ama ne zaman bir çeviri kullancak olsam bunları düşünmeye başlıyorum. Zira doğal diller ve ihtiyaç dahilinde üretilen diller arasında böyle bir sıkıntı söz konusu, nasıl low level, high level diye programlama dillerini makine koduna yakınlıklarına göre ayırıyorsak, çevirilerin de bu tarz bir düzenlemeye ihtiyacı var. Dil uzmanı olmadığım için daha detaylı bir araştırma ve teori ile gelemeyeceğim ama kısaca, object oriented derken kastedilen şey ile, nesneye dayalı programlama ile kastedilen şeyin sezgisel olarak aynı şeyleri çağrıştırdığını düşünmüyorum. Buradaki örnekten yola çıkacak olursak, inheritance ı da kalıtım, kalıtsalllık gibi terimlerle ifade edersem neyin kalıtsallığı nesnenin mi? Nesne derken bizim kastımız nedir ki? Gündelik hayatınızda ingilizce konuşurken "what is that object?" diyebilirsiniz ama ben "oradaki nesne nedir?" şeklinde bir cümle hiç kurmadım. Belki sorun bendedir ya da belki sorun "şey" kelimesinden kaynaklanıyordur.
- Class: Sınıf, nesneleri tanımladığımız veri yapısı.
- Struct: Yapı, nesnelerle aynı işlemi yaptırabildiğimiz veri yapısı, daha eskiye dayanıyor.
C++ da, Class ve Struct tanımlamalarının farkından bahsederken de böyle bir sıkıntı söz konusu bence. İngilizce iken farkını biraz çıkartabiliyorum belki alışkanlıktan ama türkçe iken bambaşka gözüküyorlar. Farklarını anlarken belki işinize yarar böyle düşünmek.
- Struct: Kendiliğinden değiştirilmeden halinde (default) public öğelere sahiptir. Çok nesneye dayalı işlem içermeyen, düz yapılarınız için bunu kullanabilirsiniz.
- Class: Kendiliğinden değiştirilmeden halinde (default) private öğelere sahiptir. Yapılar arasında işlem yapıldığında, öğeler arasında fonksiyonel aksiyonlara ihtiyaç duyduğunuzda bunu kullanabilirsiniz.
Her ikisini de public ve private öğelerle ile kullanabilirsiniz tabii ki. Kısaca çok farklı değiller ama içerisine koyduğunuz yapılara göre işlem içermeyenlerin struct olmasını tavsiye ediyorlar. Public ve Private ayrımı da dediğim gibi başlangıç halleri olduğu için öğeleri oluşturma esnasında hemen değiştirebiliceğiniz bir özellik.
- Default: Özellikle belirlemediğiniz zaman bir değişkenin, fonksiyonun, sınıfların kendiliğinden alacağı değer.
- Public: Kendi scope dışından çağırabildiğimiz değişkenler, fonksiyonlar, sınıflar.
- Private: Kendi scope u dışına kapalı değişkenler, fonksiyonlar, sınıflar.
- Scope: Bir değişkenin, fonksiyonun, sınıfın içinde bulunduğu çalışma alanı, genellikle "{" ile "}" arasında tanımlanır.