Nesne Yönelimli Programlama Nedir?

Nesne Yönelimli Programlama Nedir?

Nesne yönelimli programlama, kodlama yöntemlerinden biridir Nesneleri birbirine bağlayarak programlama işlemini gerçekleştirir Bu yöntem sayesinde kodlama daha düzenli ve anlaşılır hale gelir Nesne yönelimli programlama hakkında detaylı bilgi edinmek için sitemizi ziyaret edin

Nesne Yönelimli Programlama Nedir?

Nesne yönelimli programlama, yazılım geliştirme sürecinde sıklıkla kullanılan bir programlama metodudur. Bu metod, programlama sürecinde nesnelerin ve sınıfların kullanımına odaklanır. Nesne yönelimli programlama kavramı, sınıf kavramının tamamlandığı ve özellikle büyük projelerde kullanıldığı için, daha önce basit programlama prensipleriyle tasarlanmış yazılımlardan farklıdır.

Bu programlama metodunun kullanımının artmasıyla birlikte, birden fazla programlama dili nesne yönelimli prensipleri desteklemeye başladı. Nesne yönelimli programlama, programlama sürecinin kalitesini arttırırken, programın bakımını ve genişlemesini de daha kolay hale getirir. Bu sebeple başta Java ve C++ olmak üzere, birçok programlama dilinin kullanımı için standart bir halde kabul edilmiştir.


Nesne Yönelimli Programlama Prensipleri

Nesne yönelimli programlama, günümüzde sıkça kullanılan bir programlama yöntemidir. Bu yöntemin benimsenmesinin en önemli nedeni, kod yeniden kullanılabilirliğini ve kodun daha kolay anlaşılabilir olmasını sağlamasıdır. Bu prensiplerden bahsederken prensip 1, 2 ve 3 ele alınmıştır.

Prensip 1, "her nesne tek bir sorumluluğu üstlenmelidir" diyerek özetlenebilir. Yani bir nesnenin sadece belirli bir amaca hizmet etmesi gerekmektedir. Bu prensip, kodun daha anlaşılır ve yönetilebilir olmasını sağlamaktadır.

Prensip 2, "nesneler arasında iletişim kurulmalıdır ancak kod genişlemeye açık olmalıdır" şeklinde ifade edilebilir. Yani bir nesnenin başka bir nesneyle iletişim kurabilmesi gerekmektedir ancak bu iletişim kurma işlemi, kodun yeniden kullanılabilir ve genişletilebilir olmasını engellememelidir.

Prensip 3 ise, "nesneler davranışlarını değiştirmek için kalıtım yerine bileşim kullanmalıdır." şeklinde özetlenebilir. Bu prensibe göre, bir nesnenin davranışları, kalıtım yerine içerdiği başka nesneler ile değiştirilmelidir. Bu şekilde esnek kod yazımı sağlanmaktadır.

Bu prensipler, nesne yönelimli programlamanın temelini oluşturmaktadır. Bu prensipler sayesinde daha az hata yapılır, daha az kod yazılır ve kod kolayca okunabilir hale gelir.


Sınıflar ve Nesneler

Nesne yönelimli programlamada, programların yapı taşları sınıflar ve nesnelerdir. Sınıflar, benzer nitelikleri ve davranışları paylaşan nesnelerin anlamlı bir şekilde gruplandırılmasıdır. Örnek olarak, bir sınıfın özellikleri insanlar olarak tanımlanabilir ve bu sınıftan yaratılan nesneler de farklı insanlar olabilir. Nesneler ise, sınıflardan türetilen veya örneklendirilen birimlerdir. Örneğin, bir insan sınıfı belirli bir kişinin özelliklerini ve davranışlarını içeriyorsa, bu sınıftan yaratılan nesne de o kişinin kendisidir.

Nesneler ve sınıflar arasındaki temel fark, nesnelerin sınıfın özelliklerini ve davranışlarını içermesi, sınıfın ise nesnelerin ortak özelliklerini genelleştirerek bir kalıp oluşturmasıdır. Bir sınıf, tüm nesnelere uygulanan temel özellikleri tanımlayabilirken, nesne belirli bir kişinin özelliklerini yansıtır.

Sınıflar ve nesneler programlama dünyasının temel yapı taşlarıdır ve onları doğru bir şekilde anlamak, nesne yönelimli programlamanın temellerini anlamak için önemlidir. Tablo olarak verilecek olursa:

Sınıflar Nesneler
Belirli özelliklerin gruplandırmaları Bir sınıftan türetilmiş veya örneklendirilmiş birimler
Tüm nesnelere uygulanabilen temel özellikleri belirleyebilirler Belirli bir kişinin özelliklerini yansıtırlar

Kapsülleme

Kapsülleme, nesne yönelimli programlama prensiplerinden biridir. Bu prensip, bir sınıfın verilerinin ve fonksiyonlarının diğer sınıflardan veya bölümlerden gizlenmesini sağlar. Bu sayede, sınıflar arasındaki bağımlılık azalır ve programın daha esnek ve güvenli hale gelir.

Kapsülleme prensibinde, sınıfın verileri özel olarak tanımlanan fonksiyonlar aracılığıyla erişilebilir veya değiştirilebilir. Bu fonksiyonlar, genellikle sınıfın içinde tanımlanır ve sınıf dışındaki diğer bölümlerden erişimi engellemek için özel bir erişim belirleyici ile işaretlenir.

Örneğin, bir banka hesabı sınıfı ele alalım. Bu sınıf, hesap sahibinin adı, hesap numarası, bakiyesi vb. bilgileri içerebilir. Ancak, bu verilerin doğrudan erişilebilir olması güvenlik sorunlarına neden olabilir. Bu nedenle, kapsülleme prensibi uygulanarak, bu verilere sadece özel olarak tanımlanan fonksiyonlar aracılığıyla erişilebilir ve değiştirilebilir hale getirilir.

Bu sayede, hesap sahibinin adı gibi özel bilgiler sadece yetkili fonksiyonlar tarafından erişilebilir hale gelir ve diğer sınıflar veya bölümlerden gizlenir. Ayrıca, hesap bakiyesi gibi önemli verilerin yanlışlıkla veya kötü niyetli bir şekilde değiştirilmesi engellenir. Bu, kapsülleme prensibinin uygulanmasının neden bu kadar önemli olduğunun bir örneğidir.


Kalıtım

Kalıtım, nesne yönelimli programlama yapısında sıklıkla kullanılan bir prensiptir. Kalıtım prensibi sayesinde yeni bir sınıf yaratmak yerine, mevcut bir sınıfın özelliklerini alarak yeni bir sınıf oluşturabiliriz. Bu sayede zaman kazanıp, kod tekrarı yapmaktan kurtuluyoruz.

Kalıtım prensibini bir örnek üzerinden açıklamak gerekirse, düşünelim ki bir araba sınıfı oluşturuyoruz. Bu sınıfın içerisinde motor gücü, maksimum hız ve yakıt türü özellikleri bulunuyor. Daha sonra bir spor otomobil sınıfı oluşturmak istediğimizde, araba sınıfından türetme yaparak yani kalıtım prensibini kullanarak spor otomobil sınıfında bu özellikleri yeniden tanımlamak yerine araba sınıfından miras olarak alabiliriz. Böylece yeni bir sınıf oluşturmak için aynı kodu tekrar yazmaktan kaçınmış ve kod tekrarını önlemiş oluruz.

Kalıtım prensibi, bellek kullanımında da önemli bir rol oynar. Bu prensip sayesinde, aynı özellikleri tekrar tekrar yazmak yerine, bu özellikler sadece bir defa belleğe yüklenir ve diğer sınıflardan bu özellikler tek bir bellekten çağrılabilir. Böylece kod kütüphanelerini de yalnızca tek bir kez tanımlayarak, kullanımlarını her yerde yapabiliriz.

