OOP uzmanları için soru.

 

OOP nesneler ve özellikleri arasında nasıl döngü oluşturur?

Örneğin, şöyle bir döngü çalıştırıyorum:

 //Цикл по объектам в поиске нужного значения конкретного свойства.

for ( int a1 = 0 ; a1 < obj_total; a1++)
  {
   if (G_CORE[a1][_X_SIZE] == THIS_SIZE)
     {
      G_CORE[a1][_this_state_color] = clrWhite ;
      Redraw(a1);
     } 
  }

//Цикл по свойствам в поиске неверного значения

for ( int a1 = 0 ; a1 < prop_total; a1++)
  {
   if (G_CORE[ELEMENT][a1] > Max_value)
     {
      G_CORE[ELEMENT][a1] = Max_value;
      Redraw(ELEMENT);
     } 
  }
 

Nesnelerin veya grupların hiyerarşisinin nasıl oluşturulduğu da ilginçtir. Örneğin, her biri n'inci sayıda nesneye sahip bir grup içeren birkaç kategori vardır. OOP konsepti hangi hiyerarşileri oluşturma yöntemleri sunuyor?

Hiyerarşinin uygulanması, bağlantıları ve seviyeleri arasındaki döngüde kolay geçişler sağlamalıdır. Bir dizinin içinde bir hiyerarşi oluşturursanız, çok fazla boş alan olacaktır. Bunu bir dizi diziden inşa ederseniz, bağlantılar arasında serbest bir döngü yürütmek imkansızdır. OOP ne sunuyor?

 
Реter Konow :

OOP nesneler ve özellikleri arasında nasıl döngü oluşturur?

Örneğin, şöyle bir döngü çalıştırıyorum:

CObj obj[];
...
for ( int i= 0 ;i< ArraySize (obj);obj[i++].CheckSomething(param));
Bunun gibi bir şey. Ve zaten sınıfın içinde, CheckSomething() yönteminde tüm mantık uygulanır.
 
Vladimir Simakov :
Bunun gibi bir şey. Ve zaten sınıfın içinde, CheckSomething() yönteminde tüm mantık uygulanır.

Teşekkür ederim. Önce nesnelerden obj[] dizisini topluyoruz ve sonra döngü mü yapıyoruz?

Peki ya hiyerarşi? Ve statik bir hiyerarşiden bahsediyoruz. Sabit ve değişmez.

 
Реter Konow :

Teşekkür ederim. Önce nesnelerden obj[] dizisini topluyoruz ve sonra döngü mü yapıyoruz?

Peki ya hiyerarşi? Ve statik bir hiyerarşiden bahsediyoruz. Sabit ve değişmez.

 class Class1{
...
};

class Class2{
...
};

class Class3{
   Class1 class1;
   Class2 class2;
...
};
 
Vladimir Simakov :
Yani, bir sınıf hiyerarşisi oluşturuyoruz ve sonra ayrı bir sınıfta tüm nesnelerini topluyoruz ve onlar aracılığıyla tüm bağlantılar arasında mı dolaşıyoruz?
 
Реter Konow :
Yani, bir sınıf hiyerarşisi oluşturuyoruz ve sonra ayrı bir sınıfta tüm nesnelerini topluyoruz ve onlar aracılığıyla tüm bağlantılar arasında mı dolaşıyoruz?

Neye ihtiyacınız olduğuna bağlı olarak, ancak prensipte öyle. Dizilerinizden çok daha zarif olduğunu kabul edin. Ve gerçekten çok boyutlu dizilere sahip olduklarına ve dizilere sahip olmadıklarına dair ısrarlı şüphelerim göz önüne alındığında, dll'ye aktarılamadıkları için, o zaman fonksiyonları çağırmak için ek yük aynı olabilir.

 
Реter Konow :

OOP nesneler ve özellikleri arasında nasıl döngü oluşturur?

Peter Konow'un fotoğrafı.
ve onlar aracılığıyla tüm bağlantılar arasında bir döngü mü yapıyoruz?

