OOP uzmanları için soru. - sayfa 41

 
Vladimir Simakov :
Falan. Neden, mql'de bir delegenin zayıf bir analogu? Sadece gülmek için, kalp atış hızını artırmak için.

Analog yapamam, yaptım, MT4'te kontrol ettim, hala çalışıyor ama artık MT5'te çalışmıyor

 typedef void (*TFuncvoidPTR)( void );
//+------------------------------------------------------------------+
void OnStart ()
{  TFuncvoidPTR arrPTR[ 3 ];
   arrPTR[ 0 ]=f1;
   arrPTR[ 1 ]=f2;
   arrPTR[ 2 ]=f3;
   for ( int i= 0 ; i< 3 ; i++)
      arrPTR[i]();			// ' ) ' - expression expected

}
//_______________________________________________________________________
void f1() { Print ( "1" ); }
void f2() { Print ( "2" ); }
void f3() { Print ( "3" ); }
//+------------------------------------------------------------------+

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

 
Igor Makanu :

Analog yapamam, yaptım, MT4'te kontrol ettim, hala çalışıyor ama artık MT5'te çalışmıyor

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

C#'dan temel farkı şu satır olmasıdır: arrPTR[ 0 ]=f1;

Bunun gibi görünmelidir: arrPTR[ 0 ]=new tralala(f1);

Ya da böyle bir şey. Net olmayan şey bu - bunu istediğin için bu kadar şanslı olmayı nasıl başarabilirsin? Ve ayrıca birinin düşüncesinin yeterliliği hakkında konuşun.
 
Dmitry Fedoseev :

C#'dan temel farkı şu satır olmasıdır: arrPTR[ 0 ]=f1;

Bunun gibi görünmelidir: arrPTR[ 0 ]=new tralala(f1);

Ya da böyle bir şey. Net olmayan şey bu - bunu istediğin için bu kadar şanslı olmayı nasıl başarabilirsin? Ve ayrıca birinin düşüncesinin yeterliliği hakkında konuşun.

Sharpe'da konsept şudur: "mevcut tüm dillerden tam doldurmayı alıyoruz" + her durumda saf ve zorunlu OOP biçiminde sihir ekleyin -

 int a = new int ();
char b = new Char();
string c = new string ( new char [] { });
string d = String.Empty;
String e = String.Empty;


ve bir C++ programcısı bu kodu gördüğünde, içinde gizli bir anlam aramaya başlar .... ama hiçbir anlamı yoktur! - mesele sadece C # altında programcı olmayan tüm IMHO'ları toplamaktır)))

 

Sınırsız mirasın nesnelerin "yozlaşmasına" yol açmasının nedenleri bulunur.

AÇIKLARIM:

1. Temel (soyut) A sınıfını ilan ediyoruz.

2. Ondan, uzun miras zincirleri inşa ediyoruz. Bunu yapmak için A'dan 10 mirasçı ve her birinden 10 mirasçı oluşturuyoruz. Her biri 10 sınıf olan 10 doğrudan kalıtım zinciri elde ederiz.

3. Her sınıfın 10 benzersiz özelliği ve 10 yöntemi vardır. Benzersizlik nedeniyle, özellikler ve yöntemler sınıflarda sorunsuz bir şekilde kapsüllenir ve üzerlerinde temel nesnenin "zarif" yapısını temsil eden net bir hiyerarşi oluşturulur.

4. Ama şimdi, benzersiz özellikler bitti. Farklı sınıfların ve farklı zincirlerin özelliklerini ve yöntemlerini geçerek "doğmuş" yeni "nesneler" vardır. A'dan doğrudan bir kalıtım zincirine sahip değiller, ancak özelliklerini temel nesneye giden birçok zincir aracılığıyla devralıyorlar.

Aynı zamanda, özelliklerini "benzersiz" nesnelerden devralırken, "karışık" nesneler onlardan yalnızca birkaç özellik ve yöntem alır ve diğerlerini sahipsiz bırakır . Birçok sınıfı miras alırlar, ancak "kalıtsal" materyallerinin yalnızca bir kısmını almalı ve geri kalanına dokunulmamalıdır. AMA BU İMKANSIZDIR. Sınıflarına erişerek, mevcut olan her şeyi devralırlar.

Başka bir deyişle, mirasları bulanıktır. Bu nesneler, "ebeveynlerine" erişerek, ihtiyaç duymadıkları özellikleri ve yöntemleri edinirler. Ve bu "aşırılıkları" atlamak imkansızdır.

Yani, miras, çok sayıda mirasçıyla normal olarak çalışmayı durdurur. "Ebeveynlerin" çokluğu ve "kalıtsal materyalin" aşırı çeşitliliğinin genelleştirilmesi nedeniyle nesnelerin "yozlaşması" vardır. Nesneler kavramsal olarak bütünleyici olmaktan çıkar.


 
Hayır, bu olamaz. Kalıtımın 6.-8. seviyesinde bir yerde, bir mutasyon meydana gelir ve makinelerde bir ayaklanma meydana gelir.
 
Реter Konow :

Sınırsız mirasın nesnelerin "yozlaşmasına" yol açmasının nedenleri bulunur.

