OOP uzmanları için soru. - sayfa 35

 
Реter Konow :

Ve hiyerarşinin derinliklerinde bir yerde ortak bir köke sahip olan alt sınıflar arasındaki çapraz bağlar nasıl kurulur?

Örneğin: F Sınıfı ve Z sınıfı, hiyerarşide ortak bir kök olan A sınıfı olan kalıtım zincirlerinin son halkalarıdır.

F sınıfından Z sınıfının verileri veya yöntemleri nasıl alınır?

Mümkün değil. Böyle bir şey yok. Ama bu gerekli değil.

Nesneleri oluşturduktan sonra, bir nesnenin işaretçisini ikinciye ve ikincinin işaretçisini birinciye geçirebilirsiniz.

Bununla birlikte, konuşma sınıfla ilgiliyse, iki nokta üst üste kullanarak herhangi bir şeye başvurabilirsiniz. Ama neden gerekli? Bazı durumlarda, elbette gereklidir, ancak bu, OOP'nin son derece küçük bir olasılığıdır.

 
Dmitry Fedoseev :

Mümkün değil. Böyle bir şey yok. Ama bu gerekli değil.

Nesneleri oluşturduktan sonra, bu nesnenin işaretçisini ikinciye, ikincinin işaretçisini birinciye geçirebilirsiniz.

Bununla birlikte, konuşma sınıfla ilgiliyse, iki nokta üst üste kullanarak herhangi bir şeye başvurabilirsiniz. Ama neden gerekli?

Her şey F sınıfının hangi görevleri çözdüğüne bağlıdır.Üçüncü taraf miras zincirinde kullanılan veri veya yöntemlerin kullanışlı olabileceği bir durum olabilir.
 

Örnek: F Sınıfı Renk ve Uzunluk yöntemlerini, Z Sınıfı ise Ses ve Genişlik yöntemlerini depolar.

Uzunluk ve Genişlik olmak üzere iki özelliği olan bir Nesne görünür, ancak bunlar farklı F ve Z sınıflarında hesaplanır. Nasıl olur? Bu yöntemlerin tekrarı ile ayrı bir sınıf oluşturun veya bunlara nasıl erişilir? (Dört nokta üzerinden mi?)

 
Реter Konow :

Örnek: F Sınıfı Renk ve Uzunluk yöntemlerini, Z Sınıfı ise Ses ve Genişlik yöntemlerini depolar.

Uzunluk ve Genişlik olmak üzere iki özelliği olan bir Nesne görünür, ancak bunlar farklı F ve Z sınıflarında hesaplanır. Nasıl olur? Bu yöntemlerin tekrarı ile ayrı bir sınıf oluşturun veya bunlara nasıl erişilir? (Dört nokta üzerinden mi?)

Yeni bir sınıf oluşturabilir ve içine F ve Z sınıflarını dahil edebilirsiniz.

 class F{
};

class Z{
};

class Y{
   public :
   F f;
   Z z;
}
 
Dmitry Fedoseev :

Yeni bir sınıf oluşturabilir ve içine F ve Z sınıflarını dahil edebilirsiniz.

Sınıf-"yay"? Apaçık. TEŞEKKÜR.
 
Dmitry Fedoseev :

Yeni bir sınıf oluşturabilir ve içine F ve Z sınıflarını dahil edebilirsiniz.

Ve istenen sınıfa bir işaretçi elde etmek için bir yöntem yapmak için bir başkasının verilerine ihtiyaç duyulan bir sınıfta mümkündür.

 
Реter Konow :
Sınıf-"yay"? Apaçık. TEŞEKKÜR.

İstediğiniz sınıfa bir işaretçi alabilir ve işaretçiyi sınıfın bir nesnesini almak için kullanabilirsiniz. Ancak bunu dikkatli bir şekilde yapmalısınız - boş veya yeni bir sınıf nesnesine bir işaretçi almamak için.

 
Artyom Trishkin :

İstediğiniz sınıfa bir işaretçi alabilir ve işaretçiyi sınıfın bir nesnesini almak için kullanabilirsiniz. Ancak bunu dikkatli bir şekilde yapmalısınız - boş bir sınıf nesnesine işaretçi almamak için.

incelikler. Apaçık. Miras hiyerarşisi, açık bir şekilde sınıflandırılabilir, önceden belirlenmiş ve net verilerle uygundur. Nesneler daha karmaşık hale geldiğinde, sınıflarda sağlanmayan ve "bağların" oluşturulmasını gerektiren yöntem ve özelliklerin kombinasyonları görünebilir - yani. sınıflar arasında çapraz bağlantılar. Bu her zaman uygun değildir ve güzel bir dağıtım şemasını bozabilir ve onu revize etmeye zorlayabilir.
 
Реter Konow :
Sınıf-"yay"? Apaçık. TEŞEKKÜR.

örnekte

 class F{
};

class Z{
};

class Y{
   public :
   F f;
   Z z;
}

Y Sınıfı, F ve Z sınıf türlerine sahip değişkenler içerir.

Ancak, bir yerde F ve Z sınıflarının nesnelerini zaten yarattıysanız ve kullandıysanız, o zaman Y nesnesinde bunlara erişemezsiniz. Y nesnesi, F ve Z sınıflarından iki yeni nesneye sahip olacaktır.

Ve F ve Z sınıflarının önceden oluşturulmuş ve halihazırda kullanılmış nesnelerine erişmek için, Y sınıfındaki F ve Z nesnelerine referanslar almanız gerekir - o zaman Y sınıfı, F ve Z'de önceden yazılmış verilerle çalışabilecektir ve Z ve yenilerini ve bozulmamış F ve Z'yi kullanmayın.

Ancak hemen böyle bir bağlantı nesnesi oluşturursanız, içindeki F ve Z, F ve Z sınıflarına erişim sağlar ve bunları yalnızca Y sınıfı aracılığıyla doldurmanız gerekir - yine, ondan F ve Z nesnelerine erişim verin, istenen nesneye bir işaretçi alın ve işaretçiyle onunla çalışın.

 
Реter Konow :
incelikler. Apaçık. Miras hiyerarşisi, açık bir şekilde sınıflandırılabilir, önceden belirlenmiş ve net verilerle uygundur. Nesneler daha karmaşık hale geldiğinde, sınıflarda sağlanmayan ve "bağların" oluşturulmasını gerektiren yöntem ve özelliklerin kombinasyonları görünebilir - yani. sınıflar arasında çapraz bağlantılar. Bu her zaman uygun değildir ve güzel bir dağıtım şemasını bozabilir ve onu revize etmeye zorlayabilir.

Hiçbir şeyi kırmanıza gerek yok - sınıfa başka bir sınıfın gerekli nesnesine bir işaretçi veren bir yöntem eklemeniz gerekiyor.

Son makalelerde, böylece daha önce oluşturulmuş ve çalışan ve zaten birikmiş olan sembol koleksiyonu sınıfının veri nesnelerine ve cari hesap nesnesine işaretçileri ticaret nesnelerine aktarıyorum. Ve tüccar sınıfı onlarla her zaman olduğu gibi çalışır.

Neden: