MQL5'te OOP hakkında sorular - sayfa 33

 
Alexey Viktorov :

Bu bir sır değil, ekonomik takvim etkinliklerini CalendarValueHistory() getiriyor. Bir durumda, tüm haberler zaman aralığındadır. Farklı bir ülkede ve farklı bir zaman aralığında. Üçüncüsü sembolle. Ama temel bir fark var mı? Programlama dersleri, çözümleri gerçekleştirdikleri görev türlerine göre ayırıyor mu?

Geçenlerde direksiyon sınavından geçemeyen biriyle tanıştım ve öfkeyle direksiyon derslerinde bu kavşağa gitmediklerini ve bu kavşakta araba kullanmayı bilmediğini söyledim.

Bir sınıf oluşturduğunuzda, yeni bir veri türü tanıtıyorsunuz.

Sınıfınızın tam olarak ne yaptığı o kadar önemli değil.

Veri olarak sınıf nesneleriyle ne yapmayı planlıyorsunuz?

(Dizi içine koy, fonksiyonlara geç, fonksiyonlardan dön, ...)

Bu sınıfın gerekli olup olmadığı henüz belli değil.

Ve gerekirse, mutlaka üç değil bir olmalıdır.

Belki görevinizde bir (veya üç) işlevle başa çıkabilirsiniz?

 
Alexey Viktorov :

Özlem... Burada da arayüzlü şablonlara hakim olunmalı???

MQL'de bunun gibi arayüzler yok, birkaç sayfa arkada soyut bir sınıf vardı - aynı olacak, kodu daha sonra okumak benim için daha kolay

arayüzler aracılığıyla farklı kurucularla başlatmak uygundur

yardım örneğinde anahtar kelime arayüzü için https://www.mql5.com/ru/docs/basis/types/classes - bu benim bire bir şablonum, örneği kendiniz için yeniden oluşturmaya çalışın, belki de budur arıyorsun

 
Igor Makanu :

MQL'de bunun gibi arayüzler yok, birkaç sayfa arkada soyut bir sınıf vardı - aynı olacak, kodu daha sonra okumak benim için daha kolay

arayüzler aracılığıyla farklı kurucularla başlatmak uygundur

yardım örneğinde anahtar kelime arayüzü için https://www.mql5.com/ru/docs/basis/types/classes - bu benim bire bir şablonum, örneği kendiniz için yeniden oluşturmaya çalışın, belki de budur arıyorsun

Igor, çarın Fedot'a okçuya verdiği görevi hatırlıyor musun?

 beni elde etmeye çalış
     Bu-SSS-Olamaz!
     adını yaz
     Acele unutmamak için!

Ve o iki iri adam cevap verdi.

 Eğer sadece shemku al çizim -
     Bir spin başlatırdık
     Peki, yani - istediğin kadar bak,
     Şeytanı bulacaksın!

Almanız gereken kuralları veya nihai sonucu bilmiyorsanız, bir şeyi nasıl yeniden üretmeyi deneyebilirsiniz ...

 
Alexey Viktorov :

Özlem... Burada da arayüzlü şablonlara hakim olunmalı???

Eh, eğer özlemekse, o zaman senin için değil.
 
Koldun Zloy :

Bir sınıf oluşturduğunuzda, yeni bir veri türü tanıtıyorsunuz.

Bu sınıfın gerekli olup olmadığı henüz belli değil.

Ve gerekirse, mutlaka üç değil bir olmalıdır.

Belki görevinizde bir (veya üç) işlevle başa çıkabilirsiniz?

Belki geçinebilirsin ve büyük ihtimalle yapabilirsin ama ben hem indikatörden hem de danışmandan bağlanabilecek bir sınıf yazmak istiyorum. Ve işte çan kulemden, işlevin farklı versiyonlarda çağrılması gereken şekilde tasarlanmış gösterge.

 
Alexey Viktorov :

Belki geçinebilirsin ve büyük ihtimalle yapabilirsin ama ben hem indikatörden hem de danışmandan bağlanabilecek bir sınıf yazmak istiyorum. Ve işte benim açımdan, işlevin farklı versiyonlarda çağrılması gereken şekilde tasarlanmış gösterge.

İşlev, hem göstergeden hem de Uzman Danışmandan çağrılabilir.

 
Alexey Viktorov :

Görünüşe göre OOP'nin ihtiyacını ve faydalarını anlamaya başlıyorum, ancak uygulamakta zorlanıyorum.

Üç farklı değişken seti ile kullanılması gereken bir sınıf var. Ama bir şey yapar. Basit bir ifadeyle, 3 kurucu ekleyebilir, 3 değişken bildirebilir ve bunlara erişebilirsiniz. Ama anladığım kadarıyla, bu tamamen doğru değil. Ayrıca, iki versiyonda, string tipi değişkenlerden birinin adı farklıdır ve kodun farklı bölümlerinde kullanılır. Elbette değişkenlerin sırasını değiştirebilirsiniz, ancak anladığım kadarıyla bu tamamen doğru değil.

