Nesne Yönelimli Programlama (OOP), kodlama yaparken karşımıza çıkan problemleri günlük hayattaki nesneleri soyutlayarak modellemektir. Ortaya çıkan modeli, nesne yönelimli programlama kurallarına ve özelliklerine göre kodlayabiliriz.
Nesneye yönelik düşünmeyi örnekleyecek olursak, gerçek hayatta gördüğümüz nesnelerin bilgisayar ortamına aktarılma şeklidir. Bu aktarımı sağlarken programımızdaki görevine göre ismini, rengini, modelini, markasını gibi birçok özelliğini sınıflayarak bilgisayar ortamına aktarırız. Bu sayede kodlama yaparken daha kolay anlaşılabilir olmasını sağlamaya çalışırız.
Nesne Yönelimli Programlamanın Avantajları
Nesne yönelimli programlama, kodu küçük parçalara böler ve bunları yeniden kullanılabilir modüller halinde organize eder. Bu, kodun daha organize olmasını ve tekrar kullanımı artırarak yazılım geliştirme sürecini hızlandırır.
OOP, değişen gereksinimlere uyum sağlamak için kodun genişletilmesini kolaylaştırır. Yeni özellikler eklemek veya mevcutları değiştirmek, genellikle sadece ilgili sınıfları güncellemeyi gerektirir, böylece kodun genişletilmesi ve değiştirilmesi daha az sorunlu hale gelir.
Nesne yönelimli programlama, verileri ve ilgili işlevleri birleştirerek daha iyi veri yönetimi sağlar. Nesneler, veriyi saklamak ve işlemek için bir araya gelir, bu da verinin daha organize bir şekilde kullanılmasını sağlar.
OOP, gerçek dünyadaki nesneleri modellediği için, kodun daha anlaşılır olmasını sağlar. Bu, kodun daha iyi belgelendirilmesini ve ekip içinde iletişimi kolaylaştırır. Ayrıca, kodun bakımını kolaylaştırır çünkü ilgili parçaları izole etmek ve değiştirmek daha kolaydır.
Nesne yönelimli programlama, veri gizliliğini ve güvenliğini artırabilir. Kapsülleme sayesinde, sınıfların dış dünyayla etkileşimini kontrol edebilir ve verinin doğru kullanılmasını sağlayabiliriz. Bu da veri bütünlüğünü korur ve hatalı erişimleri önler.
Nesne yönelimli programlama, kodu daha düzenli bir şekilde organize eder. Sınıflar ve nesneler, kod tabanını hiyerarşik bir yapıya sokar, bu da kodun daha kolay anlaşılmasını ve yönetilmesini sağlar.
OOP, kodun tekrar kullanılabilirliğini artırır. Bir kere yazılan sınıflar ve modüller, farklı projelerde veya aynı projenin farklı bölümlerinde tekrar kullanılabilir, bu da zaman ve emek tasarrufu sağlar.
Sınıf ve Nesne Kavramları
Sınıf, nesnelerin özelliklerinin ve davranışlarının bir araya geldiği şablondur. Sınıfları oluştururken modellediğimiz nesnenin hangi özelliklere ve davranışlara (metodlar veya işlevler) sahip olacağını belirleyerek oluştururuz. Örneğin, bir “Telefon” sınıfı, telefonun ortak özellikleri (marka, model, renk, hafıza vb.) ve davranışlarını (açmak, kapamak, şarj etmek vb.) tanımlanabilir.
Nesne, bir sınıfın örneğidir. Sınıfın bir örneği olarak, nesne belirli veri alanlarına sahip olabilir ve sınıf tarafından tanımlanan metodları çağırabilir. Örneğin, “iPhone” adında bir telefon nesnesi, “Telefon” sınıfının bir örneği olabilir. Bu nesne, belirli bir markaya, modele ve hafızaya sahip olabilir ve “aç”, “kapa”, “şarj et” gibi metodları çağırabilir.
Nesne Yönelimli Programlamanın Özellikleri Nelerdir?
- Soyutlama (Abstraction)
- Kapsülleme (Encapsulation)
- Miras Alma (Inheritance)
- Çok Biçimlilik (Polymorphism)
Soyutlama (Abstraction): Bir sınıfın özelliklerini ve davranışlarını tanımlamaya “Soyutlama” denir. Örneğin bir telefonun markası, modeli, hafızası ile özelliklerini temsil eder. Telefonun açma, kapama, şarj etme davranışlarıdır ve metotlar ile tanımlarız. Özellikleri ve davranışları bir araya getirerek sınıf oluşturma aynı zamanda soyutlama işlemini tamamlarız.
Kapsülleme (Encapsulation): Kapsülleme işlemi sınıflara veya sınıf içerisindeki özelliklere, davranışlara uygulanmaktadır. Sınıflardaki her bir özellik ve davranış bir değeri temsil edecektir. Bu sınıftaki özellikleri, davranışları ve bunların değerlerini dışardan erişilip erişilmeyeceğini belirleriz. Erişilmemesi için kapsülleme işlemini uygulayabiliriz. Bunun için private erişim belirtecini kullanabiliriz.
Public: Herkesin erişebileceği özellik ve davranışlardır.
Private: Sadece kendi sınıfında kullanılabilen özellik ve davranışlardır.
Protected: Sınıf içinde miras alınan alt sınıflar tarafından kullanılabilir.
Miras Alma (Inheritance): Oluşturduğumuz sınıflar birbirinden türeyebilir. Bir sınıf diğer sınıfın alt sınıfı olabilir. Örneğin bir “Bilgisayar” sınıfının “Anakart”, “Ekran Kartı”, “RAM”, “Harddisk” gibi alt sınıfları olabilir. İşte bu örnekte “Anakart”, “Ekran Kartı”, “RAM”, “Harddisk” alt sınıfları “Bilgisayar” sınıfından miras alır.
Çok Biçimlilik (Polymorphism): Oluşturduğumuz alt sınıflar, üst sınıfının gösterdiği davranışı göstermek zorunda değildir. Alt sınıflar, programımıza göre farklı davranışlar gösterebilir; işte buna “Çok Biçimlilik” diyoruz. Örneğin bir “Araç” sınıfımız olsun, bu araç sınıfından da bir davranış olarak “Hareket Et” metodunu ekleyelim. Sonrasında bir “Araba” ve “Uçak” alt sınıfı oluşturalım. Burada “HareketEt” metodu, bir araba ve uçak için farklı davranışlar gösterecektir.
Sonuç olarak, bu konuda Nesneye Yönelik Programlama çok kullanılan popüler bir teknolojidir. Birçok kişi tarafından bilinmesi gereken bir konudur. Günümüzde mutlaka işinize yarayacak ve yazdığınız kodları anlaşılabilir kılacak bir teknolojidir.
Bu ve benzeri içerikler için Techinday’i takipte kalın!