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.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Benim adım "+self. name) def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Adı "Stephen" olan stephen adında yeni bir İnsan nesnesi oluşturun stephen = Human("Stephen") # Adı "Joe" olan joe adında yeni bir İnsan nesnesi oluşturun ve stephen'i arkadaş olarak seçin joe = Human("Joe", stephen) stephen. say_name() # 'Benim adım Stephen' gösterir stephen. say_goodnight() # 'Good night nobody.' gösterir joe. say_name() # 'My name is Joe' gösterir joe. say_goodnight() # 'Good night Stephen' gösterir

Java

Bu kod Java dilindedir.

İnsan sınıfı

class Human { private String name = "unnamed"; // bu İnsanın adı private Human friend = null; // İnsanın arkadaşı // Bu yöntem, isim ve arkadaş verildiğinde yeni bir İnsan nesnesi oluşturur public Human(String name, Human friend) { this. name = isim; this. friend = arkadaş; }      // Bu yöntem aynı zamanda sadece isim verildiğinde yeni bir Human nesnesi oluşturur public Human(String name) { this. name = name; this. friend = null; }      // Bu yöntem, hem isim hem de arkadaş verilmediğinde yeni bir Human nesnesi oluşturur public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("My name is " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody."); } else { System. out. println("Good night " + friend. name); }     } }

Yukarıdaki İnsan sınıfıyla konuşmak için bir yöntem

class Main { public static void main(String[] args) { // Create a new Human object stephen with name "Stephen" Human stephen = new Human("Stephen"); // Create a new Human object joe with name "Joe" and stephen as a friend Human joe = new Human("Joe", stephen); stephen. sayName(); // 'My name is Stephen' stephen. sayGoodnight(); // 'Good night nobody.' joe. sayName(); // 'My name is Joe' joe. sayGoodnight(); // 'Good night Stephen' } }

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.

AlegsaOnline.com - 2020 / 2023 - License CC3