Hatalar, hatalar, sorular - sayfa 1057
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Cüzdan sadece özel bir durum. Ve kimse onu özel bir yere koyma zahmetinde bulunmuyor.
Başka bir durumda, başka bir nesnenin üst sınıfının bir değişkenine erişmeniz gerekebilir.
Ve buna izin verip vermemeye karar vermek programcıya kalmış. Ve derleyici, programın doğru çalışmasını sağlamalıdır.
Mesele bu, eğer bu çok farklı bir durumunuz varsa, mimariniz kavramsal olarak yanlış ve potansiyel olarak tehlikelidir.
C++'da bir seferde başarısız bir konsept tanıtıldı. arkadaş sınıfları denir. Örneğin, bir sınıf diğerinin nasıl düzenlendiğini biliyorsa, dahili verileriyle oldukça güvenli bir şekilde çalışabilir. Dünya çapında binlerce programcı tarafından kullanma pratiği, bunun çözmekten daha fazla sorun yaratan tehlikeli bir şey olduğunu göstermiştir, bu nedenle Java ve C# gibi modern diller onu terk etmiştir.
Bu özellik şaşırtıcıydı. Kesinlikle, eğer derleyici başka birinin örneğinin özel alanını değiştirmenize izin veriyorsa, bu tam bir saçmalıktır. Servis masasına postalamak gerekli olacaktır .
Anlamıyorum: neden kendini bu kadar sınırlamak istiyorsun?
Bunun programınızı otomatik olarak daha güvenli hale getireceğini düşünüyor musunuz?
Olmayacak! Aksine, tam tersi doğrudur.
Bir gün sizi şöyle yazacak olan ekstra kısıtlamalardır:
Dostum, OOP hakkında bir şeyler bildiğini görüyorum ama yine de özünü yakalayamıyorsun.
Bak:
Sınıfın orijinal fikrinin cüzdanını herkesin kullanımına sunmak olmasına rağmen, "cüzdan" değişkenini kapatmama şaşırdınız mı? Ama herkes özlediği kadarını alırsa kırmızıya geçebilirsin ve bu imkansız. Şimdi GetMoney işlevi buna izin veriyor, ancak birkaç satır eklemeye değer ve artık cüzdanın tuttuğundan daha fazla para almanıza izin vermeyecek. Şimdi "Patron" sınıfına düzinelerce farklı nesnenin para verme isteği ile yaklaştığını hayal edin. Cüzdan değişkeni açıksa, bu nesnelerin her birinin ayrıca yeterli miktarda para olup olmadığını kontrol etmesi (yani kendi uygulamasına sahip olması) gerekecektir. Ve bunlardan en az birinde yoksa, sıfır yerine negatif bir değer alma riskiyle karşı karşıya kalır, bu da sonunda para istediği ve bunun sonucunda da borçlu olduğu anlamına gelir.Dostum, OOP hakkında bir şeyler bildiğini görüyorum ama yine de özünü yakalayamıyorsun.
Bak:
Sınıfın orijinal fikrinin cüzdanını herkesin kullanımına sunmak olmasına rağmen, "cüzdan" değişkenini kapatmama şaşırdınız mı? Ama herkes özlediği kadarını alırsa kırmızıya geçebilirsin ve bu imkansız. Şimdi GetMoney işlevi buna izin veriyor, ancak birkaç satır eklemeye değer ve artık cüzdanın tuttuğundan daha fazla para almanıza izin vermeyecek. Şimdi "Patron" sınıfına düzinelerce farklı nesnenin para verme isteği ile yaklaştığını hayal edin. Cüzdan değişkeni açıksa, bu nesnelerin her birinin ayrıca yeterli miktarda para olup olmadığını kontrol etmesi (yani kendi uygulamasına sahip olması) gerekecektir. Ve bunlardan en az birinde yoksa, sıfır yerine negatif bir değer alma riskiyle karşı karşıya kalır, bu da sonunda para istediği ve bunun sonucunda da borçlu olduğu anlamına gelir.Özel bir cüzdana karşı hiçbir şeyim yoktu. Görüşme şununla başladı: https://www.mql5.com/en/forum/1111/page1072#comment_589657
Her şey doğru. B Sınıfı, harici A sınıfına atıfta bulunur ve A sınıfının korumalı değişkenlerinin kendisi için kullanılabilir olmasını ister. Burada mantık nerede anlamıyorum.
Ve işte mantık. Ben istiyorum..!
http://alenacpp.blogspot.com/2006/03/blog-post_11.html
korumalı değiştirici hala bir fahişe. Nadiren gerçekten ihtiyaç duyulur.
Gerçek kapsülleme, veri gizliliği anlamına gelir.
Söyleyin bana, SymbolName() aracılığıyla ilk sembolü seçmek için - pos'a 1 mi yoksa 0 mı koymam gerekiyor? Dizilerde olduğu gibi indeksleme var mı?
Söyleyin bana, SymbolName() aracılığıyla ilk sembolü seçmek için - pos'a 1 mi yoksa 0 mı koymam gerekiyor? Dizilerde olduğu gibi indeksleme var mı?