OOP. Başvuru soruları - sayfa 10

 

Interesting :

Alexander ( AlexSTAL ) tarafından önerilen yöntem muhtemelen sorunu çözecektir (belirli sorunlu doğasını dikkate almayacağız).

Dur dur dur!

Ben teklif etmedim ama bir ihtimal var dedim.

Senin sorunun ne, anlamadım?

Muhtemelen mantığın yarısının eksik olduğu ve yarısının doğru olmadığı (OOP'nin doğuşundan kalan) bir örneği tartışıyorsunuz?

 
AlexSTAL :

Dur dur dur!

Ben teklif etmedim ama bir ihtimal var dedim.

Senin sorunun ne, anlamadım?

Burada bir dizide rengarenk nesneler eklemenin gerekli olduğunu söyleyeceğiz.

Aynı zamanda, bu nesnelerin tüm özelliklerinin aynı dizide saklanması gerekir + tüm olaylara ve yöntemlere erişim vardır.

Anladığım kadarıyla sizin tarafınızdan önerilen olasılık (uygulama farklı olabilir) nesnelerin (olaylar ve yöntemler) işlevselliğine erişmenizi sağlıyor.

Ancak, veriyi ata tipine sahip bir dizide depolama pahasına, çalışması pek olası değildir (bu verinin atada bildirilmediği göz önüne alındığında).


fikrimi açıkla

Bu özel örneğe odaklanırsak, o zaman:

1. Diyelim ki nesnenin türünün saklanacağı bir dizi oluşturun, X'teki konum, Y'deki konum mümkün;

2. Benzersiz bir nesneyi işaretçisiyle tanımlamayı deneyebilirsiniz ( bir nesneyle çalışırken işaretçi kullanılmayabilir, ancak tutamaç gibi bir şeyin olması istenir);

Bu bağlamda, biraz aptalca bir soru (henüz başka bir yol göremiyorum) - bir işaretçiyi tutamaç olarak kullanabilir miyim (atada karşılık gelen özelliği oluşturup yapıcıya doldurarak)?

3. Dizideki torunların özelliklerini saklama fırsatımız olmuyor (sadece atada bildirilmeyenler). Örneğin, anladığım kadarıyla bir dizide bir dairenin yarıçapını veya bir karenin kenarını saklamak işe yaramaz.

 
Interesting :

3. Dizideki torunların özelliklerini saklama fırsatımız olmuyor (sadece atada bildirilmeyenler). Örneğin, anladığım kadarıyla bir dizide bir dairenin yarıçapını veya bir karenin kenarını saklamak işe yaramaz.

Peki neden olmuyor... Onlarla direkt iletişime geçmiyorsunuz, ancak “radius” parametresi ile “GetValue” fonksiyonunuz yardımıyla (nesne bir daire ise)… Bu bir olasılıklardan...

Basit bir özel görev belirlediniz

 
AlexSTAL :

Peki neden olmuyor... Onlarla direkt iletişime geçmiyorsunuz, ancak “radius” parametresi ile “GetValue” fonksiyonunuz yardımıyla (nesne bir daire ise)… Bu bir olasılıklardan...

Basit bir özel görev belirlediniz

Görev basit, ancak uygulamanın kolay olduğunu kim söyledi.

1. Diziye farklı nesneleri (temel sınıfın çocukları) verileriyle birlikte yazmak gerekir.

Bunu özellikle verilerle birlikte açıklayacağım !!!

2. Her çocuk için GetArea()'dan hesaplama sonuçlarını alın;

3. Aşağıdaki özellikleri ekleyin:

a. karenin çevresinin hesaplanması - kenar * 4;

b. Bir dairenin çevresinin hesaplanması R'dir.

3. Kitaplığa ek şekiller ekleyin - bir dikdörtgen (iki kenar) ve bir üçgen.

4. Aşağıdaki özellikleri ekleyin:

a. bir dikdörtgenin alanının hesaplanması - yüksekliğe göre taban;

b. Bir dikdörtgenin çevresinin hesaplanması - kenarların toplamı * 2;

içinde. Bir üçgenin alanının hesaplanması;

d.Bir üçgenin çevresini hesaplama.

5. Her nesneyi ayrı ayrı tanımlayın (tüm nesneler arasında ve kendi sınıfındaki nesneler arasında).

Tercihen işaretçili ve işaretsiz.

6. Şekillerin çevresini ve alanını yalnızca dizide depolanan verilere göre hesaplayın.


not

Aynı zamanda, torunlardan bir ataya kod transferine izin verilmez (bu kod tüm atalar için geçerli değilse).

Yani örneğin bir kare, dikdörtgen ve daire içinde olmadığı için yarıçapı ataya aktaramazsınız.

Tüm torunlar için geçerli olduğu sürece, bir ataya yeni işlevler eklenebilir.

Temel olarak, treylerde bulunan kodu alıyoruz.

Когда нужно использовать указатели в MQL5
Когда нужно использовать указатели в MQL5
  • 2010.03.25
  • MetaQuotes Software Corp.
  • www.mql5.com
Все объекты в MQL5 по умолчанию передаются по ссылке, но есть возможность использовать и указатели объектов. При этом есть опасность получить в качестве параметра функции указатель неинициализированного объекта. В этом случае работа программы будет завершена критически с последующей выгрузкой. Автоматически создаваемые объекты как правило такой ошибки не вызывают, и в этом отношении они достаточно безопасны. В этой статье мы попробуем разобраться в чем разница между ссылкой и указателей, когда оправдано использование указателей и как написать безопасный код с использованием указателей.
Dosyalar:
Forum-3.mq5  11 kb
 

Bir dizi çerçevesinde, ataya alan ve çevre depolamak için değişkenler + onlara veri yazmak için işlevsellik ekleyerek sorunu kişisel olarak çözdüm.

Ayrıca GetArea() ve diğer doğrudan hesaplama fonksiyonlarının sonucu kontrol edilirse.

Görünüşe göre kendi kurallarını çiğnememiş.

 

Uygulama yöntemlerinden birini sizin tarif ettiğiniz yaklaşımla attım.

Tam değil, ama en önemli yaklaşım var

Dosyalar:
_script.mq5  4 kb
 
AlexSTAL :

Uygulama yöntemlerinden birini sizin tarif ettiğiniz yaklaşımla attım.

Tam değil, ama en önemli yaklaşım var

Yaklaşım açık. Bu muhtemelen bu soruna en iyi çözümlerden biridir.

En azından şimdilik.

 
Interesting :

Görev basit, ancak uygulamanın kolay olduğunu kim söyledi.

1. Diziye farklı nesneleri (temel sınıfın çocukları) verileriyle birlikte yazmak gerekir.

...
MQL5'teki elektronik tablolar Sorun zaten çözülmüş ve açıklanmıştır.
 
Urain :
MQL5'teki elektronik tablolar Sorun zaten çözülmüş ve açıklanmıştır.

Okuyabilmek güzel... :)

Ayrıca kötü bir yaklaşım değil, anladığım kadarıyla bu yaklaşımların her ikisi de yalnızca bir parametreyi (farklı türlerde de olsa) aktarmak/okumak için tasarlanmıştır.

Ancak çok sayıda parametre varsa ve hepsini temel sınıfa sığdıramıyorsanız ne kadar ilginç olur?

Anladığım kadarıyla, ayrıca geçmekte olduğumuz parametrenin indeksini de girin (sınıfta da, indekse göre yığılmış parametrelerle bir dizi oluşturabilirsiniz)?

 
Interesting :

Okuyabilmek güzel... :)

Ayrıca kötü bir yaklaşım değil, anladığım kadarıyla bu yaklaşımların her ikisi de yalnızca bir parametreyi (farklı türlerde de olsa) aktarmak/okumak için tasarlanmıştır.

Ancak çok sayıda parametre varsa ve hepsini temel sınıfa sığdıramıyorsanız ne kadar ilginç olur?

Anladığım kadarıyla, ayrıca geçmekte olduğumuz parametrenin indeksini de girin (sınıfta da, indekse göre yığılmış parametrelerle bir dizi oluşturabilirsiniz)?

Üç kez okudum ve hala yazının ne hakkında olduğunu anlamadım.