OOP vs prosedürel programlama - sayfa 37

 
Andrei :

Bir sınıfın sadece iç değişkenleri vardır ve hiçbir girdisi veya çıktısı yoktur... Dış dünyayla teması olmayan ve kendi suyunda kaynayan böyle bir nesnenin programlanmasındaki kullanımını nerede gördünüz?


+100

 

Tartışma bana bir videoyu hatırlattı, çocuklar son zamanlarda gösterdi :)


 
Andrei :

Bir sınıfın sadece iç değişkenleri vardır ve hiçbir girdisi veya çıktısı yoktur... Dış dünyayla teması olmayan, kendi suyunda kaynayan böyle bir nesnenin programlanmasındaki kullanımını nerede gördünüz?

Bekleyin - sınıfın dış dünyayla etkileşime girdiği bir arayüzü var. Yabancı bloklar için tasarlanmamış olan tüm "gereksiz" şeyleri kesmenize izin verir.

Burada, özellikle ticaret işlemcimde - bazıları MT4, diğerleri - MT5 için ve diğerleri - her iki platform için de amaçlanan değişkenler var. Ancak tüm bu değişkenler, TS'nin herhangi bir parçası tarafından kesinlikle gerekli değildir. Buna göre, onlara herhangi bir erişimleri yoktur. TS'nin tüm bölümleri, yalnızca TS'nin çalışması için gerekli işlevleri tanımlayan ve tüm gereksiz, tüm platforma bağlı ve "ticarete özgü" öğeleri kaldıran ticaret işlemcisinin sanal bir arabirimini alır.

İşlem pozisyonu ile aynı - TS bölümlerinin işlem pozisyonuna doğrudan erişimi yoktur. Yalnızca açık ticaret bileşenlerinin sayısını ve her bir bileşenin verilerini saymanıza izin veren sanal bir arayüz alabilirler. Ancak aynı zamanda, TS neyle uğraştığını bile bilmiyor - ya bir MT4 siparişiyle ya da bir MT5 pozisyonuyla. Bütün bunlar ondan gizlidir. TS, MT4'teki siparişlerle veya MT5'teki pozisyonlarla çalışmak için kullanılan değişkenlere erişime sahip olmamalıdır.

 
George Merts :

Bekleyin - sınıfın dış dünyayla etkileşime girdiği bir arayüzü var. Yabancı bloklar için tasarlanmamış olan tüm "gereksiz" şeyleri kesmenize izin verir.

Burada, özellikle ticaret işlemcimde - bazıları MT4, diğerleri - MT5 için ve diğerleri - her iki platform için de amaçlanan değişkenler var. Ancak tüm bu değişkenler, TS'nin herhangi bir parçası tarafından kesinlikle gerekli değildir. Buna göre, onlara herhangi bir erişimleri yoktur. TS'nin tüm bölümleri, yalnızca TS'nin çalışması için gerekli işlevleri tanımlayan ve tüm gereksiz, tüm platforma bağlı ve "ticarete özgü" öğeleri kaldıran ticaret işlemcisinin sanal bir arabirimini alır.


Somut ve çok net bir örnek alalım.

1. Kotir girişinde

2. Çıkışta al/sat komutu.

3. Girdi, iki pulun kesiştiği noktada çıktıya dönüştürülür.

Aralarındaki OOP'ler nelerdir ve neden?

 
СанСаныч Фоменко :

Bunu meta alıntılara açıklayın: neden terminalde, dilde ve genel olarak yazılım ürünleri için belge dağlarının nereden geldiğini, örneğin Cpp'de büyük kılavuzlar yazdılar. Ve genel olarak, yazılım ürünleri var mı? belge olmadan? Bunu fark etmemeniz çok garip.


Maalesef yine kavramları değiştiriyorsunuz. Program kılavuzu dokümantasyon değildir. Belgeler geçen yüzyılda tutuldu, GOST'ler gözlendi, vb. Şimdi tüm bunlar gerekli değil. Geriye kalan tek şey TK. Belgeler artık test durumları ve sınıf arayüzleridir. Ayrıca, sınıflar, elbette, öyle adlandırılmıştır ki, yalnızca adı ile ne yaptığı ve hangi amaçla kullanıldığı zaten bellidir.

 
Ihor Herasko :

