2011-05-17 14 views
11

Bir satır nesnesinin işlevini, yapıcıya giriş bağımsız değişkeni olarak bir satır tanıtıcısı alan bir sınıf kullanarak genişlettim. Bu sınıf daha sonra çizgiyi vurgulayan çizgiyi algılamak ve bazı satır/veri özelliklerini ayarlamak için kontroller içeren bir panel görüntülemek için bir WindowMouseMotion dinleyici oluşturur. Bu iyi çalışıyor.Grafik nesnelerinin işlevlerini miras yoluyla genişletmek mümkün mü?

Şimdi, bu sınıfın, satırın ObjectBeingDestroyed etkinliğini dinleyerek silinen çizgiyi algılayıp yanıtlamasını sağlamaya çalışıyorum. Benim sorum, bu sınıfın satırın satırını satır nesnesine bağlayarak en iyi çözüm olan veya'un satır sınıfını onun içinden miras alarak genişletip genişletemeyeceğidir. MATLAB belgelerini inceledim ve çevrimiçi arama yaptım ancak grafik sınıflarından miras alma konusunda kesin bilgiler bulamıyorum.

+0

Bu oldukça ayrıntılı bir özelliktir ve yakında bir yanıt görmeyebilirsiniz. [Bunu Mathworks'e sormak isteyebilirsiniz] (http://www.mathworks.com/matlabcentral/answers/?s_cid=HP_FR_answers). –

+0

@Chris A. - Bağlantı için teşekkürler. MATLAB Central haber grubunu biliyordum ama bir şekilde Cevaplar bölümünü kaçırdım. İşte benim yazı için bir bağlantı: http://www.mathworks.com/matlabcentral/answers/7737-is-it-possible-to-extend-graphics-objects-functionality-through-inheritance –

+0

Kalıtım Üzerinden Kompozisyonu Tercih Et: http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance – Mikhail

cevap

2

Yerleşik tanıtıcı grafik sınıflarının alt sınıfını bulmak mümkündür. http://undocumentedmatlab.com/blog/udd-properties/'da bir örnek var. Özellikle belgesiz UDD mekanizmasını kullanır. MathWorks, UDD'nin dahili geliştirme ve kullanım için ve desteklenmediği birçok kez belirtmiştir. Bununla birlikte, MathWorks'ün sağladığı m kodunda çok sayıda UDD alt sınıf örneğinin bulunduğunu belirtmek gerekir. Ayrıca, UDD sırrında bir şeyi saklamak için belirli bir neden olduğunu hissettiklerinde ya yerleşik ya da kodlanmış. Öyleyse, MathWorks tarafından sağlanan kaynak kodunda nasıl bir şeyler yapılacağına dair örnekler bulursanız, bunları kullanmaktan çekinmeyin.

1

Bu yanıtı şu adresten aldım MATLAB Central Answers: "Grafik nesneleri tanıtıcıdan (/ subclass) miras almanın belgelenmiş bir yolu yoktur. Buradaki kural, belgede bulamıyorsanız desteklenmez."

Yeni HG2 sınıfları here'u genişletmenin mümkün olabileceğine dair bir öneri var ancak bu resmi bir Mathworks bilgisi değil.

+1

Gerçekten de hattın ObjectBeingDestroyed etkinliğini dinleyebilirsiniz. Matlab'ın kod içinde dahili olarak birçok kez yaptığı şey budur (örneğin javacomponent.m'ye bakın). Belki de daha basit bir yaklaşım, satırın DeleteFcn özelliğinde bir geriçağırım işlevi ayarlamaktır. –

İlgili konular