OOP (Object Orianted Programming), bir yazılım programını, nesnelerin tek tek örneklerini oluşturmak için kullanılan basit, yeniden kullanılabilir kod taslakları (genellikle sınıflar olarak adlandırılır) halinde yapılandırmak için kullanılır. Çoğunlukla JavaScript, C++ , Python ve Java yazılım dillerinde çokça kullanılır. Daha kolay anlaşılması için aşağıdaki örneğe bakalım;
Örneğin Car adında bir sınıfımız var. Bu sınıfın içerisinde bir çok özellik mevcut. Örneğin renk, marka ve model gibi özellikler var. Özelliklerin yanı sıra yanında repaint() adında bir metodumuz da var. Bu sınıfı biz herhangi bir yerde tekrardan kullanmak istediğimizde OOP yardımımıza koşuyor. OOP tekniği sayesinde spagetti kod yazmaktan kaçınıyoruz. Daha anlaşılır ve kolay bir şekilde benzer kodları tekrar yazmaktan uzaklaşıyoruz.
OOP Kullanmak Bize Ne Kazandırır?
- Karmaşık kodları tekrar tekrar kullanmamıza yardımcı olur
- Karmaşık kodları basit modellemeler yapar
- Programlama dilleri arasında kullanmamıza yardımcı olur
- Hata yapma olasılığını en aza indirir, oluşan hataların kolay bir şekilde görünmesine yardımcı olur
- Kapsülleme metoduyla güvenli bir şekilde bilgileri korur
OOP Nasıl Kullanılır?
Gerçek hayattan örnek vererek anlatayım. Büyükçe bir evcil hayvan barınağınız var. İçerisinde yüzlerce evcil köpek mevcut. Tüm hayvanların isimlerini, yaşlarını ve katıldıkları günleri takip etmeniz gerekiyor. Tüm bu verileri kolay bir şekilde nasıl takip edersiniz?
Tabii ki her köpek için yüzlerce satır kod yazmak anlamsız ve verimsiz olur.
Köpeklerimizin adları Rufus ve Flffy olsun. Aşağıdaki 2 örnek gibi yüzlerce satır kod olduğunu hayal edin. Ne kadar karmaşık olduğunu farkedeceksiniz.
OOP modellemesini kullanmadan önce sınıf (Class) yapısını kurmamız gerek. Sınıf yapısını kurmak için benzer bilgileri gruplandırmamız gerek. Bunu yapmamız kodu daha kısa hale getirirken hata çıkması halinde daha kolay ve çabuk müdahale etmemize yardımcı olur. Şimdi sınıfı oluştururken örneği de dikkate alırken sırayla şu adımları gerçekleştirelim.
- Köpeklerin türü ne olursa olsun bir üst sınıf oluşturmalıyız.
- Köpekleri farklı kategorilerde temsil etmek için üst sınıfın altlarına alt sınıflar oluşturmalıyız.
- Farklılıkları temsil etmek için alt sınıflara nitelikler ve davranışlar eklemeliyiz.
- Bu alt gruptaki köpekleri temsil eden nesneler oluşturun.
Nesne Nedir?
Sınıflandırmaları tanımladık. Sırada Nesne var. Nesnelerin bir çok özellikleri vardır. Bunlardan en çok karşılaşacağımız 4 tane temel özellik var. Bunlar;
- Soyutlama (Abstraction)
- Kapsülleme (Encapsulation)
- Miras Alma (Inheritance)
- Çok Biçimlilik (Polymorphism)
Soyutlama (Abstraction)
Bir sınıfın özelliklerinin tanımlanmasıdır. Az önceki örnekteki köpeklerin isimleri, doğum tarihleri, yaşları ve kayıt tarihleri gibi değerlerdir.
Kapsülleme (Encapsulation)
Özellikler sınıfta soyutlanır ve saklanır. Kapsülleme ile hangi özelliklerin dışarıdan erişilebileceğini veya kullanılabileceğini belirleyebiliriz. Kapsülleme Public (açık), Private (gizli) ve Protected (korunmuş) olarak 3 kısımda incelenir.
- Public: Herkesin kullanabileceği, dışardan erişim sağlananlara verilen isimdir.
- Private: Sadece bulunduğu sınıfta kullanılanlara verilen isimdir.
- Protected: Kullanılmaya hazır, miras alınmış olanlara verilen isimdir.
Miras Alma (Inheritance)
Alt sınıf ve üst sınıfta bulunan ortak özellikleri kullanabilen, alabilen sisteme Miras Alma ( Inheritance) denir. Örneğin; Bir nesneni diğer bir nesne ile ortak özelliklerindeki verileri alabilir.
Çok Biçimlilik (Polymorphism)
Alt sınıf ve üst sınıftaki özelliklerin, verilerin farklı şekilde tepkiler vermesine Çok Biçimlilik (Polymorphism) denir. Örnek verecek olursak, bir nesnenin diğer bir nesne ile ortak bir özelliği bulunmasına karşın, aynı nesnelerin farklı özelliklerle de tanımlanabilmesine denir.
OOP (Object orianted programming) Hangi Programlama Dilleri Kullanır?
Günümüzde bir çok programlama dili OOP (Object orianted programming) kullanır. Ancak en aktif ve en çok kullananları listelememiz gerekirse,
- Phyton
- C++
- Objective-C
- C#
- Delphi
- Smalltalk
- Java
- TypeScript
- Swift
- Perl
- Ruby
- PHP
Kullananlar arasında en popüler olanlarıdır.
Özetle,
OOP (Object orianted programming) bilinmesi yazılım dünyasında en büyük faydalardan biridir. Her yazılımcının öğrenmesi gerekmez ancak büyük fayda sağlar. Kariyeriniz yazılım geliştirme üzerineyse öğrenmeniz sizin açınızdan ve ekip arkadaşlarınız açısından büyük avantaj sağlayacaktır.
Bu yazımda OOP (Object orianted programming) nedir, hangi faydaları sağlar, kimlerin öğrenmesi gereklidir, bölümleri nelerdir gibi sorulara cevap verdik. Diğer yazımızda görüşmek üzere.
Ayrıca BEM nedir, nasıl kullanılmalıdır? adlı yazımı okumayı unutmayın!