![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
erişim değiştiricileri, derleme aşamasında hataları tespit etmenizi sağlar
genel olarak, tüm bunlar sınıflarla çalışmayı zorlaştırmaz, kullanmayın, her şeyi herkese açık olarak yazın: , o zaman anlamak daha kolay olacaktır
Not: OOP, sonra kapsülleme, sonra kalıtım hakkında birçok güzel ifade ... hepsi iyi, ancak OOP'nin diğer programlama stillerine göre en önemli avantajı, tüm verilerin (sınıf alanları) depolanması ve bu verilerle çalışma işlevleridir. (sınıf yöntemleri) tek bir yerde (sınıf) - kitaba göre bu kapsüllemedir. Ayrıca , OOP kullanımı görevlere bağlıdır, eğer görev sınıfları ölçeklendirmenize izin veriyorsa, o zaman bir hiyerarşi gerekli olacaktır ve temel sınıflar ve onların mirasçıları olacaktır - bunu kullanıp kullanmamak size bağlıdır
Bir dizi ayrıca bir nesnenin tüm özelliklerini "kapsülleyebilir". Aynı yerde, somut özellikler-işaretçiler aracılığıyla nesneler arasındaki iletişimi kaydetmek mümkündür. Her özellik indekslendiğinden ve değeri belirli bir hücrede saklandığından bir düzen vardır. Nesnelerin kendileri çekirdekte kapsüllenir. En kolay erişim, nesne numarasına ve özellik numarasına göredir. Aynı denetimin nesneleri arasındaki geçişler - işaretçi özellikleri aracılığıyla.
ilk etapta uygun değil!
Ayrıca, kodun okunabilirliği hakkında yukarıda zaten yazdınız (yukarıda olduğu gibi, hızdan bahsettiniz - yürütme hızı programlama stiline değil başka bir şeye bağlıdır)
burada, genel olarak, başka yerlerde olduğu gibi - denemezseniz, bilemezsiniz, OOP tarzında yazmaya başlayın, belirli eylemler ve belirli sorular görünecektir, bu konuda bir örnek zaten var
AI hakkında konuşuyorsak, o zaman burada verileri onlarla çalışmaktan ayırmanız gerekir, OOP ile bunu yapmak daha kolay olacaktır.
Not: OOP o kadar iyi, örneğin: farklı veri türleri var, MQL'de uzman ayarları olsun ve bu ayarların bloklar halinde tekrarları var, bir ayar bloğu alıyoruz ve sınıf alanlarını tanımlıyoruz. bu ayarları sınıfa aktarın, en kolay yol parametrelerle bir kurucu oluşturmak ve ardından bu uzman ayarlarla çalışan yöntemler yazıyoruz. Bunu bitirdikten sonra, hepimiz ya bir dizi sınıf örneği ya da genel olarak sadece birkaç sınıf örneği ("sınıf türünün değişkenleri") oluştururuz ve hepsi bu - görev birkaç dizi oluşturmadan bir sınıf yazarak çözülür, her diziyi tanımlamanın yollarını oluşturmak, dizilerde veri değişiklikleri yapmak için sadece olmayan bir fonksiyon grubu oluşturmak ve en önemlisi bu çağrı sırasında işlenmemesi gereken verileri bozmamak için ....
ZYZY: IMHO, OOP sadece uygun, miras yoksa OOP kullanmanın faydasız olduğuna dair kesin bir efsane var ... yorumları biliyorum, bensiz ağızda köpük ile bir tartışma olacak
ilk etapta uygun değil!
Ayrıca, kodun okunabilirliği hakkında yukarıda zaten yazdınız (yukarıda olduğu gibi, hızdan bahsettiniz - yürütme hızı programlama stiline değil başka bir şeye bağlıdır)
burada, genel olarak, başka yerlerde olduğu gibi - denemezseniz, bilemezsiniz, OOP tarzında yazmaya başlayın, belirli eylemler ve belirli sorular görünecektir, bu konuda bir örnek zaten var
AI hakkında konuşuyorsak, o zaman burada verileri onlarla çalışmaktan ayırmanız gerekir, OOP ile bunu yapmak daha kolay olacaktır.
Not: OOP o kadar iyi, örneğin: farklı veri türleri var, MQL'de uzman ayarları olsun ve bu ayarların bloklar halinde tekrarları var, bir ayar bloğu alıyoruz ve sınıf alanlarını tanımlıyoruz. bu ayarları sınıfa aktarın, en kolay yol parametrelerle bir kurucu oluşturmak ve ardından bu uzman ayarlarla çalışan yöntemler yazıyoruz. Bunu bitirdikten sonra, hepimiz ya bir dizi sınıf örneği ya da genel olarak sadece birkaç sınıf örneği ("sınıf türünün değişkenleri") oluştururuz ve hepsi bu - görev birkaç dizi oluşturmadan bir sınıf yazarak çözülür, her diziyi tanımlamanın yollarını oluşturmak, dizilerde veri değişiklikleri yapmak için sadece olmayan bir fonksiyon grubu oluşturmak ve en önemlisi bu çağrı sırasında işlenmemesi gereken verileri bozmamak için ....
ZYZY: IMHO, OOP sadece uygun, miras yoksa OOP kullanmanın faydasız olduğuna dair kesin bir efsane var ... yorumları biliyorum, bensiz ağızda köpük ile bir tartışma olacak
Uygun ya da değil, öznel bir soru. Verilerin tablo düzenine daha yakınım. Diğerleri - bir salkım üzüm veya ağaç şeklinde. Üçüncüsü - bunun gibi bir şey ... Ama, sözlerini ciddi olarak düşüneceğim ve OOP'de verilerle çalışmanın temel ilkelerini öğrenmeye çalışacağım.
OOP'de bir "nesne", alanlarının (özellikleri) bildirildiği bir sınıfa referanstır. Bir nesne ile, her biri bir dizideki bir hücre olan, numaralandırılmış bir dizi özelliği kastediyorum. Fark bu.
PS yani programın bir sınıfı varsa, ancak bunun örneği yoksa, derleyici bu sınıfı yok sayar (fark etmez).
Bir keresinde size bir dizi işaretçiden işaretçi dizilerine iki boyutlu bir tablo olduğunu söylemiştim. Bir liste - satırlar, ilk sütunlarda yatan listeler. Kendi listeleri olabilir. Ve böylece gün batımına kadar. Aradığınız hiyerarşi budur. Ve sadece bir sınıf tarafından yapılır.
Teoride, evet. Ancak, hiyerarşinin bağlantıları arasındaki geçişlerin (koşullu olarak - tümdengelim ve tümdengelim, yani özelden genele ve tam tersi) zincir boyunca gerçekleştirilmesi için her şeyin düzenlenmesi gerekir. Yani, işaretçilerin sırası, gereksiz "dönüşler" ve "sıçramalar" olmaksızın döngüde herhangi bir (doğru) yönde hareket edebilmek için özel bir şekilde yapılandırılmalıdır. Bu nedenle, işaretçilerin basit bir tablo düzeni muhtemelen çalışmayacaktır.
Katma:
Ama uygun olabilir. Henüz bilmiyorum.
bu soruların pratik bir düzleme çevrilmesi gerekiyor, aksi takdirde neyin uygun olduğu ve neyin uygun olmadığı net olmayacak))))
İşte MQL'de yüzlerce kez kullanılan banal bir örnek - yeni bir çubuğun tanımı:
Tamam, bu çalışan bir kod, ama ya 2 zaman diliminde yeni bir çubuk tanımlamam gerekirse? ve terminaldeki tüm TF'leri kullanmak istersem?
OOP'de şöyle bir şey olurdu:
ve şimdi tek yapmam gereken CNewbar sınıfının birkaç örneğini bildirmek - nasıl? en azından bir dizide, en az birkaç değişkende, ancak verileri hemen OOP kullanarak yanlışlıkla yapılan değişikliklerden korudum
Bu sorunu zaten herkese açık olarak çözdüm. Sonuç olarak, tüm sembollerin ve tüm zaman çerçevelerinin bir tablosu oluşturulur ve bunun üzerinden bir döngü içinde yeni bir çubuğun olayları kaydedilir. Bu olayın herhangi bir fonksiyonunun ilk isteğinden sonra bayrağı tablodan silinir. OOP'den ne kadar daha zor - yargılamayı düşünmüyorum. Ama aslında, oldukça basit ve kullanışlı bir çözüm.
Peter, sınıfın kendisini tanımlarken, sınıfın içinde özellikleri olarak başka sınıfların örnekleri olsa bile, belleğin tahsis edilmediğini açıkça anlamanız gerekir. Bu nedenle, bir sınıfa referans olamaz, sadece bir sınıf nesnesine referans olabilir. Bellek ayırma , bir sınıfın bir örneği (nesnesi) bildirildiğinde (oluşturulduğunda) gerçekleşir.
Teoride, evet. Ancak, hiyerarşinin bağlantıları arasındaki geçişlerin (koşullu olarak - tümevarım ve tümdengelim, yani özelden genele ve tam tersi) zincir boyunca gerçekleştirilmesi için her şeyin düzenlenmesi gerekir. Yani, işaretçilerin sırası, gereksiz "dönüşler" ve "sıçramalar" olmaksızın döngüde herhangi bir (doğru) yönde hareket edebilmek için özel bir şekilde yapılandırılmalıdır. Bu nedenle, işaretçilerin basit bir tablo düzeni muhtemelen çalışmayacaktır.