Hatalar, hatalar, sorular - sayfa 1057

 
Zloy_Koldun :

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.

 
C-4 :
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 .
Profesyonellere eşittirler. Ve orada da.
 
Zloy_Koldun :

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:

 ///
/// Класс - меценат. Любой желающий может взять из его кошелька сколько хочет.
/// Если у нас монополия на меценатов, и он может быть только один, объявляем класс статическим
/// (на его работу это никак не повлияет).
///
class Меценат
{
     public :
       /// Отдает нужное количество денег
       int GetMoney( int СколькоДенегВзять)
      {
          кошелек -= СколькоДенегВзять;
          return СколькоДенегВзять;
      }
     private :
       int кошелек;
};
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.
 
C-4 :

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/ru/forum/1111/page1072#comment_589657
 
Zloy_Koldun :
Ö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.
 
C-4 :
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..!
 
MetaDriver :
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.

Права доступа при наследовании
  • 2006.03.11
  • alenacpp.blogspot.com
С правами доступа при наследовании довольно легко запутаться. Мало того, что для данных и функций класса в С++ есть целых три уровня доступа: , и , еще ведь можно и само наследование сделать , и . Самым загадочным их них является -наследование. Запутаться во всем этом зоопарке очень просто, поэтому я аккуратно расписала где какой уровень досупа...
 
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ı?
 
paladin800 :
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ı?
Kontrol etmesi çok kolay: Yazdır.
 
paladin800 :
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ı?
Evet, sıfırdan.