
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu (ve alt çizgi ile başlayan her şey) korumalı bir sınıf özelliğidir.
Böylece bir bütün halinde birleştirilirler!
Yalnızca bir işlev vardır - Karşılaştırma(), ancak içinde iletilen anahtarla karşılaştırmak gerekir. Buna göre, belirli korunan işlevlerden biri seçilir. Bu nedenle, kullanıcının erişemeyeceği şekilde korunurlar (korunurlar) - bunlara yalnızca, alt çizginin gösterdiği gibi Karşılaştır () üzerinden erişilir.
Bu aynı zamanda kod tasarım kurallarından biridir - alt çizgi ile başlayan bir işlevin kullanıcılar tarafından çağrılması amaçlanmamıştır, yalnızca belirli sınıf içi görevlere hizmet eder. Buna erişim sınırlıdır.
Peki, neden böyle sirk hileleri, klasiklerle her şey çok daha kolay yapılırken. İç içe değişkenleri ve işlevleri gizlemek ve bunlara erişilmesini önlemek için sarmalayıcı işlevleri ve küme parantezlerini kullanın; sorun olmaz. Bu koruyucularla sadece kendinizi ve başkalarını karıştıracaksınız ...
Peki, neden böyle sirk hileleri, klasiklerle her şey çok daha kolay yapılırken. İç içe değişkenleri ve işlevleri gizlemek ve bunlara erişilmesini önlemek için sarmalayıcı işlevleri ve küme parantezlerini kullanın; sorun olmaz. Bu koruyucularla sadece kendinizi ve başkalarını karıştıracaksınız ...
Anlamıyorum... Korumalı, bir işlev için erişim değiştiricisidir. Yani, yalnızca bir sınıf işlevinden veya onun soyundan gelen erişim mümkün olan korumalı bir işlev kullanılır. Artı benim için alt çizgi karakteri, kişisel olarak, kullanırken dikkate alınması gereken bazı örtük varsayımlar olduğu anlamına gelir.
Dennis Kirichenko haklı olarak not etti - her şeyi tek bir Karşılaştırma() işleviyle yazmak mümkün olurdu. Ama o zaman iki düzine ekranda ortaya çıkacaktı, Onu araştırmak gerçekçi olmayacaktı, onu değiştirmek şimdi olduğundan daha zor olurdu.
Karşılaştırma() işlevinde yalnızca tuş seçiciyi bıraktım ve belirli tuşlarla karşılaştıran kodu ayrı işlevlere böldüm. Bu işlevler son derece bağlama özel olduklarından, yalnızca başka bir sınıf işlevinden veya soyundan erişilebilecekleri şekilde sınıfın korumalı bölümünde bildirilirler. Ve bu işlevlerin başka bir işlevin içinde belirli bir dar görevi gerçekleştirmek üzere tasarlandığını kendime hatırlatmak için onlara bir alt çizgi ile başlıyorum. Gelecekte böyle bir fonksiyonla karşılaşırsam, onu çağırırken dikkate alınması gereken örtük varsayımlar olduğunu hemen göreceğim.
Görünüşe göre siz ("sizinle devam edelim") erişim değiştiricilerin ne olduğunu ve neden gerekli olduklarını tam olarak anlamıyorsunuz.
Anlamıyorum... Korumalı, bir işlev için erişim değiştiricisidir. Yani, yalnızca bir sınıf işlevinden veya onun soyundan gelen erişim mümkün olan korumalı bir işlev kullanılır. Artı benim için alt çizgi karakteri, kişisel olarak, kullanırken dikkate alınması gereken bazı örtük varsayımlar olduğu anlamına gelir.
Eh, kişisel hakaretler olmadan ...
Bir işleve erişimi, herhangi bir OOP olmadan klasik yollarla kısıtlayabilirsiniz.
Nasıl ?
İşte görev - gelecekte, kodu değiştirirken, belirli bir işlevi "herhangi bir yerde" almak ve kullanmak imkansız olacak şekilde yapmak. Bunu, kamu korumalı-özel değiştiricileri kullanarak sınıf alanına erişimi kısıtlamayan OOP olmadan nasıl yapılır?
Görünüşe göre, static ve const (bu OOP değildir) gerekli değildir.
OOP'ye gelince, geniş pratik uygulaması olan (hiç de soyut olmayan) bir sonraki işlevin prosedürel tarzda nasıl görüneceği çok ilginç?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Sipariş numaralandırma döngüsünün organizasyonu
fxsaber , 2017.10.18 12:29
Bu sürüm özellikle bir VPS'deki MT5 için geçerlidir, çünkü. MT5, History ile çok yavaş çalışır ve hesaplama açısından pahalıdır.
Açıkçası, herhangi bir OOP prosedürel bir tarzda yeniden yazılabilir. Ama pratikle ilgileniyorum. Bu nedenle, OOP'nin minimumda kullanıldığı yukarıdaki küçük kodu aldım.
Peki bu örnekte OOP ile karşılaştırıldığında prosedürel stil ne kadar daha güzel/daha uygun/daha okunabilir/daha doğru? Pekala, birkaç sayfayı asılsızlaştırmamak için, ancak prosedürel kısa kaynak kodlarını OOP ile karşılaştırmak için. OOP muhaliflerinden bir ana sınıf göstermelerini istiyorum. Bu korkunç bir MT5 değil, eski güzel bir MT4.
Lütfen ipliği selden temizleyin, sadece eğitim mesajları bırakın Alexey Volchanskiy
zaten geç))) dahası, sadece dışarı çıkmak için zaman bulacağım, aniden çok meşgul olduğum ortaya çıktı
Biraz ders çalışayım, belki videolar çıkar
Lütfen ipliği selden temizleyin, sadece eğitim mesajları bırakın Alexey Volchanskiy
Vladimir, bunca yıldır öğrenmediysen bence başlamak için çok geç ;)
Görünüşe göre, static ve const (bu OOP değildir) gerekli değildir.
OOP'ye gelince, geniş pratik uygulaması olan (hiç de soyut olmayan) bir sonraki işlevin prosedürel tarzda nasıl görüneceği çok ilginç?
Açıkçası, herhangi bir OOP prosedürel bir tarzda yeniden yazılabilir. Ama pratikle ilgileniyorum. Bu nedenle, OOP'nin minimumda kullanıldığı yukarıdaki küçük kodu aldım.
Peki bu örnekte OOP ile karşılaştırıldığında prosedürel stil ne kadar daha güzel/daha uygun/daha okunabilir/daha doğru? Pekala, birkaç sayfayı asılsızlaştırmamak için, ancak prosedürel kısa kaynak kodlarını OOP ile karşılaştırmak için. OOP muhaliflerinden bir ana sınıf göstermelerini istiyorum. Bu korkunç bir MT5 değil, eski güzel bir MT4.
Vladimir, bunca yıldır öğrenmediysen bence başlamak için çok geç ;)
Ve kim olduklarını ve ne öğrenmediklerini açıklayabilir misiniz? Moderatörler temizlemeyi veya başka bir şeyi öğrenmediler)
Not: Bu arada, tüm şubede, her zamanki gibi, herhangi bir konuyu ele almak için tek bir dilek görmedim, her zamanki kavga. Bu yüzden OOP cihazında sıfırdan YouTube'da videolar kaydetmeye karar verdim, en azından bir faydası olacak. Her neyse, bir süre sonra dal, branch_sump'ta olacaktır.