Yeni operatörle ilgili belgeleri okuyorum, ancak bu durumda nasıl yardımcı olabileceğini anlamıyorum. Üç farklı nesne değişkeni ile aynı nesnelere yönelik üç işaretçi arasındaki farkı görmüyorum. Bu, bir kez bir işaretçi oluşturduğunuzda, bu nesneyi kullandığınızda ve gereksiz olarak sildiğinizde muhtemelen faydalıdır. Ancak bir nesneye periyodik olarak ihtiyaç duyulursa, her seferinde ona bir işaretçi oluşturmak ve onu silmek tamamen aptalcadır.

Genel olarak, yardım istiyorum. C++'da OOP ile ilgili bazı açıklamalar okudum, ancak mql5 belgelerinde olduğundan daha kötü bir şekilde anlatılıyor. Sabırsız lütfen müdahale etmeyin, çok soracağım. Açıklamasız hazır kod da ilgi çekici değil, bunu anlamak istiyorum ve aptalca "Bizimle yap, bizim gibi yap ..." diye tekrarlamamak istiyorum.

"Sınıf" kavramına en yakın varlık yapıdır. Bir yapı, ilgili bir veri kümesidir. Onlar. anlamsal olarak birbiriyle ilişkili heterojen değişkenler grubudur. Sınıfta, buna bu verileri yönetmek için kullanılabilecek yöntemler eklenir. "Yöntem" in en yakın analogu bir fonksiyondur. Onlar. Sınıf, içinde bulunan verileri yönetebileceğiniz ve oluşturabileceğiniz bir dizi işleve sahip bir yapıdır. Bir sınıf nesnesi içinde veri üretmek için farklı durumlar ve seçenekler için birkaç yöntem olabilir. Sizin durumunuz için, sınıf içinde her duruma uygun bir şekilde veri oluşturacak üç yönteme ihtiyacınız olacak.
Bir sınıfın varsayılan bir kurucusu olmalıdır. Bu şey, new operatörü kullanılarak yeni bir sınıf nesnesi oluşturulduğunda çağrılır. Bir MQL programında varsayılan kurucuyu OnInit işleviyle karşılaştırırdım.
Yıkıcı, analojiye devam edersek, OnDeinit işlevinin bir analogudur.
Bir nesneyi oluşturulduktan ve işini yaptıktan hemen sonra "öldürmek" gerekli değildir. MQL programı tamamlandıktan sonra OnDeinit işlevinde oluşturulan nesneleri "öldürebilirsiniz" ve program çalışırken tüm nesneler bellekte olabilir ve erişilebilir.
 
Koldun Zloy :

İşlev, hem göstergeden hem de Uzman Danışmandan çağrılabilir.

O yüzden bundan hiç şüphem yok. Modaya uygun programlama yöntemlerine katılmak istedim ve bana böyle tavsiyeler veriyorsunuz.))) Yani, genel olarak, OOP'yi reddedebilirsiniz. Ve bu yüzden bu çan ve ıslıklara olan ihtiyacı anlamıyorum ve sonra vazgeçiyorsunuz. :)))

 
Alexey Viktorov :

O yüzden bundan hiç şüphem yok. Modaya uygun programlama yöntemlerine katılmak istedim ve bana böyle tavsiyeler veriyorsunuz.))) Yani, genel olarak, OOP'yi reddedebilirsiniz. Ve bu yüzden bu çan ve ıslıklara olan ihtiyacı anlamıyorum ve sonra vazgeçiyorsunuz. :)))

Sınıfları sebepsiz kullanıyorsanız, OOP değildir.

Ve evet, size tavsiyem, bu gadget'lara olan ihtiyacı anlayana kadar onları kullanmayın.

 
BlackTomcat :
"Sınıf" kavramına en yakın varlık yapıdır. Bir yapı, ilgili bir veri kümesidir. Onlar. anlamsal olarak birbiriyle ilişkili heterojen değişkenler grubudur. Sınıfta, buna bu verileri yönetmek için kullanılabilecek yöntemler eklenir. "Yöntem" in en yakın analogu bir işlevdir. Onlar. Sınıf, içinde bulunan verileri yönetebileceğiniz ve oluşturabileceğiniz bir dizi işleve sahip bir yapıdır. Bir sınıf nesnesi içinde veri üretmek için farklı durumlar ve seçenekler için birkaç yöntem olabilir. Sizin durumunuz için, sınıf içinde her duruma uygun bir şekilde veri oluşturacak üç yönteme ihtiyacınız olacak.
Bir sınıfın varsayılan bir kurucusu olmalıdır. Bu şey, new operatörü kullanılarak yeni bir sınıf nesnesi oluşturulduğunda çağrılır. Bir MQL programında varsayılan kurucuyu OnInit işleviyle karşılaştırırdım.
Yıkıcı, analojiye devam edersek, OnDeinit işlevinin bir analogudur.
Bir nesneyi oluşturulduktan ve işini yaptıktan hemen sonra "öldürmek" gerekli değildir. MQL programı tamamlandıktan sonra OnDeinit işlevinde oluşturulan nesneleri "öldürebilirsiniz" ve program çalışırken tüm nesneler bellekte olabilir ve erişilebilir.

Ve böylece benzer üç yöntemden de ayrılmaya çalışıyorum. Sonuçta, neredeyse aynılar. Bir dizi takvim olayı alırlar ve gereksiz girişleri filtreleyerek daha fazla işlem için bir dizi sağlarlar.