Nesne Yönelimli Programlama Nedir?
Nesne Yönelimli Programlama Nedir?
İnsan hayatını kolaylaştıracak yönde evrilen bilimler de tıpkı insanlar gibi yeniliğe ihtiyaç duyar. Bu yenilik ihtiyacı her geçen gün yeni bakış açılarını gerekli kılar. Bilimdeki farklı bakış açıları yeni yönelimleri doğurarak insan hayatını kolaylaştıran araçlar üretmeye yardımcı olur. Bu bakış açılarını öğrenmek ve yenilerin geliştirebilmek için sistemin diline hakim olmak gerekir. "Peki, sistemin dilini ve o dile bağlı gelişen bakış açılarını nasıl öğrenebilirim?" sorusu sizin de aklınızı kurcalıyorsa, bu yazıda merakınızı giderecek cevaplar bulabilirsiniz. Programlama dillerine yeni bir bakış açısı kazandıran programlama yaklaşımlarından biri de nesne yönelimli programlamadır. En çok aratılan sorulardan biri olan "Nesne yönelimli programlama ne demek?" sorusunu yanıtlamak ise düşündüğünüz kadar zor değil.
Nesne Tabanlı Programlama Nedir?
Nesne yönelimli programlama, orijinal adıyla object oriented programming nedir sorusuna bir çeşit paradigmadır şeklinde cevap verilebilir. Bazı yerlerde nesne tabanlı programlama nedir şeklinde de bu soruyla karşılaşmanız mümkün fakat bu adlandırmalar aynı şeyi işaret eder. Bu programlama, dış dünyadaki nesnelerin dijital ortamda somutlaştırılma işleminde kolaylık sağlayan bir yaklaşımdır. Peki, bu yaklaşımdaki "nesne" ne anlama gelmektedir? Burada, nesne olarak adlandırılan şey aslında dışarıda gördüğünüz her şey olabilir. Bir insan, bir masa, bir bardak ya da bir telefon… Bu nesnelerin nitelikleri ise onların özelliklerini oluşturur. Örneğin, bardağın kırmızı olması onun bir özelliğidir. Bu özellikleri dijital ortamda gösterebilmek için ise nesne yönelimli programlama tercih edilir. Ancak, bu tercih sırasında nesne yönelimli programlama dilleri de önem kazanmaktadır çünkü seçilen dil programlamada farklılıklar meydana getiren etmenlerden biridir. Bu yaklaşımı daha iyi anlamak için bazı kavramlara ihtiyaç duyabilirsiniz. Bu yüzden bir sonraki başlıkta bahsedilecek olan kavramlara göz atabilirsiniz.
Nesne Yönelimli Programlama Kavramları
Nesne yönelimli programlama oop nedir? sorusuna yönelik yapılan girişin ardından bu programla ilişkili önemli kavramlar şöyle sıralanabilir:
- Sınıf: Nesnelerin bazı metotlar ile özellik aktarımı sayesinde sınıflar meydana gelir. Sınıf içerisinde değişkenler bulunur ve bu değişkenler üyesi olduğu sınıf içerisindeki bilgileri temsil ederler. Yani sınıflar nesnelerin varlığına bağlı olarak varlık kazanırlar.
- Metot: Nesnenin yapabileceklerini sağlayan, nesnenin yetilerini temsil eden bir diğer bileşendir.
- Nesne: Yukarıda bahsedilen bileşenleri, yani sınıfı ve metotları içinde muhafaza eden veri saklayıcıdır.
- Programlama Dili: Sorunlara çözüm getirmek ve işlemleri basite indirgemek amacıyla bilgisayara, ondan beklenenleri tanıtmak için kullanılan dillerdir. Bu dillerden bazıları Java, C ve C++'dır. Örneğin, nesne tabanlı programlama Java ile etkin bir biçimde kullanılmaktadır.
Nesne yönelimli programlama kavramları genel olarak yukarıdaki şekildeki gibidir.
Nesne Yönelimli Programlama 4 Özelliği
Nesne yönelimli programlamanın temel amacı tüm işlevlerin nesneler halinde soyutlanmasıdır. Yani talimatların bilgisayar için daha az karmaşık hale getirilmesi için kullanılan yaklaşımlardan biridir. Bu yaklaşımın çıkış noktası ise önceden kullanılan prosedürel paradigmanın geliştirilmesi ihtiyacıdır çünkü eski paradigma artık güncel sorunlar için tam olarak kapsayıcı değildir. Nesne yönelimli paradigma hangi amaçla kullanılır sorusuna yanıt olarak talimatlar kadar verilere de önem verilmesi amacıyla denilebilir. Yani bu paradigma tanımlanan işlevlerin yanı sıra modellenen nesneyi de öne çıkararak geniş bir modelleme ve aktarım olanaklılığı sunar. Bu modelleme yönteminin özünde ise 4 temel özellik bulunur. Nesne yönelimli bir paradigmanın belirleyici özelliği, bahsedilecek olan özelliklerin bir arada bulunmasıdır. Nesne yönelimli programlama 4 özelliği şöyle sıralanabilir:
- Soyutlama: Soyutlama, temele alınan ve nesnenin işlevlerine dikkat çeken verilerin tanımlanması olarak açıklanabilir. Sınıfta yer alan özellikler ve davranışlar soyutlanarak bir çıktı haline gelir. Bu çıktı ise nesne yönelimli olur çünkü burada odaklanılan şey talimat değil, tanımlanan verilerin oluşturduğu bağımsız çıktıdır. Yani bir mikseri soyutlamak için o mikserin rengi, modeli, gücü gibi özelliklere ve yapabildiklerine yani davranışlarına ihtiyaç duyulur. Bu modüller birbirinden bağımsız var olabilen fakat bütünü oluşturmak için etkileşim halinde olan bileşenlerdir.
- Kapsülleme: Kapsülleme, belirli bilgilerin dışarıdan görünmesini engellemeyi sağlar ve nesnenin kontrolünü kolaylaştırır. İstemci, verilere yalnızca erişimi sağlanan işlevler sayesinde ulaşabilir. Bu da nesneyi bütünsel olarak ele almayı ve istenilen dahili bilgileri saklayabilme olanağı verir. Kapsülleme aslında koruyucu bir birimdir ve bütünü olası tehditlere karşı korur.
- Miras: Kalıtım ya da miras olarak adlandırılan bu özellik adına uygun olarak kalıtımı sağlar. Yani, bir nesne için oluşturulan özellikler başka nesnelere de miras bırakılabilir, aktarılabilir özelliktedir. Sınıflar arası özellik kalıtımı sağlayan bu özellik aktarıldığı sınıf için bir zemin görevi görür. Yani özellik miras alan sınıf kendi özelliklerine ek olarak aktarım yapılan sınıfın özellik ve metotlarına sahip olur. Böylece, kod yeniden kullanılabilir fakat tekrar sayısı azalır ve iş yükü hafifler.
- Çok Biçimlilik: Nesne yönelimli programlama prensipleri arasında en işlevsel olan özelliklerden biri çok biçimliliktir. Bu özellik, tıpkı kapsülleme gibi koruma işlevi olan bir özelliktir. Pek çok biçimde görülebilen nesne, ait olduğu sınıf içerisinde özelleştirilebilir ve farklı uygulama alanlarında kullanılabilir. Ancak, istemcinin arka plandaki biçimleri görmesi zorunlu değildir. Örneğin, terlik ve ayakkabı giyilebilen nesnelerdir fakat biçimleri ve dolayısıyla kullanım alanları farklılık gösterir. Yani, arka planda biçimsel farklar çalışırken görünürde yalnızca giyilebilir nesne bütünü sunulabilir.
Nesne Yönelimli Programlama Örnekleri
Nesne yönelimli programlama örnekleri oluşturabilmek için programlama dilleri gereklidir. Diller aracılığıyla standartlar belirlenebilir, talimatlar tek tip yapılabilir ve belirli bir problemi çözmek için tasarlanan yollar ifade edilebilir. Bu ifade etme ise nesne yönelimli olduğunda, nesne yönelimli programlama adını alır. Öyleyse, programlama dilleri ve programlama paradigması arasındaki ilişkiyi daha iyi görmek için aşağıdaki örneklerden yararlanabilirsiniz.
- C Nesne Tabanlı Programlama: Bu dili kullanarak pek çok proje geliştirmeniz mümkün. Oyun ve çeşitli uygulamalar için oldukça işlevseldir. C nesne tabanlı programlama için yukarıda bahsedilen kavramlardan yararlanmak gerekiyor. Örneğin, c dili ile bir oyun karakteri yaratıldığı varsayılırsa çıktı girilen özelliklere bağlı olarak şu şekilde görünebilir:
Character John crying
Character John smiling
Yani, oluşturulan 'karakter sınıfı' içerisinde tanımlanan nesneler öne çıkan veriler olarak sunulur.
- Nesne Yönelimli Programlama C++: Bu dil ile de nesne yönelimli programlama yapmak mümkündür. Bu örnek daha detaylı ele alınacaktır. Yukarıdakine benzer bir örnek nesne yönelimli programlama c++ için şöyle kullanacaktır:
Character.h dosyası:
class Character
Public
Character ( );
~Character ( );
std: : string name:
Virtual void smile (int Opinion);
Private
const int own_opinion =
void cry (int opinion)
Person.ccp dosyası:
#include "character.h"
//private function
void Character: : cry (int Opinion)
{
if (own_opinion ! = Opinion)
std: : cout << "character" << name << "smile" << std: :endl ;
}
//public function
void Character: : cry (int Opinion)
{
wait (Opinion) ;
std: :cout << "character" << name << "waiting" << endl;
- Bu aşamaya kadar iki adet oyun karakterinin fonksiyonları tanımlandı. Yani, sınıf ve içindeki nesneler ayrıntılı olarak kodlandı. Şimdi ise bu nesnenin kullanım adımı gösterilecektir.
Nesne Kullanımı:
#include "character.h"
int main ( )
{
Character character1;
Character character2;
character1. name = "John" ;
character2. name = "Katy" ;
character1.smile (1) ;
character2.smile (2) ;
return 0;
Artık oyun karakterleri gülme verisini işleyebilir, yani nesne kullanılabilir durumdadır.
Sonuç: Bu yazıda, nesne yönelimli programlama OOP hakkında önemli bilgilere yer verildi. Programlamanın anlamı, amacı, önemli kavramları ve prensiplerinden bahsedildi. Son olarak ise programlama dillerinden en çok kullanılanlar ile örnekler oluşturularak teorik bilgi somutlaştırıldı.