MQL5'te OOP hakkında sorular - sayfa 51

 
Sergey Dzyublik :

1. Veri yapısı ortaya çıkıyor Ağacın hepsi kötü olandan ...
2. Kendi sınıfında zayıf C++ == özel yapı, ne yapmalı, muhtemelen yapıları ve sınıfları terk etmeye değer.
3. Ve haklı olarak: desen yok, işaretçiler arasında sıralama yok, özellikle büyük nesneler için bellek tasarrufu yok, ...
4. Arayüzlerin ve şablon işlevlerinin kullanımını yasaklamayı unutmamalıyız, aksi takdirde işin hangi nesneyle yapıldığı hiç belli olmaz - ne dehşet ...

1. Hayır, peki, neden olmasın. Bir ağaçtaki (veya bağlantılı listedeki) durumlarını değiştiren düğümlerden bahsediyorsanız, bu sadece o duruma erişimi organize etme meselesidir. Kodun işlevsel temizliği açısından, kullanıcının düğümün durumuna erişimi olmamalıdır. Düğümlerdeki tüm yinelemeler, ağacın kendisine yapılan bir çağrı aracılığıyla yapılmalıdır: myNode.NextNode() veya myNode.Parent() değil, tree.NextNode(myNode) veya tree.Parent(myNode).

Onlar. değiştirilebilir durum kamuya açık olmamalıdır.

2. Bakın, Sharpe yapısını aldım çünkü ona link/pointer alamayacağınız garanti. Onlar. Her şey derleyicinin kontrolü altındadır. Böyle bir kontrol yoksa kişisel kontrolün sağlanması gerekecektir. Örneğin, uygun sınıf adlandırma yoluyla. Şunu söyleyelim:

sınıf MyClass_mut; // değiştirilebilir

sınıf MyClass_immut; // değişmez

3, 4. Yanılıyorsun. Her şey gerçekleştirilebilir) Tüm nesne verilerinin mutlaka yığın yoluyla kopyalandığını düşünmeyin. Genel olarak, bir nesne, verilere dahili bir işaretçi içerir. Akıllı işaretçilere benzer. Yalnızca değiştirilebilir nesneler olması durumunda, bu işaretçi daha da akıllı olmalıdır)

 
Aleksey Mavrin :

Dmitry, seni temin ederim, sana memnuniyetle gülerdim, bu işi seviyorum) ama bu durumda abarttın, hatta özellikle iyi gülümsedin.

Gerçekten kafa karıştırdın - SHOT, COPY OBJECT'e eşit değil, demiştim sana.

Fark net değilse, bunu sizin için özel olarak bir örnekle açıklayacağım - bir nesne 1000 bayttır, bir anlık görüntü için 200'e ihtiyacınız vardır, neden 800 kopyalamalısınız, özellikle çok, çok sayıda anlık görüntü saklamanız gerekiyorsa.

p / s / Evet ve genel olarak. İnsanlar, kalıpların basit bir TİPİK görevi çözmenin basit bir örneği olduğunu gerçekten anlamıyor mu? Ama aslında, görevler temel değil, daha karmaşık. Ve gerçek problemleri çözmek için, kalıplara ihtiyaç vardır, sadece çoğu zaman saf bir kitap biçiminde değil, belirli bir görev için uyarlanmış bir modelde, muhtemelen birbirleriyle birleştirilmiş, muhtemelen bir tür doğaçlamanın eklenmesiyle, bazen basitleştirmede ifade edilir, görev izin veriyorsa veya tam tersi "ağırlıklandırma" uygulaması.

Yine, neden kapsülleme ve arayüzlere ihtiyaç duyulduğunu - aikyu'nuzun Wasserman'dan daha düşük olup olmadığını veya gerçek projelere katılmadıysanız, projenin farklı bölümleri aynı anda farklı kişiler tarafından değiştirildiğinde anlamak muhtemelen imkansızdır ve OO Design'ın temel ilkelerine uyulmaması, hataları yakalamak için büyük maliyetler gerektirir. Gerçekten de, tüm bunlar neden pazar için danışmanları damgalamak için?))

Yalnızca OOP ile ilgilenen sözde ve şimdi moda olan " tasarım desenleri" ile programlama problemlerini çözmek için algoritmaları karıştırıyorsunuz. Ve kafa karıştıran ve dikkatsizce okuduğunuz diğer birçok şey. Biraz önce yazdım - yapıyı kullanmak için. Ama sonuçta, eğer o yazıyı okuduysanız ve ben tüm sınıfı kopyalamanın işlevi hakkında yazmadıysam, o zaman bizim yetişkin olduğumuz ve gerekirse fazladan yapılarla fazladan çalışmanın ne için yapılacağı noktasına gelirsiniz. her şeyi yetişkin bir şekilde yapmak için, tüm sınıfı kopyalama becerisini sağlamanız yeterlidir.

 
Aleksey Mavrin :