Sonuç olarak, kalıtım prensibi nesne yönelimli programlamanın olmazsa olmazları arasında yer almaktadır. Bu prensibi doğru bir şekilde kullanarak hem zaman kazanabilir hem de kod tekrarından kaçınarak daha temiz bir kod yazabilirsiniz.


Polimorfizm

Polimorfizm, nesne yönelimli programlama dünyasında oldukça önemli bir prensip olarak bilinmektedir. Bu prensip, aynı isme sahip ancak farklı özellikleri olan metodların kullanılabilmesine olanak sağlar. Yani aynı isimli metodlar, farklı parametrelerle kullanılarak farklı sonuçlar elde edilebilir.

Polimorfizm prensibi, birbirine benzeyen nesnelere aynı işlemi yapma yeteneği kazandırır. Örneğin hayvan sınıfının altında birçok alt sınıf olabilir. Bu alt sınıfların hepsi hayvanlar olduğu için beslenme, hareket ve yayılma özellikleri benzer olabilir. Ancak kuşlar ve memeliler arasında yumurtlama, ya da memeliler ile balıklar arasında sürünme yeteneği gibi farklı özellikler bulunabilir. Bu özellikler alt sınıfların metodlarına özgüdür. Polimorfizm prensibi, hayvan sınıfının içindeki alt sınıflardan herhangi biriyle değiştirildiğinde, tüm metodlar aynı şekilde çalışmaya devam edecektir. Bu da kod tekrarını azaltır ve kodun tekrar kullanılabilirliğini arttırır.

Polimorfizm prensibi, nesne yönelimli programlama dillerinde sıkça kullanılan bir prensiptir. Örneğin Java ve C++ gibi dillerde bu prensip oldukça yaygın bir şekilde kullanılmaktadır. Bu sayede kodlar hem daha az yer kaplar hem de daha okunaklı hale gelir.

Sonuç olarak, polimorfizm prensibi, aynı isme sahip ancak farklı özellikleri olan metodların kullanılabilmesine olanak sağlayarak kodların tekrarını azaltır ve daha okunaklı bir hale getirir. Bu prensip, nesne yönelimli programlama dillerinde sıkça kullanılan önemli bir prensiptir.


Metodlar ve Özellikler

Nesne yönelimli programlamada kullanılan iki önemli kavram olan metodlar ve özellikler, programlama dili içinde belli bir amaç için kullanılan birimlerdir. Bu birimler sayesinde programlama dilindeki objelerin özellikleri ve nitelikleri belirtilir.

Metodlar, programlama dili içindeki bir obje için çalışacak olan işlemleri tanımlar. Bir işlem içerisinde kullanılacak girdileri alır, bu girdiler üzerinden işlem yapar ve sonuç olarak çıktıları döndürür. Bir diğer deyişle, metodlar objelerin fonksiyonlarını belirler. Örneğin, bir araba sınıfının hızını artırmak için bir metod tasarlayabiliriz.

Özellikler ise bir objenin niteliklerini belirlemek için kullanılan birimlerdir. Bir özelliğin amacı, objenin özelliklerini tanımlayarak, bu özelliklerin ne olduğunu ve nasıl değiştirilebileceğini göstermektir. Özellikler genelde değişkenler tarafından temsil edilirler ve private, public veya protected gibi erişim seviyelerine sahip olabilirler. Örneğin, bir araba sınıfının rengi bir özellik olarak belirlenebilir.

Metodlar ve özellikler arasındaki fark, işlevleridir. Metodlar işlemler, özellikler ise objenin özellikleri ile ilgilidir.

Metodlar Özellikler
İşlemler için kullanılır. Objenin özelliklerini tanımlar.
Bir fonksiyon gibi çalışır. Bir değişken gibi çalışır.

