- Tiplerin Kapsüllenmesi ve Genişletilebilirliği
- Kalıtım
- Polimorfizm
- Aşırı Yükleme
- Sanal Fonksiyonlar
- Bir Sınıfın Statik Elemanları
- Fonksiyon Şablonları
- Şablon avantajları
- Soyut Sınıflar
Nesne Yönelimli Programlama
Nesne yönelimli programlama (NYP), verilerin ve davranışların ayrılmaz şekilde bağlı olduğu bir süreçte, öncelikli olarak veriye odaklanmış bir programlamadır. Veri ve davranış birlikte bir sınıfı meydana getirirler ve nesneler de sınıf oluşumlarıdır.
Nesne yönelimli yaklaşımın bileşenleri şunlardır:
NYP hesaplamayı davranış modellemesi olarak görür. Modellenen parça, hesaba dayalı soyutlamalar aracılığıyla temsil edilen nesnedir. Oldukça iyi bilinen "Tetris" oyununu yazmak istediğimizi varsayalım. Bunu yapmak için, kenarlarından birbirine bağlanmış dört kareden oluşan rassal şekillerin görünümünü nasıl modelleyeceğimizi öğrenmeliyiz. Ayrıca, şekillerin düşüş hızlarını düzenlemeli, yönlendirme ve kaydırma işlemlerini tanımlamalıyız. Şekillerin ekrandaki hareketleri kuyunun sınırlarıyla belirlendiğinden bu gereksinimi de modellememiz gerekir. Bunun yanında, küplerle doldurulmuş satırlar yok edilmeli ve kazanılmış puanlar işlenmelidir.
Kısacası bu anlaşılması kolay oyun, çeşitli modellerin (şekil modeli, kuyu modeli, şekil hareketi modeli ve dahası) oluşturulmasını gerektirir. Tüm bu modeller soyutlama olarak adlandırılır ve bilgisayardaki hesaplamalar tarafından temsil edilirler. Bunları tanımlamak için Soyut Veri Tipi, SVT (veya karmaşık veri tipi) kullanılır. Aslında, kuyu içindeki "şekil" hareketinin modeli bir veri tipi değil, "şekil" veri tipi üzerindeki bir işlem kümesidir ve "kuyu" veri tipinin kısıtlamalarını kullanır.
Nesneler sınıf değişkenleridir. Nesne yönelimli programlama sayesinde bir SVT oluşturup kullanmak oldukça kolaydır. Nesne yönelimli programlama kalıtım mekanizmasını kullanır. Kalıtım, kullanıcı tarafından zaten oluşturulmuş olan veri tiplerinin, türevlerinin elde edilmesini sağlar.
Örneğin, Tetris şekillerini oluşturmak için önce bir temel Şekil sınıfı oluşturmak uygun olacaktır. Yedi olası şeklin tamamını temsil eden diğer sınıflar bu temel sınıftan türetilebilir. Şekillerin davranışları temel sınıfta tanımlanırken, bu davranışların ayrı şekiller tarafından uygulanması türetik sınıflarda tanımlanır.
NYP'da nesneler kendi davranışlarından sorumludur. SVT geliştiricisinin, nesneden normalde beklenebilecek tüm davranışları tarif etmek için bir kodu olmalıdır. Nesnenin kendi davranışlarından sorumlu olduğu gerçeği, nesne kullanıcısının programlama görevini büyük oranda kolaylaştırır.
Ekrana bir şekil çizmek istediğimizde merkezin neresi olacağını ve nasıl çizeceğimizi bilmemiz gerekir. Eğer bir şekil kendisini nasıl çizeceğini biliyorsa, programcının bunu kullanırken bir "çiz" mesajı göndermesi gerekir.
MQL5 dili, C++ benzeri bir dildir ve SVT uygulamaları için kapsülleme mekanizmasına da sahiptir. Kapsülleme bir taraftan özel bir tipin uygulamasındaki iç detayları birleştirirken, diğer taraftan, bu tipteki nesneleri etkileyebilecek, dışarıdan erişilebilen fonksiyonları birleştirir. Bu tipi kullanan bir program için uygulama detayları erişilmez olabilir.
NYP konsepti aşağıda verilenler gibi bir takım ilişkili kavramlar içerir:
- Gerçek dünyadan olayların simülasyonu
- Kullanıcı tanımlı veri tipleri
- Uygulama detaylarının gizlenmesi
- Kalıtım yoluyla kodun tekrar kullanılma olasılığı
- Çalıştırma esnasında fonksiyon çağrılarının açıklanması
Bu kavramların bir kısmı oldukça belirsizken, bazıları soyut, diğerleri ise geneldir.