MQL5 eğitimi - sayfa 19

 
papaklass :
Sana sorabilir miyim? Prosedürel programlama ile OOP arasındaki temel fark nedir? Birkaç kelime, farkın özü budur.

Prosedürel yaklaşımın bile yapıların varlığını ima ettiği gerçeğiyle başlayalım, çünkü onlarsız çok zor. En azından bir tür veri organizasyonudur.

OOP, tasarım aşamasında soyut varlıkları ve aralarındaki ilişkileri oldukça rahat bir şekilde vurgulamanıza olanak tanır. Ardından, uygulamanın özellikleriyle gerçekten uğraşmadan bunları tek tek kodlayın.

Evet ve hepsi daha mantıklı görünüyor ve daha iyi okuyor. Ve genellikle daha hızlı çalışır. Ve en önemlisi, daha hızlı uygulanır. Daha fazla kod olabileceği gerçeğine rağmen.

 
papaklass :

Bu konudaki anlayışınızı ifade etmenizi ve bana kitap gibi bir formülasyon vermemenizi istedim. Hayır hayır demektir. Sana kendimden bahsedeceğim.

Eh, bu yüzden "bir kitap formülasyonu vermedim" :) Hiçbir şey formüle etmedim - nedenlerinin bir açıklamasıyla. Sadece bir sınav sorusunun sorulduğunu varsaydım, cevabını hap sayesinde zaten biliyorsunuz. Böylece ortaya çıktı :) Kişisel deneyim hakkında cevap vermeyi reddetmedim.

Bazen bir fenomeni “hissetmek” ve “bu nasıl olabilir” ve “derin anlamı nedir” gibi felsefi sorular sormadan, sadece bir örnekle nasıl çalıştığını anlamak yeterlidir. Tetris El Kitabındaki söz benim için yeterliydi ve bu örnek daha en baştan için yeterliydi:

Oluşturulan sınıf nesnesine bağlı olarak, türetilmiş bir sınıfın sanal işlevi çağrılır.

 void CTetrisField::NewShape()
  {
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape= rand ()% 7 ;
   switch (nshape)
     {
       case 0 : m_shape= new CTetrisShape1; break ;
       case 1 : m_shape= new CTetrisShape2; break ;
       case 2 : m_shape= new CTetrisShape3; break ;
       case 3 : m_shape= new CTetrisShape4; break ;
       case 4 : m_shape= new CTetrisShape5; break ;
       case 5 : m_shape= new CTetrisShape6; break ;
       case 6 : m_shape= new CTetrisShape7; break ;
     }
//--- отрисовываем
   m_shape.Draw();
//---
  }

Davranışları kaynak verilere bağlı olarak değişen nesnelerin sezgisel olarak oluşturulması - neyin görülmesi gerektiği ve neyin görülmesi gerektiği. Ayrıca - Forumda Tetris ile birlikte tüm dosyanın yanı sıra Dizin, kütüphaneler vb. malzemelerini talep ettim. Ve gidiyoruz. Forumda konuyla ilgili bir sürü soru var.

papaklas :

Sitede bir çok bilgiyi okuduktan sonra hala OOP'nin ne olduğunu anlamadım.

Sadece yaklaşımlarda temel bir farkımız var. Bilimsel bir bakış açısıyla “OOP nedir” sorusunu kendime gerçekten sormadım. - Yeni ve anlaşılmaz terimlerin cephesinin ardındaki özü kaybetmemek için.

Mevcut örnekleri incelemek için aptalca tırmandım.

papaklas :

Sitede bir çok bilgiyi okuduktan sonra hala OOP'nin ne olduğunu anlamadım.

Hatta mevcut bilgileri bile farklı şekillerde okuyoruz :) "OOP nedir" sorusunun yönlendirmeli cevabı şurada bulunabilir: MQL5 Reference / Language Basics / Object-Oriented Programming. Sadece sayfayı oku. Görünüşe göre, bu benim için yeterliydi - üçüncü taraf materyallerde başka tanımlar aramaya gerek kalmadan.

 
papaklass :

