OOP uzmanları için soru. - sayfa 17

 
Vladimir Simakov :
Ders sayısından bahsediyorum. Her satır 200'dür.
Erişmek ne kadar zor olurdu? Her yerden görülebilen küresel bir çekirdeğim var. OOP'de, pes etmem gerekecekti. O zaman pencerelerdeki öğelerle nasıl çalışılır? Hayal etmeye çalıştığımda komaya giriyorum.)))
 
Реter Konow :
Erişmek ne kadar daha zor olurdu? Her yerden görülebilen küresel bir çekirdeğim var. OOP'de, onu bırakmak zorunda kalırdım. O zaman pencerelerdeki öğelerle nasıl çalışılır? Hayal etmeye çalıştığımda komaya giriyorum.)))

Statik sınıf.

 

Vladimir Simakov :
А теперь к эффективности. Switch - это что в конечном итоге? Это последовательное сравнение параметра с константами. Внимание Петр, последовательное.

hiç gerekli değil.

bu, Peter'ın haklı olduğu veya anahtarın her yere basılması gerektiği anlamına gelmez, ancak yine de.

 
Alexey Navoykov :
Evet kesinlikle. Yani hız açısından, bu açıkça MQL'deki en hızlı seçenektir. Ancak yönetilen bir ortamda sınıf nesnelerine erişim dolaylı olarak gerçekleşir.
Eğitim programı için teşekkürler. Geri dönüşle ilgili sözlerimi alıyorum.
 
Georgiy Merts :

Burada, bu işlev hakkında daha ayrıntılı olarak. Elinizde on gerekli işlevden birini seçen canavarca boyut anahtarı var. Böyle bir anahtarda, yanlışlıkla şubelerden biri ile ilgili kodu yanlış yere yazarak hata yapmak çok kolaydır.

Aşırı yük ile - her şey çok daha kolay. On farklı torunumuz var ve her seferinde BİR sınıfla çalışıyoruz ve aşırı yüklenmiş BİR işlevi var. Yanlışlıkla farklı bir sınıfa yazamayız çünkü bu tamamen farklı bir dosyanın açılmasını gerektirir.

Artı - bu çok büyük geçişte denemenin kendisi - bence, gerekli bir sınıfı açmaktan çok daha stresli ve ardından sadece bir işlevle deneme.

Aslında, montajcı kodunda, tüm bu aşırı yüklenme, bu işaretçiye bağlı olarak her durumda aynı anahtara gelir. Ancak OOP durumunda, tüm bunlar programcıdan gizlenir ve çalışmasına müdahale etmez. OOP olmadan - bununla başa çıkmak zorundasınız.

Kabaca söylemek gerekirse, yürürken kaslarınıza belirli bir sırayla onları hareket ettiren sinyaller gönderirsiniz. Ancak, bilinç düzeyinde - sadece hangi hareketi yapmanız gerektiğini hatırlarsınız. Burada, OOP tam da böyle bir "hafıza, hangi hareketin yapılması gerekiyor". "Onlara bağlı bir sürü kas ve sinirimiz varsa, hareketi neden hatırladığınızı anlamıyorsunuz." Şey... Hafızanın devleri için zaten birçok kez söyledim ve gerçekten, yürümek için hangi kasları hangi sırayla zorlamanız gerektiğini hatırlamak oldukça yeterli. Tüm bu hareketi hatırlamanın bir anlamı yok - hayır, hayır. Çok fazla hatırlayamayan geri kalanı için, tüm hareketi bir bütün olarak hatırlamak çok daha makul, ancak kaslarda ne var, hangi sırayla gerginler ve ne kadar - onu gizlemek daha makul. bilinç.

Aşırı yüklenmiş işlevler, derleyici için yalnızca farklı işlevlerdir ve anahtar yoktur.

 
Реter Konow :
Erişmek ne kadar zor olurdu? Her yerden görülebilen küresel bir çekirdeğim var. OOP'de, onu bırakmak zorunda kalırdım. O zaman pencerelerdeki öğelerle nasıl çalışılır? Hayal etmeye çalıştığımda komaya giriyorum.)))

