Höyükte OOP hakkında konuşun - sayfa 7

 
Alexey Volchanskiy :

Not: Bu arada, tüm şubede, her zamanki gibi, herhangi bir konuyu ele almak için tek bir dilek görmedim, her zamanki kavga.

İlk örneğin seçimine bakıldığında, aydınlatma kalitesi hakkında oldukça makul şüpheler var.

 
Alexey Volchanskiy :

Ve kim olduklarını ve ne öğrenmediklerini açıklayabilir misiniz? Moderatörler temizlemeyi veya başka bir şeyi öğrenmediler)

Not: Bu arada, tüm şubede, her zamanki gibi, herhangi bir konuyu ele almak için tek bir dilek görmedim, her zamanki kavga. Bu yüzden OOP cihazında sıfırdan YouTube'da videolar kaydetmeye karar verdim, en azından bir faydası olacak. Her neyse, bir süre sonra dal, branch_sump'ta olacaktır.

Açıklığa kavuşturuyorum: OOP öğrenmediler.

Alexey, bence sen kendin, OOP'yi alıp böyle öğrenemeyeceğini gayet iyi anlıyorsun. OOP'nin resmi bilgisi vardır: kalıtım , kapsülleme , polimorfizm - tüm bu mantralar sıklıkla tekrarlanır, ancak birinin onları ezberlemesi ve MM modülünden bir uzman sınıfı devralmak gibi öfkeli ve uygunsuz bir şekilde uygulaması (merhaba SB geliştiricileri :) yarardan çok zarar.

MQL'ye gelince, OOP açısından çok zayıf bir dil : tip kontrolü tamamen yok (en azından güvenli bir döküm yaptılar), yansıma emekleme aşamasında ve çok sınırlı, hiç arayüz yok . Soru ortaya çıkıyor: MQL'de ne tür OOP öğretilebilir? Ne diyebilirim ki, geliştiricilerin kendileri Standart Kitaplıkta öyle bir kambur şekillendirirse, bazen sadece korkutucu olur.

 
Vasiliy Sokolov :

Açıklığa kavuşturuyorum: OOP öğrenmediler.

Alexey, bence sen kendin, OOP'yi alıp böyle öğrenemeyeceğini gayet iyi anlıyorsun. OOP'nin resmi bilgisi vardır: kalıtım , kapsülleme , polimorfizm - tüm bu mantralar sıklıkla tekrarlanır, ancak birinin onları ezberlemesi ve MM modülünden bir uzman sınıfı devralmak gibi öfkeli ve uygunsuz bir şekilde uygulaması (merhaba SB geliştiricileri :) yarardan çok zarar.

MQL'ye gelince, OOP açısından çok zayıf bir dil : tip kontrolü tamamen yok (en azından güvenli bir döküm yaptılar), yansıma emekleme aşamasında ve çok sınırlı, hiç arayüz yok . Soru ortaya çıkıyor: MQL'de ne tür OOP öğretilebilir? Ne diyebilirim ki, geliştiricilerin kendileri Standart Kitaplıkta öyle bir kambur şekillendirirse, bazen sadece korkutucu olur.

Evet, zayıf, ancak orta şiddette projeler yine de yapılabilir. SB, farklı eğitim seviyelerine sahip farklı kişiler tarafından yapıldı. Ve gerekli özelliklere sahip değil, hala CD Sözlüğünüzü kullanıyorum ve bu bir direk nedeniyle bir şey.

Şimdi ne olacak, yat ve öl? )) Sonunda dll'ye gidebilirsiniz.

Ama yine de OOP öğrenebilirsin, bence öyle. kendime öğrettim. Ve diğerleri de.

 
Alexey Volchanskiy :

Ama yine de OOP öğrenebilirsin, bence öyle. kendime öğrettim. Ve diğerleri de.

Bu yüzden doğru örneklerden öğrenmeniz gerekiyor. Ama SB'de yoklar. Aynı CObject'i alın - tür kontrolü sağlamaz, nesnelerle arayüz düzeyinde çalışma sağlamaz, ancak pratikte asla yeniden tanımlanmayan Save() ve Load() gibi anlamsız yöntemler içerir. m_prev ve m_next işaretçileri tek bir CList sınıfında kullanılır, ancak tüm alt sınıflar için balast olarak bulunur. En kullanışlısı Comparer() yöntemidir. Gerçekten de, çoğu zaman geçersiz kılınır. Ama iyi bir şekilde Comparer() bir arayüzdür, onu CObject içinde değil, ayrı bir sınıf olarak tanımlamak daha doğru olur.

 
fxsaber :

