Nesne Yönelimli Programlama (OOP) Nedir?

Karmaşık gerçek yaşam gereksinimlerinin, bilgisayarın anlaması için talimatlara modellenmesi gerekir. İşlemsel Programlama, Nesne yönelimli programlama, İşlevsel Programlama vb. gibi iş gereksinimlerini bilgisayar programlarına modellemeye yardımcı olabilecek birkaç paradigmamız var. Nesne yönelimli programlama adı verilen böyle bir paradigmayı öğreneceğiz. Nesne Yönelimli Programlama (OOP) bir felsefedir ve dilden bağımsızdır.

Nesne Yönelimli Programlamanın temel direkleri olarak hareket eden dört konsepte bir göz atacağız.

  • Soyutlama (Abstraction)
  • Kapsülleme (Encapsulation)
  • Miras (Inheritance)
  • Polimorfizm (Polymorphism)

Nesneye Yönelik Programlama Nedir?

COBOL ve C gibi daha eski programlama dilleri, Prosedürel Programlama yaklaşımını izledi. Bu diller kullanılarak yazılan program, bir dizi adım adım talimattan ibaretti. Programı modüler hale getirmek için prosedürlerden/alt programlardan yararlandılar. Bu programlama paradigması, veriden çok mantığa ve her ikisini bir araya getirmek için kullanılan programa odaklandı.

Java, C# vb. gibi modern programlama dilleri Nesne Yönelimli yaklaşımı izler. Nesne yönelimli programlamada, sadece bir görevi tamamlamak için talimatlar yazmak yerine verilere önem verilir. Nesne, programınızda modellemek istediğiniz bir şey veya fikirdir. Bir nesne herhangi bir şey olabilir, örneğin, çalışan, banka hesabı, araba vb.

Sınıf (Class), Nesne (Object) nedir?

Nesne yönelimli programlamaya başlamak için sınıf ve nesnenin ne olduğunu ve aralarındaki farkı bilmemiz gerekir. Sınıf, bir nesne oluşturmak için bir plandır. Bir evin mavi baskısına benzer. Bir sınıf, nitelikleri ve davranışı tanımlar.

class-ve-object-nedir

Uygulamamızda bir arabayı modelleyeceksek, o arabanın model, yakıt, marka gibi niteliklerini ve kalkış, fren, hızlanma vb. davranışları tanımlayabiliriz. Dikkat ederseniz, belirttiğimiz nitelikler ve davranışlar değil. sadece bir araba modeline özel. Programımızda modelleyeceğimiz arabanın bu sayıda özellik ve davranışa sahip olacağını söyleyerek bir arabayı genelleştirmeye çalışıyoruz. Başkaları da olabilir ama bizim iş gereksinimine olan ilgimiz ve kapsamımız bu özelliklerle sınırlıdır. . Bu, arabanın mavi bir baskısını oluşturmamıza yardımcı olur ve daha sonra bu sınıfı nesneler oluşturmak için kullanırken belirli ayrıntılara sahip araba nesneleri oluştururuz.

car-class

Örnek olarak, aynı sınıf "Araba"yı kullanarak, aynı ortak davranışa sahipken model (_model), yakıt türü (_fuelType) ve yıl bakımından farklılık gösteren farklı nesneler oluşturabiliriz.

Bu şekilde, Nesne yönelimli programlama, gerçek dünyadaki karmaşık sistem davranışını kolayca modellemenize olanak tanır. OOP ile veriler ve işlevler (öznitelikler ve yöntemler) nesne içinde bir araya toplanır. Bu, nesne yönelimli ve prosedürel yaklaşımlar arasındaki temel fark olan OOP ile herhangi bir paylaşılan veya global veri ihtiyacını önler.

1. Soyutlama (Abstraction)

Soyutlama, nesnenin nasıl yapıldığı yerine ne yaptığına odaklanmanızı sağlar. Soyutlamanın arkasındaki fikir, bir şeyi yüksek düzeyde bilmektir. Soyutlama, birbirleriyle bir şekilde etkileşime girebilen bağımsız modüller oluşturmaya yardımcı olur. Bağımsız modüller ayrıca bakımı kolaylaştırır.

Soyutlama, arka plan uygulamasını veya dahili çalışma detayını detaylandırmadan temel özelliği temsil etmek anlamına gelir.

Yalnızca bizim için veya programlama durumunda modülümüz için önemli olan şeylere seçici olarak odaklanmaya çalışıyoruz. Bağımsız bir modülün değiştirilmesi diğer modülleri etkilemez. Bir kişinin bilmesi gereken tek bilgi, bir modülün size verdiği şeydir. Bu modülü kullanan kişinin, görevin nasıl başarıldığı veya arka planda tam olarak ne olduğu hakkında endişelenmesine gerek yoktur.