genel kabul görmüş terminolojiyi kullanın, yalnızca muhatabı sorunuzla yanıltmakla kalmaz, aynı zamanda sorunuza bir cevap aldığınızdan emin olursunuz.

OOP Wiki - burada terimler

konuya göre, nesne örnekleri dizileri (yukarıdaki cevaplar) veya WndContainer.mqh ve ArrayObj.mqh SB kaynak kodlarına bakabilirsiniz, bunlar CPanelDialog'a dayalı grafik paneller oluşturmak için kullanılır (hazır bir örnek aşağıdadır). ndicators\Examples\Panels\SimplePanel klasörü), ancak işaretçiler ve listelerle çalışma var

 
Vladimir Simakov :

Neye ihtiyacınız olduğuna bağlı olarak, ancak prensipte öyle. Dizilerinizden çok daha zarif olduğunu kabul edin. Ve gerçekten çok boyutlu dizilere sahip olduklarına ve dizilere sahip olmadıklarına dair ısrarlı şüphelerim göz önüne alındığında, dll'ye aktarılamadıkları için, o zaman fonksiyonları çağırmak için ek yük aynı olabilir.

Eh, belki daha zarif, tartışmayacağım. Pratiklik, amaca uygunluk, basitlik ve kolaylık konusuyla çok ilgileniyorum ve herhangi bir sözdizimine "halk düşmanı" olarak bakıyorum çünkü dikkat, analiz gerektiriyor, hatalar üretiyor ve algılanmasını zorlaştırıyor. Bu nedenle en basit ve hatta ilkel kod yapılarını kullanmaya çalışıyorum. Ana şey, okunması kolay ve etkili olmalarıdır.

Hiyerarşi ile, elbette, takma. Bunların hepsi bir dizide yapılırsa, döngüler bağlantıları, grupları, alt grupları, alt grupları vb. ayrıştırmak için büyük fırsatlar sağlayacaktır. Ancak bellek verimsiz bir şekilde kullanılacaktır. Sınıflar aracılığıyla yapılırsa, ilk bakışta - ideal çözüm. Ancak bu, "ölü" hiyerarşi içindir. Bir resim için. Ancak onunla çalışan bir motor yaratmanız gerekiyorsa, korkarım sözdizimsel cehennemin başlayacağı yer burasıdır.))

 
Реter Konow :

Teşekkür ederim. Önce nesnelerden obj[] dizisini topluyoruz ve sonra döngü mü yapıyoruz?

Peki ya hiyerarşi? Ve statik bir hiyerarşiden bahsediyoruz. Sabit ve değişmez.

"... Üstelik statik bir hiyerarşiden bahsediyoruz. Sabit ve değişmez" derken ne demek istediğinizi açıklayın?
 
Igor Makanu :

genel kabul görmüş terminolojiyi kullanın, yalnızca muhatabı sorunuzla yanıltmakla kalmaz, aynı zamanda sorunuza bir cevap aldığınızdan emin olursunuz.

OOP Wiki - burada terimler

konuya göre, nesne örnekleri dizileri (yukarıdaki cevaplar) veya WndContainer.mqh ve ArrayObj.mqh SB kaynak kodlarına bakabilirsiniz, bunlar CPanelDialog'a dayalı grafik paneller oluşturmak için kullanılır (hazır bir örnek aşağıdadır). ndicators\Examples\Panels\SimplePanel klasörü), ancak işaretçiler ve listelerle çalışma var

OOP'de bir "nesne", alanlarının (özellikleri) bildirildiği bir sınıfa yapılan bir referanstır. Bir nesne ile, her biri bir dizideki bir hücre olan, numaralandırılmış bir dizi özelliği kastediyorum. Fark bu.

Sorular grafik arayüzler konusu ile ilgili değildir. Grafik kitaplıklarını uzun süredir atlıyorum ve orada aramam gereken hiçbir şey yok. Ama şimdi yapay zeka konusuyla ilgileniyorum ve bu yeni zorluklar ve sorular doğuruyor.

Neden: