Okul çocukları için OOP. - sayfa 17

 
Artyom Trishkin :

Her şey değişkenlerle tamamen aynıdır.

Ve odaklan:

OnTrade işlevinde ticaret mevcutsa bu işaretçinin anlamı nedir?

 #include <Trade\Trade.mqh>
CTrade trade;   // Объект № 1 в глобальной области программы

int OnInit ()
{
 trade.SetExpertMagicNumber( 123 );
}

void OnTick ()
{
 trade.Buy( 0.1 );
}
 
Alexey Viktorov :

OnTrade işlevinde ticaret mevcutsa bu işaretçinin anlamı nedir?

Hiçbiri. Ama bununla size, aynı türden başka bir (ikinci) nesneyi nasıl yazdığınızı ve tek bir nesneye işaretçi ile nasıl başvurabileceğinizi arasındaki farkı gösterdim.

Bu, farklılıklar ve tercihler hakkındaki sorunuza basitleştirilmiş bir yanıt örneğiydi.

Bilirsiniz, çok basit örneklerle sorular soruyorsunuz ve onlar size cevap verdiklerinde başka bir soru soruyorsunuz - oldukça makul - "ne için?"

Evet, çünkü örneklerinizin sınıflar kullanılarak çözülmesine gerek yok.

İki seçenek vardır - ya size cevaplarını okuyup araştırırsınız ya da ... ya da sorunlarınızı prosedürel olarak çözersiniz. O zaman "ne için" soruları olmayacak.

Şimdi CTrade sınıfınızın global kapsamda olmadığını hayal edin. VE ?

Ayrıca, böyle bir nesneniz olmadığını (kod tabanındaki hemen hemen tüm örneklerde olduğu gibi), ancak programdan manuel olarak eklediğiniz / kaldırdığınız kadar karaktere sahip olduğunuzu hayal edin. VE ?

 
Сергей Таболин :

Bu durumda, bu

yanlış açıklama?

Bir uzman için ayarlanmışsa, o zaman herhangi bir emir/pozisyonun bu sihire sahip olması gerektiğini anladım. (((

Neden aniden yanlış olsun?

Bir uzmanın birkaç sihirbazı olabilir ve hepsi birden.

Tek bir uzun büyüde bile, bir ortak uzman kimliği + birkaç sihirbaz + birkaç farklı kimlik saklayabilirsiniz ve yine de çok fazla alan olacaktır.

 
Artyom Trishkin :

Hiçbiri. Ama bununla size, aynı türden başka bir (ikinci) nesneyi nasıl yazdığınızı ve tek bir nesneye işaretçi ile nasıl başvurabileceğinizi arasındaki farkı gösterdim.

Bu, farklılıklar ve tercihler hakkındaki sorunuza basitleştirilmiş bir yanıt örneğiydi.

Bilirsiniz, çok basit örneklerle sorular soruyorsunuz ve onlar size cevap verdiklerinde başka bir soru soruyorsunuz - oldukça makul - "ne için?"

Evet, çünkü örneklerinizin sınıflar kullanılarak çözülmesine gerek yok.

İki seçenek vardır - ya size cevaplarını okuyup araştırırsınız ya da ... ya da sorunlarınızı prosedürel olarak çözersiniz. O zaman "ne için" soruları olmayacak.

Şimdi CTrade sınıfınızın global kapsamda olmadığını hayal edin. VE ?

Ayrıca, böyle bir nesneniz olmadığını (kod tabanındaki hemen hemen tüm örneklerde olduğu gibi), ancak programdan manuel olarak eklediğiniz / kaldırdığınız kadar karaktere sahip olduğunuzu hayal edin. VE ?

Hayır Artyom, soru sormak için değil anlamak için soruyorum. Ve aptalca bir fikre bir çözüm önerdiğinizde, "Ne için?" diye soruyorum. Görüyorsunuz ya, bir daha sorsam ve bana doğru ya da yanlış cevap verirlerse, bu konuda bana söylenenleri unutmayacağımı ve anlayarak yapacağımı ya da anlayarak yapmayacağımı düşünüyorum. Kendi hamamböceğim var...))) Anlamadan bir şey yapamam. Matematik problemlerini asla sadece bir model çözümden çözmedim. Nasıl olduğunu bilmiyorum. Sekizinci sınıfın bitiminden sonraki bir yıl boyunca matematikte 5 ikişer ve dört tane vardı. Şey, hiçbir şey, C için bir kompozisyon yazarsam, testleri geçmeme, ikilileri düzeltmeme ve GPTU'ya gitmeme izin vermeleri şartıyla sınavlara girmeme izin verildi. Ve enstitü çok daha sonraydı. Orada programlama konusunda hastalandım, ancak yalnızca yüzeysel olarak aşina olmak için öğretildi. Ve OOP o zaman, genel olarak bana öyle geliyor ki, sadece tasarlanabilir.

 
Alexey Viktorov :

Hayır Artyom, soru sormak için değil anlamak için soruyorum. Ve aptalca bir fikre bir çözüm önerdiğinizde, "Ne için?" diye soruyorum. Görüyorsunuz ya, bir daha sorsam ve bana doğru ya da yanlış cevap verirlerse, bu konuda bana söylenenleri unutmayacağımı ve anlayarak yapacağımı ya da anlayarak yapmayacağımı düşünüyorum. Kendi hamamböceğim var...))) Anlamadan bir şey yapamam. Matematik problemlerini asla sadece bir model çözümden çözmedim. Nasıl olduğunu bilmiyorum. Sekizinci sınıfın bitiminden sonraki bir yıl boyunca matematikte 5 ikişer ve dört tane vardı. Şey, hiçbir şey, C için bir kompozisyon yazarsam, testleri geçmeme, ikilileri düzeltmeme ve GPTU'ya gitmeme izin vermeleri şartıyla sınavlara girmeme izin verildi. Ve enstitü çok daha sonraydı. Orada programlama konusunda hastalandım, ancak sadece yüzeysel olarak aşina olmak için öğretildi. Ve OOP o zaman, genel olarak bana öyle geliyor ki, sadece tasarlanabilir.