Nedenmiş ?

Küresel çekirdek ve OOP hiçbir şekilde birbirini dışlamaz.

Yalnızca pencerelerdeki öğeler, "Genel teşhirde yalan" değil, pencere sınıfları içinde kapsüllenmelidir. Sırf kimse yanlışlıkla "yanlış yere girmesin" diye. Bir değişkeni değiştirmek ve onu dev bir global dizi içinde yanlış yerleştirmek kolaydır. İstenen arabirimi talep etmek ve daha sonra ihtiyaç duyulan nesnede aynı değişkeni değiştirmek ve aynı zamanda hata yapmak çok daha zordur.

 
Koldun Zloy :

Aşırı yüklenmiş işlevler, derleyici için yalnızca farklı işlevlerdir ve anahtar yoktur.

Ve gerekli olan nasıl seçilir? Sanal fonksiyonlardan ve geç bağlamadan bahsediyoruz. Aşırı yüklenmiş işlevlerden hangisi çağrılacak? Bu, çağrıldığında dolaylı olarak iletilen this işaretçisi tarafından belirlenir. Ve sizce bu seçim nasıl yapılıyor?

 
Georgiy Merts :

Ve gerekli olan nasıl seçilir? Sanal fonksiyonlardan ve geç bağlamadan bahsediyoruz. Aşırı yüklenmiş işlevlerden hangisi çağrılacak? Bu, çağrıldığında dolaylı olarak iletilen this işaretçisi tarafından belirlenir. Ve sizce bu seçim nasıl yapılıyor?

Genel olarak, Peter sanal işlevlerden bahsetmiyordu.

Ama aynı zamanda herhangi bir anahtarı da yok.

Sanal işlevlere sahip bir sınıf, sanal işlevler tablosuna sahiptir.

Ve bu sınıfın her nesnesi bir örtük değişken içerir - sanal fonksiyonlar tablosuna bir işaretçi.

Alt öğede bir veya tüm sanal işlevler yeniden tanımlanırsa, yeni bir tablo oluşturulur ve soyundan gelen örnekler ona bir işaretçi içerir.

 
Koldun Zloy :

Genel olarak, Peter sanal işlevlerden bahsetmiyordu.

Ama aynı zamanda herhangi bir anahtarı da yok.

Sanal işlevlere sahip bir sınıf, sanal işlevler tablosuna sahiptir.

Ve bu sınıfın her nesnesi bir örtük değişken içerir - sanal fonksiyonlar tablosuna bir işaretçi.

Alt öğede bir veya tüm sanal işlevler yeniden tanımlanırsa, yeni bir tablo oluşturulur ve soyundan gelen örnekler ona bir işaretçi içerir.

Aynen öyle. Ben de soruyorum, bu tablo nasıl çalışıyor? Montaj kodunda bu aynı anahtardır.

Ve " sanal işlevlerden bahsetmiyordu" hakkında - yani "neden OOP" gibi bir şey ... Bu, sonuçta, sanal işlevlerle ilgili ve farklı argümanlara sahip basit özdeş işlev adlarıyla ilgili değil.

 
Georgiy Merts :

Aynen öyle. Ben de soruyorum, bu tablo nasıl çalışıyor? Montaj kodunda, bu aynı anahtardır.

Numara. Bu sadece bir dizi işlev işaretçisidir.

Montajcı kodunda tablonun adresi nesneden alınır.

İçinde, belirli bir konumda işlevin adresi alınır.

Ve bu adrese geçiş yapılır.

Ve " sanal işlevlerden bahsetmiyordu" hakkında - yani "neden OOP" gibi bir şey ... Bu, sonuçta, sanal işlevlerle ilgili ve farklı argümanlara sahip basit özdeş işlev adlarıyla ilgili değil.

Sorusuna bakılırsa, aynı isimli işlevlerden bahsediyordu.

Büyük olasılıkla sanal işlevlerden şüphelenmiyor bile.