Nesne yönelimli programlama
Nesne yönelimli programlama (OOP), veri ve yöntemleri temsil etmek için "nesneler" fikrini kullanan bir bilgisayar programı yazma yoludur. Genellikle bilgisayar programları, bilgisayara belirli şeyleri belirli bir şekilde yapmasını söyleyen ve prosedürel programlama olarak adlandırılan bir talimat listesinden ibaretti. Ancak nesne yönelimli programlamada, bilgisayar programları birbirleriyle konuşan nesnelerden yararlanır ve kullanıcının istediği şekilde çalışmak için bu nesnelerdeki verileri değiştirir. Ayrıca, nesne yönelimli programlamanın tasarlanma şekli nedeniyle, kodun programın diğer bölümleri ve hatta diğer insanlar tarafından kolayca yeniden kullanılmasına izin vererek geliştiriciye yardımcı olur.
Çoğu programlama dili, bilgisayar programları yazmanın farklı yollarının bir karışımıdır. Örneğin, Python bilgisayar programlarının hem nesne yönelimli programlama hem de prosedürel programlama ile yazılmasına izin verir. OOP'de bilgisayar programları yazmanıza izin veren birçok programlama dili vardır, Bu programlama dillerinden bazıları, örneğin: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, vb.
Özellikler
Nesne yönelimli programlamanın ana fikri, her şeyin bir nesne olduğudur. Ancak, nesne farklı türlerde olabilir:
- Değişkenler, programlama dili tarafından desteklenen farklı türlerdeki bilgileri (veya verileri) tutabilir. Örnek olarak tamsayı veri tipi ve liste veri yapısı verilebilir. Değişkenler, prosedürel programlama dillerinde zaten mevcut olan bir fikirdir. Nesne yönelimli programlamada, değişkenler temel olarak nitelikler olarak bilinir.
- Prosedürler (fonksiyonlar, yöntemler veya rutinler olarak da bilinir) bilgisayara girdi almasını, bazı hesaplamalar yapmasını veya verileri değiştirmesini ve kullanıcıya çıktı döndürmesini söyleyen talimatların bir listesidir. Prosedürler aynı zamanda prosedürel programlama dillerinde zaten mevcut olan bir fikirdir. Nesne yönelimli programlamada, prosedürler esas olarak metotlar olarak bilinir.
- Sınıflar, farklı değişkenler ve prosedürlerden oluşan bir koleksiyondur. Sınıflar genellikle kullanıcının istediği şekilde çalışmak amacıyla verilerde değişiklik yapmak için birbirleriyle konuşurlar.
Nesneler, sınıfların örneklerini ifade etmek için kullanılan bir terimdir.
Örnekler
Aşağıdaki örneklerde, Human adında
bir sınıf oluşturuyoruz. Bu sınıf name
(kişinin adı için) ve friend
(arkadaşın adı için) niteliklerini içerir. Human
sınıfındaki yöntemlerin her biri, hem name
hem de friend
niteliklerini kullanan bir talimat listesi içerir.
Python
Bu kod Python'da yazılmıştır.
Java
Bu kod Java dilindedir.
İnsan sınıfı
Yukarıdaki İnsan sınıfıyla konuşmak için bir yöntem
Eleştiri
Nesne yönelimli programlama popüler olsa da, kötü olduğunu düşünen ve eleştiren birçok insan var.
- Luca Cardelli 'Nesne Yönelimli Dillerin Kötü Mühendislik Özellikleri' başlıklı bir makale yazdı.
- Richard Stallman 1995 yılında şöyle yazmıştır: "Emacs'a OOP eklemek açıkça bir gelişme değildir; Lisp Machine pencere sistemleri üzerinde çalışırken OOP kullandım ve bunun programlama için üstün bir yol olduğu yönündeki genel görüşe katılmıyorum."
- Potok ve arkadaşları tarafından yapılan bir çalışma bize OOP ve prosedürel yaklaşımlar arasında verimlilik açısından çok az fark olduğunu söylüyor.
- Christopher J. Date, OOP'yi diğer şeylerle karşılaştırmanın, özellikle de OOP ile diğer şeyin nasıl ilişkili olduğunu karşılaştırmanın zor olduğunu çünkü insanların OOP'nin anlamı konusunda hemfikir olmadıklarını söyledi.
- Alexander Stepanov, OOP'nin matematikle sınırlı bir bakış açısı sunduğunu öne sürmüş ve bunu "neredeyse Yapay Zeka kadar bir aldatmaca" olarak nitelendirmiştir
- Başarılı bir internet satıcısı ve programcısı olan Paul Graham, OOP'nin amacının, ortalama kuruluşlardaki ortalama programcıların "çok fazla zarar vermesini" engelleyen bir sürü mekanizması olarak hareket etmek olduğunu öne sürmüştür. Bu aynı zamanda işleri daha güçlü ve daha kompakt bir şekilde nasıl yapacağını bilen daha hızlı, daha iyi programcıları yavaşlatır. [1]
Sorular ve Yanıtlar
S: Nesne yönelimli programlama nedir?
C: Nesne yönelimli programlama, veri ve yöntemleri temsil etmek üzere "nesneler" kullanarak bilgisayar programları yazmanın bir yoludur.
S: Nesne yönelimli programlamanın prosedürel programlamadan farkı nedir?
C: Prosedürel programlamada, bilgisayar programları bilgisayara belirli şeyleri belirli bir şekilde yapmasını söyleyen bir talimatlar listesidir. Nesne yönelimli programlamada bilgisayar programları, bu nesnelerdeki verileri değiştirmek ve kullanıcının istediği şekilde çalışmak için birbirleriyle konuşan nesneler kullanır.
S: Nesne yönelimli programlama geliştiricilere nasıl fayda sağlar?
C: Nesne yönelimli programlama, kodun programın diğer bölümleri ve hatta diğer insanlar tarafından kolayca yeniden kullanılmasını sağlar.
S: Python programlama dili ne ile bilinir?
C: Python, bilgisayar programlarının hem nesne yönelimli programlama hem de prosedürel programlama ile yazılmasına olanak tanır.
S: Nesne yönelimli programlamada bilgisayar programları yazmanıza izin veren programlama dillerine örnek verebilir misiniz?
C: Nesne yönelimli programlamada bilgisayar programları yazmanıza izin veren programlama dilleri arasında C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C#, vb. bulunmaktadır.
S: Nesne yönelimli programlamada nesneler nedir?
C: Nesneler, nesne yönelimli programlamada veri ve yöntem içeren varlıklardır.
S: Nesne yönelimli programlamada nesneler nasıl çalışır?
C: Nesneler, bu nesnelerdeki verileri değiştirmek ve kullanıcının istediği şekilde çalışmak için birbirleriyle etkileşime girer.