O zaman bu soruları sorman bile garip.

Farklı kapsamlarda bildirilen değişkenler arasındaki farkı anlıyorsunuz. Anlamak. Ve soruyu , değişkenlerin kapsamını ilk kez duyuyormuşsunuz gibi soruyorsunuz.

Önceden oluşturulmuş bir nesneye bir işaretçiyi nasıl kullanacağınız gösterildiğinde, garip bir soru soruyorsunuz - "nesne zaten görünürse neden?". Yani size bunu nasıl yapacağınız değil, bu örnekte bir işaretçiyi nasıl alacağınız ve işaretçi ile nesneye nasıl erişeceğiniz gösterildi. Ve bunlar artık farklı kapsamlarda iki farklı nesne değil, bir olacak.
Ve nesne global kapsamda değilse, ancak başka bir nesnenin içindeyse? Ve bu - diğer nesne - size yalnızca istenen CTrade nesnesine bir işaretçi döndürür. O zaman örnek artık "ne için?" sorusunu gündeme getirmeyecektir. olacağını sanmıyorum. Ancak sonuçta, örneğinizin basitliğini anladığınız varsayımıyla size tam olarak cevap verdikleri ve nesnenin "parantez dışındaki" küresel görünürlüğünü atladığınız ima edilebilir.

 
Artyom Trishkin :

Neden aniden yanlış olsun?

Bir uzmanın birkaç sihirbazı olabilir ve hepsi birden.

Tek bir uzun büyüde bile, bir ortak uzman kimliği + birkaç sihirbaz + birkaç farklı kimlik saklayabilirsiniz ve yine de çok fazla alan olacaktır.

Anladım. Takas talebinde bulunurken herhangi bir büyü belirtebilirsiniz. Ve bir uzman en azından her yeni pozisyonu yeni bir sihirbazla açabilir. Ve hem sembolü hem de TF'yi vs. sihrime kodluyorum.Bütün bunlar anlaşılabilir.

Sadece SetExpertMagicNumber'ın global bir çözüm gibi olduğundan emindim. Ticaret isteği açıkça sihri belirtmiyorsa, SetExpertMagicNumber aracılığıyla ayarlanan değeri alır. Aksi takdirde, kişisel olarak buradaki noktayı görmüyorum))

 
Сергей Таболин :

Anladım. Takas talebinde bulunurken herhangi bir büyü belirtebilirsiniz. Ve bir uzman en azından her yeni pozisyonu yeni bir sihirbazla açabilir. Ve hem sembolü hem de TF'yi vs. sihrime kodluyorum.Bütün bunlar anlaşılabilir.

Sadece SetExpertMagicNumber'ın global bir çözüm gibi olduğundan emindim. Ticaret isteği açıkça sihri belirtmiyorsa, SetExpertMagicNumber aracılığıyla ayarlanan değeri alır. Aksi takdirde, kişisel olarak buradaki noktayı görmüyorum))

Yöntem sihirli sayıyı bir Uzman Danışman için değil, ticaret sınıfının bir nesnesi için belirler. Bir Uzman Danışmanın birkaç ticaret sınıfı olabilir ve her biri için, değerinde hem bir Uzman Danışman için ortak bir büyü hem de ticaret nesnelerinin her biri için ayrı bir büyü içeren ayrı bir büyü ayarlayabilirsiniz.

 
Artyom Trishkin :

O zaman bu soruları sorman bile garip.

Garip bir şey yok. OOP'yi hiç anlamıyorsam, emin değildim veya her şeyi doğru anladığımdan emin değildim veya bazı şüpheler vardı. Açıklama istedim, onay aldım ve şimdi (yarından) eminim. G. Khazanov'un monologunda olduğu gibi.

- Pencerede durduğunuzu ve karşı pencerede hiçbir şeyden şüphelenmeden çıplak bir kadın olduğunu hayal edin. Ne hissediyorsun?

- Geleceğe güven.

- Sonraki adımlarınız neler?

- Ben başka bir odaya gidiyorum. Daha büyük bir pencerem var.

 
Alexey Viktorov :

Bu seçenekle doğru anlıyorum

derleyici uyarısını yok sayarak , 123 değil sihirle bir pozisyon açılabilir mi ?

Yani OnTick işlevinde yeni bir nesne oluşturulacak ve içindeki sihir 123'e eşit olmayacak.

Pozisyon "0"a eşit Sihirli sayı ile açılacaktır - yani dizi

 void OnTick ()
{
 CTrade trade;

nesneyi yeniden oluşturur ve bir nesne oluştururken, CTrade sihirli sınıfı varsayılan olarak sıfıra başlatılır (sınıf yapıcısında):

 //+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CTrade::CTrade( void ) : m_async_mode( false ),
   m_magic( 0 ),
   m_deviation( 10 ),
   m_type_filling( ORDER_FILLING_FOK ),
   m_log_level(LOG_LEVEL_ERRORS)
 
Vladimir Karputov :

Pozisyon "0"a eşit Sihirli sayı ile açılacaktır - yani dizi

nesneyi yeniden oluşturur ve bir nesne oluştururken, CTrade magic ticaret sınıfı varsayılan olarak sıfıra başlatılır (sınıf yapıcısında):

Evet? Yeni, bağımsız bir nesne yaratmıyor mu?