Soruma cevap:

Prosedürel programlama eylemlere (fiiller) odaklanırken, nesne yönelimli programlama nesnelere veya nesnelere (isimler) odaklanır. Bu ana farktır.


teoride ve pratikte:

Prosedürel programlama, ne yapılacağı sorusuna cevap verir (fiiller),
Nesne yönelimli programlama - bir nesneyi (isim) fiiller ve tanımlar (sıfatlar ).

Yani, OOP, birçok konuşma parçasıyla anlamlı cümlelere genelleştirici bir kod eklentisidir.


Sadece fiillerde konuşan, prosedürlerde yaşayabilir.

Kim kodunu anlatmak ister sonra OOP ile yazsın.


not.

Tüm bu programcı teorisyenlerinden ne kadar bıktım, kahretsin.

Yakında "OOP vs Prosedürler" konuları acımasızca öldürülecek.
 
sergeev :

not.

Tüm bu programcı teorisyenlerinden ne kadar bıktım, kahretsin.

Yakında "OOP vs Prosedürler" konuları acımasızca öldürülecek.
Peki, neden hemen "öldür"? MQL5'e yeni başlayanların çoğu "prosedürel programlamaya" aşinadır. Ve OOP'nin gerekliliği ve anlamı hakkında soruları varsa, sabırla açıklamalı / çiğnemelidirler. Okulda bir öğretmen olarak, yıldan yıla aynı. Sabırla açıklayın - ve sırf öğretmen bu konuyu tekrar etme zahmetine girdiği için hayır göndermeyin.
 
sergeev :

not.

Tüm bu programcı teorisyenlerinden ne kadar sıkıldınız, kahretsin.

Yakında "OOP vs Prosedürler" konuları acımasızca öldürülecek.

"İnfaz affedilemez" - Dilediğiniz gibi noktalama işaretleri koymak yerine - Açıklayıcı bir sözlük yazın - Ve "acımasızca öldürecek" kimse olmayacak.

Ve sonra OOP'nin "uygulayıcılarını" okursunuz - bu sadece son derece zeki OOP uzmanlarından oluşan bir "kast"tır.

MQL5, yalnızca tekerlemeler için değil, tüm anlayış ve yetenek seviyeleri için bir dildir - standart gösterge örnekleri ve Uzman Danışmanlar bunun kanıtıdır.

Bir programlama dili bir amaç değil, bir araçtır. Hedefe ulaşmak için PP yeterliyse, öyle olsun. Birisi OOP'yi anlar ve daha kolay anlarsa - öyle olsun. Ve hedefe ulaşmak için - temel bir fark yoktur - özellikle ağırlıklı olarak yazılan düşük kodlu mikroişlevsel göstergelerin ve danışmanların% 90'ında.

 

papaklass :

Konuyu incelemeye başlarken böyle bir tabirle karşılaştığınızda, kitap boyunca neyin tartışılacağı hemen belli oluyor. Ve bir şekilde her şey yerine oturuyor. Niteliklerin nesnelerin özellikleri olduğunu, uygulama ve yöntemlerin aynı (işlevler) olduğunu ve son olarak sınıfların nesnelerden oluştuğunu anlıyorsunuz. Nesneler yalnızca niteliklere (özellikler) ve yöntemlere (işlevlere) sahip olmakla kalmaz, aynı zamanda birbirleriyle etkileşime girebilirler. Aynı zamanda, onların (nesnelerin) diğer nesnelerin niteliklerini ve yöntemlerini bilmeleri önemli değildir. Böylece, bu tür tuğlalardan birbirleriyle etkileşime giren sınıflar oluşturulur.

Her şeyi öyle bir yığın haline getirmişsin ki, ondan yulaf lapası bile yapamıyorsun)) Bu bir kitapta yazılmış olamaz.
 
abolk :

Bir programlama dili bir amaç değil, bir araçtır. PP hedefe ulaşmak için yeterliyse, öyle olsun. Birisi OOP'yi anlar ve daha kolay anlarsa - öyle olsun.

