Dil Seçiniz
Telefon
WhatsApp

Kaliteli Hizmet, Güvenilir Ödeme ve Hızlı Teslimat Güvencesi..

İLETİŞİM

Nesne Yönelimli Programlama Temel Prensipleri

Nesne Yönelimli Programlama Temel Prensipleri

Nesne tabanlı/yönelimli programlama (OOP); yazılım tasarımını nesneler ve nesneler üzerinde düzenleyen bir programlama dili modelidir. Günümüzde yazılım geliştirme teknolojileri içerisinde büyük bir önem taşır.
Yazılımların karışıklığı ve boyutlarının artmasıyla birlikte, 1960’lı yılların sonuna doğru ortaya çıkarak o dönemlerde yazılım dünyasının yaşadığı sorunlara çözüm olarak geliştirilmiştir.

Yazılımın en temel konusu olan nesne yönelimli programlama’nın temel prensiplerini detaylarıyla öğrenmek istiyorsanız bu blog yazısı tam size göre! ????
Nesne Yönelimli Programlama Nedir?
Nesne Tabanlı/Yönelimli Programlama (Object Oriented Programming/OOP), 1960’lı yılların başında, meydana gelen teknolojik sorunlar neticesinde ortaya çıkmıştır.
Nesne yönelimli programlama ile, her biri kendi özelliklerine veya özniteliklerine sahip olan veri yapıları veya nesneler tanımlanır. Her nesne kendi prosedürlerini veya yöntemlerini de içerebilir. Yazılım, birbirleriyle etkileşime giren nesneler kullanılarak tasarlanmıştır.

Nesne Yönelimli Programlamanın Avantajları
Nesne yönelimli programlama, yazılım geliştirme için altı öncelikli hedef belirler.

Doğal: Doğal olması sayesinde daha anlaşılır program yazma ve geliştirme imkanı sağlanır.

Güvenilirlik : İyi tasarlanmış, özenle yazılmış nesne yönelimli programlar güvenilirdir.

Yeniden kullanılabilirlik: İyi hazırlanmış sınıflar oluşturmak zor bir yetenektir, bu noktada soyutlamaya odaklanmayı ve dikkat etmeyi gerektirir.

Sürdürülebilirlik: İyi tasarlanmış nesne yönelimli kodlar bakımlıdır. Uygulamada bir değişiklik şeffaf olduğu için diğer nesneler otomatik olarak donanımdan fayda sağlayacaktır.

Genişletilebirlik: Yazılım statik değildir bu nedenle yazılımın büyümesini ve değişmesini de göz önünde bulundurmak gerekmektedir. OOP, kodu genişletmek için çeşitli özelliklerle sunar. Bu özelliklerden bazıları; inheritance, polymorphism, overriding, delegatios ve design patterns’dir.

Zamandan Tasarruf: Modern yazılım projesinin yaşam döngüsü genellikle haftalarca sürebilir. OOP sayesinde bu süreç daha hızlı gerçekleşir. Programınızı nesneler halinde oluşturmuşsanız bir problem olduğunda birden fazla kod parçası üzerinde ayrı ayrı çalışabilir hatta birden fazla geliştirici tarafından bağımsız olarak aynı anda problemi çözebilirsiniz. Bu size zamandan tasarruf etmenizi sağlayacaktır.

Nesne Yönelimli Programlama Kullanan Diller
Nesne tabanlı programlama dilleri 1980’li yıllarda C++ ile ortaya çıkmıştır. Nesneye yönelik programlama, programcının kendi sınıfını ve nesnesini oluşturup üzerinde işlemler yapmasını sağlar.
Günümüzde yazılımcılar nesneye yönelik olan ve Visual özellikler içeren sürümleri kullanmaktadır. Visual C++, C++ Builder, Delphi, Java, Visual Basic vb. gibi örnekler sayılabilir.