Maalesef yine kavramları değiştiriyorsunuz. Program kılavuzu dokümantasyon değildir. Belgeler geçen yüzyılda tutuldu, GOST'ler gözlendi, vb. Şimdi tüm bunlar gerekli değil. Geriye kalan tek şey TK. Belgeler artık test durumları ve sınıf arayüzleridir. Ayrıca, sınıflar, elbette, öyle adlandırılmıştır ki, yalnızca adı ile ne yaptığı ve hangi amaçla kullanıldığı zaten bellidir.

Belgeler geçen yüzyılda tutuldu, GOST'ler gözlendi, vb. Şimdi tüm bunlar gerekli değil.

Burada kesinlikle sana katılıyorum, çünkü ciddi bir şey yazılmamış.

Her zaman TK vardı. Ancak algoritması TOR'da tam olarak tanımlanabilen bu kadar basit programlar geçen yüzyılda yazılmadı ve şimdi ciddi insanlar yazmıyor.

Derleyiciler geliştirirken ne tür "test durumları ve sınıf arabirimleri" vardır? matematiksel algoritmaları programlarken?



not.

Eskiden inciler için bir başlık vardı.

onun içinde

Program kılavuzu dokümantasyon değildir.

 
СанСаныч Фоменко :

Somut ve çok net bir örnek alalım.

1. Kotir girişinde

2. Çıkışta al/sat komutu.

3. Girdi, iki pulun kesiştiği noktada çıktıya dönüştürülür.

Aralarındaki OOP'ler nelerdir ve neden?

Her şey oldukça basit.

Bir giriş üreteci var. EA'dan veri sağlayıcı arayüzünü, ticaret pozisyonu arayüzünü ve ticaret işlemcisi arayüzünü talep eder. Ardından, veri sağlayıcıdan hareketlerin iki arayüzü istenir.

OnTick() çağrıldığında, giriş üreteci için aynı işlev çağrılır. Giriş üreteci kenelerin arayüzüne bakar, geçmiş değerlerini karşılaştırır. Bir kesişme tespit edilirse, işlem pozisyonu arayüzüne bakar. Pozisyon dışı olduğumuzu görürse, ticaret işlemcisinin arayüzünde al veya sat işlevini çağırır. Pozisyonun var olduğunu görürse pozisyon doğru yönde ise hiçbir şey yapmıyoruz, ters yönde ise alım satım arayüzünden pozisyon kapatma fonksiyonunu çağırıyoruz.

Aynı zamanda, bakın: Üreticinin, ne vuruşları hesaplamak, ne bir ticaret pozisyonu almak, ne de MT4'te emirleri veya MT5'te pozisyonları açmak için herhangi bir değişkene erişimi yoktur. Veri sağlayıcı - sadece onu talep eden makineler hakkında bilgi sahibidir. Bunları her tikte yeniden hesaplar ve günceller. Başka kimsenin bundan haberi bile yok. Ticaret işlemcisi - yalnızca arayüz aracılığıyla kendisine gelen talimatları uygular ve kimden geldiğini bile bilmez. Uzman Danışman, ticaret pozisyonunu her tıklamada günceller ve istenen arayüz aracılığıyla, ayrıca orada kimin ihtiyacı olduğu ve bu bloğun içinde ne olduğu ile ilgilenmeden yayınlar. Tüm bloklar ayrılır ve yalnızca önceden tanımlanmış arabirimler aracılığıyla iletişim kurar.

 
СанСаныч Фоменко :

Somut ve çok net bir örnek alalım.

1. Kotir girişinde

2. Çıkışta al/sat komutu.

3. Girdi, iki pulun kesiştiği noktada çıktıya dönüştürülür.

Aralarındaki OOP'ler nelerdir ve neden?

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