...

Yine, neden kapsülleme ve arayüzlere ihtiyaç duyulduğunu - aikyu'nuzun Wasserman'dan daha düşük olup olmadığını veya gerçek projelere katılmadıysanız, projenin farklı bölümleri aynı anda farklı kişiler tarafından değiştirildiğinde anlamak muhtemelen imkansızdır ve OO Design'ın temel ilkelerine uyulmaması, hataları yakalamak için büyük maliyetler gerektirir. Gerçekten de, tüm bunlar neden pazar için danışmanları damgalamak için?))

.

Sergey Dzyublik :

...
4. Arayüzlerin ve şablon işlevlerinin kullanımını yasaklamayı unutmamalıyız, aksi takdirde işin hangi nesneyle yapıldığı hiç belli olmaz - ne dehşet ...

Bir şekilde, bir yerde, arayüzlerin ne olduğunu ve neden gerekli olduklarını okuyun.

-

Evet ve bu da... Bir nesnenin alanlarının tümünü veya bir kısmını kaydetme yeteneğini geri alma / yineleme işleviyle ciddi şekilde karşılaştırıyor musunuz? Photoshop'u tartışalım çünkü orada nasıl yapıldığını biliyorsunuz.

-

Ve hanginiz sabunumdaki çikolatanın altına böyle yazıyor?

-

Ve genel olarak, sorun nedir? "Kutsal Modeller"e olan inancınızın temellerini sarstım mı?

 
mql'den başka bir şey görmemiş kendi kendini yetiştirmiş amatör, amcalara programların nasıl doğru yazılacağını, okumanın eğlenceli olduğu yerleri öğretir)
 

kitaplık aracılığıyla sıralanır.

Mükemmel buluş: "BASIC'te çizimlerle yapay zeka ve uzman sistemler teorisine giriş" 1987 "nesne yönelimli programlama kavramı" bölümlerinden biri

İnanın hiçbir şey değişmedi...

 
Maxim Kuznetsov :

kitaplık aracılığıyla sıralanır.

Mükemmel buluş: "BASIC'te çizimlerle yapay zeka ve uzman sistemler teorisine giriş" 1987 "nesne yönelimli programlama kavramı" bölümlerinden biri

İnanın hiçbir şey değişmedi...

Çok şey değişti, o zaman Kutsal Tasarım Kalıplarına tapanların kilisesi yoktu. Ve o zamana kadar c ++ kurbanları kulübü henüz oluşmamıştı.

 
Dmitry Fedoseev :

Kutsal Tasarım Kalıplarına adanmış bir kilise olmadığı için çok şey değişti.

bu şimdi orada değil, Runet'te arama yapabilirsiniz, Runet'teki kalıplar konusundaki soru sayısı çok azsa, o zaman bu bir toplu karakter olarak mevcut değildir, öğrencilerin "kitap" soruları sayılmaz

içlerinde okunacak bir şey yok, ancak projeyi ölçeklendirmek istediğinizde uygundur, genel olarak, programın başlangıçta doğru yapısı budur

 
Dmitry Fedoseev :

Kutsal Tasarım Kalıplarına adanmış bir kilise olmadığı için çok şey değişti.

" Tasarım kalıbı", aynı sıklıkla meydana gelen şeyleri aynı isimlerle çağırmak için sadece bir anlaşmadır. Ve bu arada, terim mimariden geldi (heykellerin / köprülerin / portikoların / portalların olduğu yer).

bazen benzer şeyler benzer yöntemlerle çözülür, bu her zaman bir gerçek değildir.. Ama birbirini anlamak için şeylerin ve yöntemlerin benzerliği konusunda hemfikir olmakta fayda var.

ama tabii ki insanlar var "aptallara bir cam fallus verin - ve şey kırılır ve kendini keser"

 
Igor Makanu :

bu şimdi orada değil, Runet'te arama yapabilirsiniz, Runet'teki kalıplar konusundaki soru sayısı çok azsa, o zaman bu bir toplu karakter olarak mevcut değildir, öğrencilerin "kitap" soruları sayılmaz

içlerinde okunacak hiçbir şey yok, ancak projeyi ölçeklendirmek istediğinizde kullanışlıdır, genel olarak, bu, başlangıçta ortaya konan programın doğru yapısıdır.

Bunlara hiçbir şey dahil değildir. Kaç kalıp öğrendin?

 
Dmitry Fedoseev :

Bunlara hiçbir şey dahil değildir. Kaç kalıp öğrendin?

Öğrenilmiş kelimesi ne anlama gelir?

birkaç forumdaki açıklamayı okursam, o zaman kesinlikle bir düzine kadar

MQL'de uygulanırsa, o zaman bir - strateji, işler, ölçekler, sorunsuz yeniden düzenleme - test cihazının daha hızlı optimize etmesi için her şeyi atın ve doğrudan demoya gidin - genel olarak, kullanışlı ve pratik