- 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
Tiplerin Kapsüllenmesi ve Genişletilebilirliği
NYP yazılım üretmek için dengelenmiş bir yaklaşımdır. Veri ve davranış birlikte paketlenir. Bu kapsülleme, kullanıcı tanımlı veri tipleri oluşturur, dildeki veri tiplerini genişletir ve onlarla etkileşim kurar. Tiplerin genişletilebilirliği, dile kullanıcı tanımlı yeni tipler kazandırır. Bu yeni veri tipleri de en az temel tipler kadar kolay kullanıma sahiptirler.
Bir soyut veri tipi (örneğin bir dizgi) ideal ve iyi bilinen bir davranış tipinin tarifidir.
Dizgi kullanıcısı birleştirme veya yazma gibi dizgi işlemlerini bilir. Bu tür işlemler yöntem olarak isimlendirilir.
SVT ile yapılan belli uygulamalar bir takım kısıtlamalara tabi olabilir. Örneğin, dizgilerin uzunlukları sınırlıdır. Sınırlamalar her şeye açık olan davranışı etkiler. Aynı zamanda, içsel veya özel uygulama detayları kullanıcının nesneyi görme şeklini doğrudan etkilemez. Örneğin, dahili taban adresleri ve isim kullanıcı için gerekli değilse, dizgi çoğu zaman bir dizi gibi uygulanır.
Kapsülleme, kullanıcı tanımlı tipler için açık arayüzler temin edildiğinde, uygulama detaylarını saklamaya yarayan bir yetenektir. MQL5 'da, tıpkı C++ 'da olduğu gibi, sınıf (class) ve yapı (struct) tanımları, anahtar erişim belirteçleriyle (private, protected ve public) kombine şekilde, kapsülleme provizyonları için kullanılır.
public (özel) anahtar sözcüğü kendinden sonra gelen üyeler için kısıtlamasız, açık bir erişim ifade eder. Bu anahtar sözcük olmadan sınıf üyeleri varsayılan olarak kilitli durumdadırlar. Özel üyeler sadece kendi sınıfları içinde yer alan üye fonksiyonlar için erişilebilir durumdadır.
Korunan (protected) sınıf fonksiyonları sadece kendi sınıfları için değil, aynı zamanda kalıtımsal türev sınıflar içinde kullanılabilir olacaktır. Public (genele açık) sınıf fonksiyonları, sınıf bildirimi çerçevesindeki tüm fonksiyonlar için kullanılabilir durumdadır. Koruma, sınıfın uygulama bölümünün gizlenmesine ve bu sayede veri yapısındaki değişiklerin önlenmesine olanak sağlar. Erişim kısıtlaması veya veri gizleme nesne yönelimli programlamanın bir özelliğidir.
Sınıf fonksiyonları genellikle protected şekillendiricisi ile korunarak bildirilir. Değerlerin okunup yazılması ise, ayarla-ve-al şeklinde isimlendirilen yöntemlerle gerçekleştirilir. Bu yöntemler public erişim şekillendiricisi ile belirlenirler.
Örnek:
class CPerson
|
Bu yaklaşım bize çeşitli avantajlar sağlar. İlk olarak, isim aracılığıyla fonksiyonun ne işe yaradığını anlarız - sınıf üyesinin değerini ayarlar veya alır. İkinci olarak, gelecekte CPerson sınıfının -veya bunun türev sınıflarının içindeki m_name değişkeninin tipini- değiştirmemiz gerekebilir.
Bu durumda, CPerson sınıfının nesneleri, hiçbir kod değişimi olmadan programda kullanılabilir olacağından, sadece SetName() ve GetName() fonksiyonlarının uygulama şeklini değiştirmemiz yeterli olur. Çünkü kullanıcı m_name'in veri tipinin değiştiğini bile bilmeyecektir.
Örnek:
struct Name
|
Ayrıca Bakınız