AÇIKLARIM:

1. Temel (soyut) A sınıfını ilan ediyoruz.

2. Ondan, uzun miras zincirleri inşa ediyoruz. Bunu yapmak için A'dan 10 mirasçı ve her birinden 10 mirasçı oluşturuyoruz. Her biri 10 sınıf olan 10 doğrudan kalıtım zinciri elde ederiz.

3. Her sınıfın 10 benzersiz özelliği ve 10 yöntemi vardır. Benzersizlik nedeniyle, özellikler ve yöntemler sınıflarda sorunsuz bir şekilde kapsüllenir ve üzerlerinde temel nesnenin "zarif" yapısını temsil eden net bir hiyerarşi oluşturulur.

4. Ama şimdi, benzersiz özellikler bitti. Farklı sınıfların ve farklı zincirlerin özelliklerini ve yöntemlerini geçerek "doğmuş" yeni "nesneler" vardır. A'dan doğrudan bir kalıtım zincirine sahip değiller, ancak özelliklerini temel nesneye giden birçok zincir aracılığıyla devralıyorlar.

Aynı zamanda, özelliklerini "benzersiz" nesnelerden devralırken, "karışık" nesneler onlardan yalnızca birkaç özellik ve yöntem alır ve diğerlerini sahipsiz bırakır . Birçok sınıfı miras alırlar, ancak "kalıtsal" materyallerinin yalnızca bir kısmını almalı ve geri kalanına dokunulmamalıdır. AMA BU İMKANSIZDIR. Sınıflarına erişerek, mevcut olan her şeyi devralırlar.

Başka bir deyişle, mirasları bulanıktır. Bu nesneler, "ebeveynlerine" erişerek, ihtiyaç duymadıkları özellikleri ve yöntemleri edinirler. Ve bu "aşırılıkları" atlamak imkansızdır.

Yani, miras, çok sayıda mirasçıyla normal olarak çalışmayı durdurur. "Ebeveynlerin" çokluğu ve "kalıtsal materyalin" aşırı çeşitliliğinin genelleştirilmesi nedeniyle nesnelerin "yozlaşması" vardır. Nesneler kavramsal olarak bütünleyici olmaktan çıkar.


Bu, kavramın yanlış olduğu anlamına gelir.
Neden araba gövdesini ve portresini "çerçeve" nesnesinden miras almalısınız?
 
Artyom Trishkin :
Yani - yanlış konsept inşa edilmiştir.
Neden araba gövdesini ve portresini "çerçeve" nesnesinden miras almalısınız?

Küçük görevler alanında, büyük bir miras hiyerarşisi gereklidir. Ancak, AI Bilgi Tabanının hiyerarşisi neredeyse sınırsızdır. Nesne hiyerarşisinin belirli sınırlara kadar uygun, pratik ve verimli olduğu sonucuna vardım, bundan sonra "çoklu" kalıtım başlar ve nesne nesillerinin "yozlaşmasına" yol açar. Yeni nesneler tabandan uzaklaşır ve özellikleri, diğer nesnelerden toplandığı için "ikincil"dir. Özelliklerin "toplanması" sürecinde, yeni nesneler işlerine "dayanan" fazladan "kalıtsal malzeme" alırlar.

Bu sorunu nasıl çözeceğimi bilmiyorum.

 

ya biri okursa, https://tproger.ru/translations/oop-principles-cheatsheet/

yazdıklarını okumanın bir usta işi olmadığından şüpheli olsam da

 
Igor Makanu :

ya biri okursa, https://tproger.ru/translations/oop-principles-cheatsheet/

yazdıklarını okumanın bir usta işi olmadığından şüpheli olsam da

Makale miras hakkındadır. Okumak.

"Kalıtım, bir nesnenin diğerinin özelliklerine dayanma yeteneğidir."

Ve SADECE birkaç nesneden miras alınabilen 102. nesil bir nesneniz varsa, bir tane değil mi? "Ebeveynlerinin" sayısı ile orantılı olarak ekstra özellikler ve yöntemler kazanacaktır.

 
Реter Konow :

Küçük görevler alanında, büyük bir miras hiyerarşisi gereklidir. Ancak, AI Bilgi Tabanının hiyerarşisi neredeyse sınırsızdır. Nesne hiyerarşisinin belirli sınırlara kadar uygun, pratik ve verimli olduğu sonucuna vardım, bundan sonra "çoklu" kalıtım başlar ve nesne nesillerinin "yozlaşmasına" yol açar. Yeni nesneler tabandan uzaklaşır ve özellikleri, diğer nesnelerden toplandığı için "ikincil"dir. Özelliklerin "toplanması" sürecinde, yeni nesneler işlerine "dayanan" fazladan "kalıtsal malzeme" alırlar.

Bu sorunu nasıl çözeceğimi bilmiyorum.

net sınıflandırma Birçok nesnenin aynı özelliklere sahip olduğunu görürsek, bu özellikleri bir ana nesnede tanımlamak mantıklıdır.
Bir alt nesne, aynı ada sahip bir üst özelliği geçersiz kılarsa, bu özellik sanal olmalıdır.