Soyutlama her yerdedir. Kullandığımız günlük nesnelerin çeşitli düzeylerde uygulanan soyutlamaları vardır. Bir örnek, arabanızda veya bisikletinizde molalar vermektir. Fren sistemi soyutlanmış ve size aracınızı durdurmak için bir kürek verilmiştir. Hızlanma sisteminde değişiklik yapmak, bağımsız oldukları fren sistemini etkilemez. Ayrıca frenlerin dahili çalışması ile uğraşmanıza gerek yok, sadece fren pedalına basmanız yeterli ve ister disk fren ister kampana fren olsun araç duruyor.

2. Kapsülleme (Encapsulation)

İkinci kavram Kapsülleme, Soyutlama ile yakından ilgilidir. Kapsülleme, tüketicinin sorun alanını tam olarak anlamasını gerektirmeden bir soruna bir çözüm sunmakla ilgilidir. Kapsülleme, verileri ve davranışları tek bir birimde birbirine bağlamaktır. Bu, istemcinin veya modülün kullanıcısının, soyutlama davranışının uygulandığı iç görünüm hakkında bilgi sahibi olmasını engeller.

oop-encapsulation

Verilere doğrudan erişilmez. Açıktaki işlevler aracılığıyla erişilir. Nesnenin dahili bilgilerinin gizlenmesi, kullanıcıların bileşenin dahili verilerini geçersiz veya tutarsız bir duruma getirmelerini engelleyerek bütünlüğünü korur.

Kapsülleme, yalnızca karmaşıklığı gizlemekle kalmaz, tersine karmaşıklığı hatasız bir şekilde açığa çıkarır.

3. Miras (Inheritance)

Kalıtım, Nesne yönelimli programlama dillerinin güçlü bir özelliğidir. Kalıtım, sınıfları bir hiyerarşide düzenlemeye ve bu sınıfların, hiyerarşide yukarıdaki sınıflardan nitelikleri ve davranışları devralmasını sağlamaya yardımcı olur.
Kalıtım bir “IS A ilişkisini” tanımlar. Gerçek dünyada böyle konuşuyoruz. Örnek. Papağan bir kuştur. ABD Doları bir para birimi türüdür. Ancak Banka bir banka hesabıdır deyimi doğru değildir. Bu ilişki, verilen iş/sorun ifadesinde bazı varlıkları tanımlamaya çalıştığınızda açıktır. Kalıtım ile ortak bir uygulama/davranış tanımlayabilir ve daha sonra özel sınıflar için bunu değiştirebilir veya özel bir şeye dönüştürebilirsiniz. Kalıtım geriye doğru çalışmaz. Ebeveyn, türetilmiş sınıfın özelliklerine sahip olmayacaktır.

Miras, kodun yeniden kullanımı için bir mekanizmadır ve kodun tekrarını azaltmaya yardımcı olabilir.

Mirası zorlamayın. Sadece gereksiz kod yazıyorsunuz. Gereksinimi modellemeye çalışırken birden fazla kalıtım düzeyi eklemediğini belirtmek önemlidir. Bu gerekli değil. Modellediğiniz varlıklardaki ortak öznitelikleri ve davranışı belirlemeye çalışmanız gerekir ve buna dayanarak uygun bir üst sınıf tanımlayan kodu yeniden faktörlendirmeye devam edebilirsiniz. Ortak uygulama daha sonra bu sınıfa taşınabilir.

4. Polimorfizm

Polimorfizm, yürütülebilir bir birimin birçok farklı uygulamasının olabileceği ve aradaki farkın, arayanın farkındalığı olmadan sahnenin arkasında gerçekleştiği kavramıdır. Polimorfizm, bilgisayar sistemlerinin, oluşturulan yeni özel nesnelerle genişletilmesine izin verirken, sistemin mevcut bölümünün yeni nesnelerin belirli özellikleriyle ilgilenmeden yeni bir nesneyle etkileşime girmesine izin verir.

Örneğin, bir kağıda bir mesaj yazmanız gerekiyorsa, bir tükenmez kalem, kurşun kalem, keçeli kalem veya hatta bir mum boya kullanabilirsiniz. Sadece kullandığınız eşyanın elinize sığabilmesi ve kağıda bastırıldığında iz bırakabilmesi yeterli. Dolayısıyla yazma eylemi, kağıt üzerinde bir işaret yapmanıza yardımcı olur ve hangi işaretlemenin veya yazma aracının kullanılacağı bir karar meselesidir. Başka bir örnek, bir uçak ve uzay mekiğidir, her ikisi de Uçan nesneler olarak adlandırılabilir. Ancak her ikisinin de uçma şekli farklıdır, yani uygulamada bir fark vardır. Ancak bir izleyicinin bakış açısından her iki nesne de uçabilir.

Kalıtım, devralınan sınıfta tanımlanan davranışın, yöntemin özel bir uygulaması yazılarak geçersiz kılınabildiği polimorfizm elde etmenin bir yoludur. Buna, Çalışma Zamanı polimorfizmi olarak da bilinen yöntem geçersiz kılma denir. Ayrıca, kalıtımın resme girmediği, yöntem aşırı yüklemesi adı verilen bir polimorfizm türü daha vardır. Yöntem adı aynıdır ancak yöntemdeki argümanlar farklıdır.

Yorumlar

Bu gönderi için yorum yapılmadı.