Görünüşe göre, static ve const (bu OOP değildir) gerekli değildir.

OOP'ye gelince, geniş pratik uygulaması olan (hiç de soyut olmayan) bir sonraki işlevin prosedürel tarzda nasıl görüneceği çok ilginç?

Açıkçası, herhangi bir OOP prosedürel bir tarzda yeniden yazılabilir. Ama pratikle ilgileniyorum. Bu nedenle, OOP'nin minimumda kullanıldığı yukarıdaki küçük kodu aldım.

Peki bu örnekte OOP ile karşılaştırıldığında prosedürel stil ne kadar daha güzel/daha uygun/daha okunabilir/daha doğru? Pekala, birkaç sayfayı asılsızlaştırmamak için, ancak prosedürel kısa kaynak kodlarını OOP ile karşılaştırmak için. OOP muhaliflerinden bir ana sınıf göstermelerini istiyorum. Bu korkunç bir MT5 değil, eski güzel bir MT4.


aynı şekilde hangi kalıpları programlamayı öğrenebilirsiniz? :) çok güzel görünüyor

Ya da belki de düşünme şeklinizi değiştirmeniz gerekiyor.

örneğin, yapıların bir kurucu ile sınıflarla aynı şekilde kullanılabileceğini bilmiyordum.

 
Maxim Dmitrievsky :

örneğin, yapıların bir kurucu ile sınıflarla aynı şekilde kullanılabileceğini bilmiyordum.

C++'da sınıf ve yapı aynıdır, sadece bazı varsayılanlar farklıdır.
 
Maxim Dmitrievsky :

Aynı şekilde hangi kalıpları programlamayı öğrenebilirsiniz? :) çok güzel görünüyor

Ya da belki de düşünme şeklinizi değiştirmeniz gerekiyor.

örneğin, yapıların bir kurucu ile sınıflarla aynı şekilde kullanılabileceğini bilmiyordum.

Ve şunu sorabilirsiniz: fxsaber'ın kodlarında hangi dahiyaneyi görüyorsunuz? Belki de sizi büyüleyen IsChange'in yan etkileri veya sistem durumunun kullanıcı düzeyinde kopyalanması gerektiği fikridir?

 
Vasiliy Sokolov :

Ve şunu sorabilirsiniz: fxsaber'ın kodlarında hangi dahiyaneyi görüyorsunuz? Belki de sizi büyüleyen IsChange'in yan etkileri veya sistem durumunun kullanıcı düzeyinde kopyalanması gerektiği fikridir?


muhtemelen bu kodu neredeyse anlamıyorum çünkü :)

üzgünüm, amatör programcı .. sadece temel düzeyde OOP'ye aşina

 
Комбинатор :
C++'da sınıf ve yapı aynıdır, sadece bazı varsayılanlar farklıdır.

harika, bilmiyordum .. Muhtemelen artıları daha iyi incelemem gerekiyor

 
Vasiliy Sokolov :

Bu yüzden doğru örneklerden öğrenmeniz gerekiyor. Ama SB'de yoklar. Aynı CObject'i alın - tür kontrolü sağlamaz, nesnelerle arayüz düzeyinde çalışma sağlamaz, ancak pratikte asla yeniden tanımlanmayan Save() ve Load() gibi anlamsız yöntemler içerir. m_prev ve m_next işaretçileri tek bir CList sınıfında kullanılır, ancak tüm alt sınıflar için balast olarak bulunur. En kullanışlısı Comparer() yöntemidir. Gerçekten de, çoğu zaman geçersiz kılınır. Ama iyi bir şekilde Comparer() bir arayüzdür, onu CObject içinde değil, ayrı bir sınıf olarak tanımlamak daha doğru olur.

Birkaç yoldaş tarafından MQL bilgisinin derinliğine her zaman hayran kaldım. Baktım, hatta gerçekten CExpert'i uygulamaya çalıştım, tükürdüm ve kendi derslerimi yapmaya başladım. CObject ve CExpert gibi yüksekliklere çıkamam.