ancak OOP'nin kendisi gelişmiş kitaplıkların içindedir - kolay ve basit bir şekilde yazmak için yapılmıştır ve aynı zamanda her şeyde hata ayıklanmıştır. "Teklif kaynağı" ve "sipariş yürütücü", "zaman serisi", "göstergeler" ve daha bir çok şey gibi arayüzler var. ve kirli numaralar

elin hafif bir hareketiyle, keyfi bir kotir (sentetik) alabilir veya başka bir enstrümanda çalıştırabilirsiniz .. veya basitçe başka bir danışmana komuta edebilirsiniz (ve bunlar, OOP'nin avantajları, içerideki karmaşıklık ve uygulanan bir görevde, çok az çaba gerekir).

 
George Merts :

Her şey oldukça basit.

Bir giriş üreteci var. EA'dan veri sağlayıcı arayüzünü, ticaret pozisyonu arayüzünü ve ticaret işlemcisi arayüzünü talep eder. Ardından, veri sağlayıcıdan hareketlerin iki arayüzü istenir.

OnTick() çağrıldığında, giriş üreteci için aynı işlev çağrılır. Giriş üreteci kenelerin arayüzüne bakar, geçmiş değerlerini karşılaştırır. Bir kesişme tespit edilirse, işlem pozisyonu arayüzüne bakar. Pozisyon dışı olduğumuzu görürse, ticaret işlemcisinin arayüzünde al veya sat işlevini çağırır. Pozisyonun var olduğunu görürse pozisyon doğru yönde ise hiçbir şey yapmıyoruz, ters yönde ise alım satım arayüzünden pozisyon kapatma fonksiyonunu çağırıyoruz.

Aynı zamanda, bakın: Üreticinin, ne vuruşları hesaplamak, ne bir ticaret pozisyonu almak, ne de MT4'te emirleri veya MT5'te pozisyonları açmak için herhangi bir değişkene erişimi yoktur. Veri sağlayıcı - yalnızca onu talep eden makineler hakkında bilgi sahibidir. Bunları her tikte yeniden hesaplar ve günceller. Başka kimsenin bundan haberi bile yok. Ticaret işlemcisi - yalnızca arayüz aracılığıyla kendisine gelen talimatları uygular ve kimden geldiğini bile bilmez. Uzman Danışman, ticaret pozisyonunu her tıklamada günceller ve istenen arayüz aracılığıyla, ayrıca orada kimin ihtiyacı olduğu ve bu bloğun içinde ne olduğu ile ilgilenmeden yayınlar. Tüm bloklar ayrılır ve yalnızca önceden tanımlanmış arabirimler aracılığıyla iletişim kurar.


sersemlemiş!

Merak ediyordum: Modern programlamada lanet olası bir yumurtanın seviyesi sorununu karıştırmak için başka bir olasılık var mı?

 
Maxim Kuznetsov :

/// применение  ООП для элементарных задач (фактически весь код)

OnInit(){

Series FAST_MA=MA(...);

Series SLOW_MA=MA(...);

OnCrossUp(FAST_MA,SLOW_MA,Buy);

OnCrossDn(FAST_MA,SLOW_MA,Sell);

}

ancak OOP'nin kendisi gelişmiş kitaplıkların içindedir - kolay ve basit bir şekilde yazmak için yapılmıştır ve aynı zamanda her şeyde hata ayıklanmıştır. "Teklif kaynağı" ve "sipariş yürütücü", "zaman serisi", "göstergeler" ve daha bir çok şey gibi arayüzler var. ve kirli numaralar

elin hafif bir hareketiyle, keyfi bir kotir (sentetik) alabilir veya başka bir enstrümanda çalıştırabilirsiniz .. veya basitçe başka bir danışmana komuta edebilirsiniz (ve bunlar, OOP'nin avantajları, içerideki karmaşıklık ve uygulanan bir görevde, çok az çaba gerekir).


OnInit()'im hemen hemen aynı görünüyor - bir düzine satır...

Ne olmuş?