Yukarıdaki tablo, metodlar ve özellikler arasındaki temel farkları gösterir. Her biri programlama dilinde farklı amaçlar için kullanılır ve bu birimler sayesinde programlama dili içinde modüler bir yapı oluşturulur.


Kontrol Akışı

Nesne yönelimli programlama, kontrol akışına da etki edebilen bir programlama çeşididir. Kontrol akışı, bir programın çalışırken hangi kodların ne sırayla çalışacağını belirler. Nesne yönelimli programlama ile kontrol akışı, sınıflar ve nesneler arasındaki ilişkiler ve metodlar kullanılarak kontrol edilir.

Sınıflar arasındaki miras ve örnekler (nesneler) arasındaki ilişkiler, kontrol akışının yönetiminde kullanılır. Miras, bir sınıfın başka bir sınıfın özelliklerini ve metodlarını almasıdır. Bu şekilde, bir sınıfın yeni özellikler ve metodlar eklenerek eski bir sınıftan türetilmesi mümkündür. Bu şekilde, kontrol akışı, yeni bir sınıf oluşturarak yönetilebilir.

Polimorfizm ise, ortak metodların farklı sınıflarda farklı şekilde işlevsel hale getirilmesi anlamına gelir. Bu sayede, kontrol akışı, polimorfik metodlar kullanılarak yönetilebilir.

Metodlar ve özellikler de kontrol akışında önemli bir rol oynar. Metodlar, nesnelere özel işlevler atanmasını sağlar ve kontrol akışı, bu işlevler aracılığıyla yönlendirilir. Özellikler ise, bir nesnenin veri öğelerini tutar. Bu veriler, kontrol akışını yönetmeye yardımcı olabilir.

Sonuç olarak, nesne yönelimli programlama, kontrol akışını yönetmek için çok yönlü bir yöntemdir. Sınıflar, nesneler, metodlar, özellikler ve miras gibi konular, kontrol akışının yönetiminde kullanılabilir. Bu sayede, daha karmaşık uygulamalar bile kolayca yönetilebilir.


Karar Yapıları

Karar yapıları, programlarımızda bazı koşulların sağlanıp sağlanmadığına karar vermemizi sağlayan yapılar olarak tanımlanabilir. Bu yapılar, nesne yönelimli programlama dillerinde de oldukça sık kullanılır. Bu sayede programlarımızın kontrolü sağlanarak, istediğimiz sonuçlara ulaşabiliriz.

Nesne yönelimli programlama dillerinde kullanacağımız karar yapıları, İf - Else, Switch - Case gibi komutlarla kullanılır. If - Else komutu, belirli bir koşulun sağlanıp sağlanmamasına göre farklı işlemlerin yapılmasını sağlar. Eğer koşul sağlanırsa, If bloğundaki işlemler gerçekleştirilir. Eğer koşul sağlanmazsa, Else bloğundaki işlemler gerçekleştirilir. Switch - Case komutu ise, belirli bir değişkenin farklı değerlere sahip olması durumunda, farklı işlemlerin yapılmasını sağlar.

Örneğin bir ATM programı düşünelim. Kullanıcının hesap bakiyesi ile yapmak istediği işlemi kontrol etmek istiyoruz. Eğer hesap bakiyesi yeterliyse para çekme işlemi yapılır. Aksi halde, yetersiz bakiye uyarısı verilir. Bu durumda If - Else komutu kullanarak, hesap bakiyesini kontrol edebilir ve işlemi gerçekleştirebiliriz.

Kontrol yapıları sadece değerlerin kontrol edilmesiyle sınırlı değil, belirli bir nesnenin özelliklerinin kontrol edilmesinde de kullanılabilir. Örneğin, bir araba sınıfı düşünelim. Arabanın hız özelliğini kontrol etmek istediğimizde, hızın belirli bir değerden büyük veya küçük olma durumlarına göre farklı işlemler gerçekleştirilebilir. Böylece, arabanın hızının kontrol edilmesi sağlanmış olur.