Akıllıca. Kendi kendime karar veririm: Tek para birimi göstergeleri yazılımda yazılır. Çok para birimli bir Uzman Danışman - OOP kullanımıyla (OOP olmadığı için - benim özel durumumda - hiç ortaya çıkmayacaktı).
 

Как уже надоели все эти программистские теоретики, блин. 

Yakında "OOP vs Prosedürler" konuları acımasızca öldürülecek.

Bunun nedeni, insanların her ikisini de kullanmanın avantajlarını, dezavantajlarını, yerlerini ve yollarını bilmemeleridir. Bu kadar basit örneklerin olduğu bir makale: PP bu göreve _1 artılar ve eksiler verecek, OOP bu göreve _1 artılar verecek ve eksileri şöyle; PP bu görev için artılar verecek_2 böyle ve eksiler böyle, OOP bu görev için artılar verecek_2 böyle ve eksiler şöyle... Yeni başlayanlar için OOP ile tanışmak, incelikler ve farklılıklar zor olabilir. Ve hepsi basit problemlerin çözümüne vurgu yaparak ve zorluk budur - mümkün olduğunca basit ve kısa, ancak PP ve OOP ilkelerini kullanarak bir açıklama ve örnekler gereklidir.

O zaman basit uygulama örnekleriyle her şeyin düzenlendiği, bazı konularda sistematize edildiği bir yere göndererek konuyu patlatmak mümkün olabilirdi.

Yedelkin :
Akıllıca. Kendi kendime karar veririm: Tek para birimi göstergeleri yazılımda yazılır. Çok para birimli bir Uzman Danışman - OOP kullanımıyla (çünkü OOP olmadan hiç görünmeyecekti).
Sevgili Yedelkin! Eğer ilgileniyorsanız, prosedürel olarak tasarlanmış çok para birimli bir çekirdek gönderebilirim (açık bir çubukta çalışır). Kod 4 için yazılmıştır, ancak 5'e de gidecektir - üzerinde her iki seçeneğin performansını karşılaştırabilirsiniz.
 
-Alexey- : Sevgili Yedelkin! Eğer ilgileniyorsanız, prosedürel olarak tasarlanmış çok para birimli bir çekirdek gönderebilirim (açık bir çubukta çalışır). Kod dördü için yazılmıştır.
Mümkünse herkesin birlikte ve karşılıklı anlayış içinde yaşamasından yanayım. Mesajlarıma gelince, sadece OOP hakkındaki anlayışımı anlattım. (Anlayış) üç kez yanlış olabilir, ama o "benim". OOP yardımıyla çözmeyi başardığım bazı görevlerin PP çerçevesinde de çözülebileceğini hiç dışlamıyorum. abolk'un ifadesinin hikmeti tam olarak şudur: " Eğer PP amaca ulaşmak için yeterliyse, öyle olsun. Birisi için OOP yapmak daha açık ve kolaysa, öyle olsun ." Yazıma eklendi.
 
Yedelkin :
Mümkünse herkesin birlikte ve karşılıklı anlayış içinde yaşamasından yanayım. Mesajlarıma gelince, sadece OOP hakkındaki anlayışımı anlattım. (Anlayış) üç kez yanlış olabilir, ama o "benim". OOP yardımıyla çözmeyi başardığım bazı görevlerin PP çerçevesinde de çözülebileceğini hiç dışlamıyorum. abolk'un ifadesinin hikmeti tam olarak şudur: " Eğer PP amaca ulaşmak için yeterliyse, öyle olsun. Birisi için OOP yapmak daha açık ve kolaysa, öyle olsun ."
Kabul ediyorum. Ve bir veya başka bir tercihin havasına göre savaşmak için, forum üyeleri arasında yarışmalar-yarışmalar düzenlemek en iyisidir. Böyle bir görev var ...: hız, bellek tüketimi, kod boyutu, taşınabilirlik açısından hangi yaklaşım özellikle kazanacak ...?