Python
C++
Objective-C
Delphi
Smalltalk
Java
Swift
C#
Perl
Ruby
PHP
Nesne Yönelimli Programlama’nın Temel Prensipleri
Classes (Sınıflar); bireysel nesneler, nitelikler ve yöntemler için plan görevi gören kullanıcı tanımlı veri türleridir.
Objects (Nesneler), özel olarak tanımlanmış verilerle oluşturulan bir sınıfın örnekleridir. Nesneler, gerçek dünyadaki nesnelere veya soyut bir varlığa karşılık gelebilir. Sınıf başlangıçta tanımlandığında, tanımlanan tek nesne tanımdır.
Methods (Methodlar), bir nesnenin davranışlarını tanımlayan bir sınıf içinde tanımlanan işlevlerdir. Sınıf tanımlarında yer alan her yöntem, bir örnek nesneye başvuru ile başlar.
Attributes (Nitelikler), sınıf şablonunda tanımlanır ve bir nesnenin durumunu temsil eder. Nesneler, nitelikler alanında depolanan verilere sahip olacaktır. Sınıf nitelikleri sınıfın kendisine aittir
Nesne yönelimli programlama 4 temel prensip kapsamında incelenir.

Soyutlama (Abstraction)
Kapsülleme (Encapsulation)
Miras Alma (Inheritance)
Çok Biçimlilik (Polymorphism)

Soyutlama (Abstraction)
Soyutlama, bir sınıfın özelliklerinin ve davranışlarının tanımlanmasıdır.

Örneğin; Arka planda neler döndüğünü bilmeden Console.WriteLine(“Merhaba”); ile ekrana “Merhaba” yazdırırız. Bu durum, abstraction prensibidir. Kısaca objelerin ayrıntılarıyla uğraşmak yerine yalnızca girdi ve çıktılarına odaklanarak tasarımı daha iyi oluşturmayı ve anlamayı sağlamaktır.

Kapsülleme (Encapsulation)
Kapsülleme (Encapsulation) bir sınıfın içerisinde bulunan metodların ve değişkenlerin korumasıdır. Kapsülleme ile hangi özellik ve davranışın dışarıdan kullanılacağını belirlenebilir.
Kapsülleme public, private ve protected olarak 3 temel incelenir. Eğer erişim belirleyici belirtilmemişse, sınıflar internal’dır.

Public: Herkesin kullanabildiği özellik ve davranışlara verilen isimdir.
Private: Sadece kendi sınıfında kullanılan özellik ve davranışlara verilen isimdir.
Protected: Sınıf ve Miras Alınan alt sınıflarda kullanılmaya açık olanlara verilen isimdir.
Internal: Sadece bulunduğu proje içerisinden erişilebilir konumda olmasını sağlar.
Protected Internal: Sadece tanımlandığı sınıfta ya da o sınıfı miras alan sınıflardan erişilebilir. Aynı proje içerisinde olma şartı olmamasıyla protected’dan farklılaşır.
Inheritance (Kalıtım)
Inheritance (miras alma/kalıtım), bir nesnenin özelliklerinin farklı nesneler tarafından da kullanılabilmesine olanak sağlayan OOP prensibidir.
Sınıflar arasında hiyearşik bir yapı kurabilmek amacıyla kullanılır. Inheritance, bir sınıfın kendi özellikleri ve metotlarının yanı sıra kalıtım alınan base sınıfın özellikleri ve metotlarına da sahip olabilmesine olanak sağlar.

Bir nesne sınıfından alt sınıflar (subclasses) oluşturulabiliyorsa, türetme özelliği (derivation) var demektir. Kendisinden alt sınıf üretilen sınıfa, temel sınıf (base class) veya süper sınıf (super class) veya ana sınıf (parent class) adı verilir.

Alt sınıfın nesneleri, türetildikleri temel sınıfa ait özellikleri alıyorsa, burada miras alma (inheritance) özelliği vardır. Miras alma özellikli bir nesne yönelimli programlama dilinde, bir nesne sınıfından türetilen alt nesne sınıfına ait nesneler, üst sınıfın özelliklerini (properties) ve metodlarını (methods) aynen alırlar.

Çok Biçimlilik (Polymorphism)
Polimorfizm, türetilmiş sınıflar için yöntemleri yeniden tanımlama yeteneğidir. OOP’de polimorfizmin en yaygın kullanımı, bir alt sınıf nesnesini belirtmek için bir üst sınıf referansı kullanıldığında ortaya çıkar.

Her nesne sınıfı, kendi metotlarını paketlediği için ve bu metotlar programın kalan kısmı için gizli olduğundan, farklı sınıflar aynı isimde bazı metotlara sahip olabilirler.