Sonuç olarak, nesne yönelimli programlama dilinde karar yapıları oldukça önemlidir. Programlarımızda belirli koşulların kontrol edilmesi ve farklı işlemlerin yapılması sağlanarak, istediğimiz sonuçlara ulaşabiliriz. Bu sayede, programlarımızın kontrolü sağlanarak hataların önlenmesi ve programların daha düzenli çalışması sağlanır.


Döngüler

Döngüler, bir programda belirli bir işlemin tekrar edilmesi gerektiğinde kullanılır. Bu işlemin belirli şartlar altında tekrarlanmasına olanak sağlayarak, yazılan programın daha dinamik ve kullanışlı olmasını sağlar. Nesne yönelimli programlamada, döngüleri kullanarak belirli işlemleri sınırsız kez tekrarlayabilirsiniz.

While, for ve do-while olmak üzere üç çeşit döngü mevcuttur. While döngüsü, belirtilen şart sağlandığı sürece tekrarlanan bir döngüdür. For döngüsü ise belirli bir aralıkta işlem yapmak için kullanılır. Do-while döngüsü ise belirtilen işlemi en az bir kez yapar ve ardından şart sağlandığı sürece tekrar eder.

  • While döngüsü ile ilgili örnek: bir dizi içerisinde belirli bir aranan elemanı bulmak için sıralı olarak arama yapmak
  • For döngüsü ile ilgili örnek: bir sayı dizisi içerisindeki elemanların toplamını hesaplamak
  • Do-while döngüsü ile ilgili örnek: bir kullanıcının belirli sayıda giriş yapması istendiğinde kullanıcının giriş yapana kadar işlem yapmaya devam etmek

Döngüler, nesne yönelimli programlamada oldukça sık kullanılır ve programlama sürecini kolaylaştırarak verimliliği arttırır. Bu nedenle, döngüler ve nesne yönelimli programlama yöntemleri hakkında detaylı bilgi sahibi olmak her programcının sahip olması gereken bir yetenektir.


Örnek Uygulamalar

Nesne yönelimli programlama prensiplerinin kullanımı ile çeşitli uygulamalar geliştirmek mümkündür. Bu prensiplerin en önemlilerinden biri olan kontrol akışı, programların hareketlerini belirlemekte büyük önem taşır. Nesne yönelimli programlama ile kontrol akışına yön verme, bu prensiplerin doğru kullanımı sayesinde gerçekleştirilebilir.

Örneğin, bir bankanın müşteri bilgi sistemine yeni bir özellik eklemek gerektiğinde nesne yönelimli programlama kullanılabilir. Bu özellik, müşterilerin kredi kartı başvurularını takip edebilmesini sağlar.

Bunun için öncelikle bir sınıf ve bu sınıftan örnekler oluşturulur. Sınıfın adı 'KrediKartiBasvuru' olarak belirlenir ve örneği 'basvuru1' olarak adlandırılır. Sınıfın özellikleri, müşteri bilgileri ve kredi başvuru bilgileri olarak tanımlanır.

Sonra, bir yöntem tanımlanır. Bu yöntem, müşterinin başvuru durumunu güncelleyebilmesini sağlar. Yöntem, ilk olarak müşterinin kredi başvurusunu yapmasını, sonra da başvurunun değerlendirilmesini içerir.

Ayrıca, kontrol akışı yönetmek için karar ve döngü yapıları da kullanılabilir. Örneğin, müşterinin kredi başvurusu onaylandığında bir döngü yoluyla faiz hesabı yapılabilir. Bu yöntem, tüm müşteri bilgi sistemlerinde kullanılabilen bir uygulamadır.

Nesne yönelimli programlama ile kontrol akışına yön verme, programlama dünyasında büyük bir yenilik getirmiştir. Bu prensiplerin doğru kullanımı sayesinde, çalışmalar daha hızlı ve verimli hale getirilebilir.