Canvas üzerinde bir kitle kaynaklı proje yapma - sayfa 38

 
Реter Konow :
Çekirdek matristir. Nesnelerin tüm özelliklerini içerir.

Yönteminizi seçebilirsiniz. Ancak, gui'yi yıllarca incelediğimde, başka hiçbir yolun gelişen bir sistemin işlevselliğinde benzer bir artış sağlayamayacağı sonucuna vardım. Maksimum basitlik ve verimlilik mükemmelliktir.


Peter, sadece mevcut sürümde değil, GUI'leri yazma konusunda deneyiminiz ve örnekleriniz var mı?

Diğer paradigmaları tamamen reddediyorsunuz, ancak modelinizin GUI uygulaması için en başarılı olduğunu iddia ediyorsunuz. Bu açıklama oldukça tartışmalıdır.

 

çizilen çizgilerin açılarını, kesişme noktalarını ve elips oranlarını düzelten bir gösterge yapın. Bağlantı noktaları gelecekte belirlenirken

iki hafta sonu sonra ve ne kanlı bir hindi günü..

PS / arayüz çizen insanlar ticaretle hiç ilgilenmiyor gibi görünüyor

 
Maxim Kuznetsov :

çizilen çizgilerin açılarını, kesişme noktalarını ve elips oranlarını düzelten bir gösterge yapın. Bağlantı noktaları gelecekte belirlenirken

iki hafta sonu sonra ve ne kanlı bir hindi günü..

PS / arayüz çizen insanlar ticaretle hiç ilgilenmiyor gibi görünüyor

Max, vakaların yarısında öyle olduğunu söylemeye cüret ediyorum. Bir tüccarın bir programcı olması gerekmez ve bir programcının hiç bir tüccar olması gerekmez.

 

Peter'ın mql dışında hiçbir şeyde programlamadığını varsaymaya cesaret ediyorum. Dillerin tüm modern sürümleri, sınıflarla çalışma bilgisi gerektirir: Java, Kotlin, Sharp, Python, C++, vb. 1C'de bile, sabit nesne türleri biçiminde bir sınıf benzerliği vardır. Ama bu kadar, konu.

Benim bakış açıma göre, arayüz oluşturma sistemi şöyle görünmeli:

CForm Форма = new CForm;
Интерфейс.Добавить(Форма);
CButton КнопкаBUY= new CButton;
КнопкаBUY.Заголовок = "BUY" ;
КнопкаBUY.ЦветФона = clrBlue ;
КнопкаBUY.Позиция( 7 , 20 );
Форма.Добавить(КнопкаBUY);

Yani, bir arabirimin oluşturulması bildirimsel olmalıdır. Başka bir programcının dizinlere erişerek bir kontrolün özelliklerinin açıklamasını nasıl ekleyeceğini hayal bile edemiyorum.....

Ortalama bir programcı için bile, yeni başlayanlardan bahsetmiyorum bile, bir bulmaca olacağından eminim.

 
Алексей Барбашин :

Peter'ın mql dışında hiçbir şeyde programlamadığını varsaymaya cesaret ediyorum. Dillerin tüm modern sürümleri, sınıflarla çalışma bilgisi gerektirir: Java, Kotlin, Sharp, Python, C++, vb. 1C'de bile, sabit nesne türleri biçiminde bir sınıf benzerliği vardır. Ama bu kadar, konu.

Benim bakış açıma göre, arayüz oluşturma sistemi şöyle görünmeli:

Yani, bir arabirimin oluşturulması bildirimsel olmalıdır. Başka bir programcının dizinlere erişerek bir kontrol öğesinin özelliklerinin açıklamasını nasıl ekleyeceğini hayal bile edemiyorum .....

Ortalama bir programcı için bile, yeni başlayanlardan bahsetmiyorum bile, bir bulmaca olacağından eminim.

Dizine bağlı birçok öğe ve / veya özellik varsa, o zaman sorunsuz ve tam tersi, her birine atıfta bulunarak bir ayak örtüsü yazmak zordur.

 
Roman :

Bir matris, döngülerin iç içe geçmesidir ve iç içe döngüler zamandır. IMHO, alay yok, sadece mantıklı akıl yürütme.

Doğru. Evrendeki her şey zaman alır.)
 
Алексей Барбашин :

1. Peter, şu çıkıyor: çekirdek, global bir eleman özellikleri matrisinden, global bir eleman değerleri matrisinden, bir global bağımlılık matrisinden, global bir resim matrisinden oluşur ...

2. Biraz daha özellik eklemeniz gerekiyorsa, matrislerin boyutu artar.

3. Hücrelerin adları olmadığından, özelliklere erişim kesinlikle dizinler tarafından gerçekleştirilir.

Yapıda en az alan adlarına hitap etmek mümkündür.

Peter, sen... bir dev...

Örneğin, şöyle görüyorum (basitleştirilmiş):

4. Fiili "sınıf", global dizinizdeki belirli bir dizedir, yalnızca daha "insan" yüzüdür. Sınıflar, dizinle değil, adla erişilebilen bir dizi anlaşılabilir özellik ile kendi veri nesnelerini oluşturmak üzere tasarlanmıştır. Bir sınıf yalnızca genel bir tür oluşturucudur.

Bu nedenle, hemen hemen tüm kontrollerin sahip olduğu en yaygın özellikleri içeren temel bir kontrol oluşturuyoruz.

Temel olarak, özel nesneler oluşturabilirsiniz:

Yani, takip eden her bir kontrol tipi, temel tipe gerekli özellikleri basitçe ekler.

Ve daha önce yazdığım gibi, ana özellikler temel denetleyicide depolandığından, imlecin "isabetinin" kontrole geçişi, bir veri türü kontrol edilirken gerçekleştirilir: CControl. İstenen nesneyi bulduktan sonra, programın noktası zaten nesnenin kendisinde olduğundan program hemen bu nesnenin özelliklerine erişir, tıpkı döngünüzde olduğu gibi program dizinin istenen satırındadır.

1. Çekirdek tek bir küresel matristir. İkili boyutlar. Çekirdek tarafından inşa edilmiştir Hangi pencerelerin ve öğelerin oluşturulacağını biçimlendirme dilinde yazıldığı bir dosyayı okuyan bir işlev.

2. Hayır, matrisin boyutu sabittir. Sadece 2 ölçüm.

3. Çekirdekteki nesnelerin özellikleri sıralanır. Her birinin kendi indeksi vardır. İndeksler tanımlar aracılığıyla adlandırılır. Nesnelerin özelliklerinin sayısındaki artışla, matrisin genişliği büyür. Büyümesini engellemenin ve içindeki nesneleri sıkıştırmanın yolları var.

4. Bir nesnenin tanımı olarak bir sınıf iyidir, ancak mekanizma (kod olan) çekirdekle daha verimli çalışır. Ancak, önemli değil. Kim rahat.

Nesne özelliklerinin dağınık tanımı ve depolanması nedeniyle (ana sınıftaki ana olanlar, mirasçılarda kalanlar), erişim ve işleme daha karmaşık hale gelir. Görünürlük kısıtlamaları, erişim değiştiricileri ve bir yabancı dil ekleyin ve yalnızca mekanizmanın değil, aynı zamanda geliştirmenin verimliliğinde de gerçek bir düşüş elde edersiniz. Ancak, bu IMHO'dur.
 
Реter Konow :
1. Çekirdek tek bir küresel matristir. İkili boyutlar. Çekirdek tarafından inşa edilmiştir Hangi pencerelerin ve öğelerin oluşturulacağını biçimlendirme dilinde yazıldığı bir dosyayı okuyan bir işlev.

2. Hayır, matrisin boyutu sabittir. Sadece 2 ölçüm.

3. Çekirdekteki nesnelerin özellikleri sıralanır. Her birinin kendi indeksi vardır. İndeksler tanımlar aracılığıyla adlandırılır. Nesnelerin özelliklerinin sayısındaki artışla, matrisin genişliği büyür. Büyümesini engellemenin ve içindeki nesneleri sıkıştırmanın yolları var.

4. Bir nesnenin tanımı olarak bir sınıf iyidir, ancak mekanizma (kod olan) çekirdekle daha verimli çalışır. Ancak, önemli değil. Kim rahat.

Nesne özelliklerinin dağınık tanımı ve depolanması nedeniyle (temel sınıftaki ana olanlar, mirasçılarda kalanlar), erişim ve işleme daha karmaşık hale gelir . Görünürlük kısıtlamaları, erişim değiştiricileri ve bir yabancı dil ekleyin ve yalnızca mekanizmanın değil, aynı zamanda geliştirmenin verimliliğinde de gerçek bir düşüş elde edersiniz. Ancak, bu IMHO'dur.

Hiç karmaşıklaşmıyor ve bu, sınıfların güzelliği ve gücü. Her biri, orijinal nesnenin işlevselliğine dayalı olarak işlevselliğini oluşturur. Sonuç olarak, tüm temel işlevler (odaklanma, tıklamalar, öğenin ötesine geçme, sürükleme, çizim) - tüm bunlar temel nesneler temelinde gerçekleştirilir. Daha fazla geliştirme ve değişiklik, yeni kontrollerin geliştirilmesi - tüm bunlar, sizin dilinizde, yani kütüphanenin "çekirdeği" düzeyinde oluşturulduğundan, temel işlevselliği hiçbir şekilde etkilemeyecektir. Bu durumda, nesneler tam olarak belirli bir özellik için gerekli olan veri türlerine sahip olacaktır.

"Çekirdek, hangi pencerelerin ve öğelerin oluşturulacağını işaretleme dilinde yazıldığı bir dosyayı okuyan özel bir işlev tarafından oluşturulmuştur." - sadece teneke. Yani, tüm özellikleri saklayan bir matrisiniz var ve ayrıca matrisin özelliklerle tam olarak nasıl okunacağını gösteren bir işaretleme dosyası da var ... " Endeksler tanımlar aracılığıyla adlandırılır " - her dizin katı bir şekilde bir tanımlamaya bağlıdır. Yanlışlıkla fazladan bir alan eklemek, sonuçlarla birlikte mülk kaymasına neden olur. "Nesnelerin özelliklerinin sayısındaki artışla, matris genişlikte büyür" - boyuttan bahsederken demek istediğim buydu (üzgünüm, terimi yanlış uyguladım). Veri nesnenizi bir sınıf olarak oluşturarak tüm bu karmaşıklıklardan kaçınırsınız. Ve bunlar gerçekten ihtiyaç duyulmayan gerçek zorluklar. Daha sonra başarılı bir şekilde üstesinden gelmek için kendimiz için zorluklar yaratmayı biliyoruz.

Evet ve sınıfların hiyerarşik olarak oluşturulması gerekmez ve aslında kullanılmaları da gerekmez. Ancak gereksiz veri akışlarından kurtulmak için yapıların kullanılması tavsiye edilir. Benim nacizane fikrime göre

Peter, kendi stilinde bir GUI kitaplığı yaratmakla harika bir iş çıkardın. Ancak bu vakayı yayınlamayı planlıyorsanız, yine de başka bir teknoloji için her şeyi yeniden yapmaya değer. Bu konuda size yardımcı olmaya ve adım adım kitaplığınızın tüm gücünü yeni bir yöne aktarmaya hazırım.

 
Алексей Барбашин :

Hiç karmaşıklaşmıyor ve bu, sınıfların güzelliği ve gücü. Her biri, orijinal nesnenin işlevselliğine dayalı olarak işlevselliğini oluşturur. Sonuç olarak, tüm temel işlevler (odaklanma, tıklamalar, öğenin ötesine geçme, sürükleme, çizim) - tüm bunlar temel nesneler temelinde gerçekleştirilir. Daha fazla geliştirme ve değişiklik, yeni kontrollerin geliştirilmesi - tüm bunlar, sizin dilinizde, yani kütüphanenin "çekirdeği" düzeyinde oluşturulduğundan, temel işlevselliği hiçbir şekilde etkilemeyecektir. Bu durumda, nesneler tam olarak belirli bir özellik için gerekli olan veri türlerine sahip olacaktır.

"Çekirdek, hangi pencerelerin ve öğelerin oluşturulacağını işaretleme dilinde yazıldığı bir dosyayı okuyan özel bir işlev tarafından oluşturulmuştur." - sadece teneke. Yani tüm özellikleri saklayan bir matrisiniz var ve ayrıca matrisin özellikleri ile tam olarak nasıl okunacağını belirten bir işaretleme dosyası var... Veri nesnenizi bir sınıf olarak oluşturarak tüm bu zorluklardan kurtulursunuz. Ve bunlar gerçekten ihtiyaç duyulmayan gerçek zorluklar. Daha sonra başarılı bir şekilde üstesinden gelmek için kendimiz için zorluklar yaratmayı biliyoruz.

Evet ve sınıfların hiyerarşik olarak oluşturulması gerekmez ve aslında kullanılmaları da gerekmez. Ancak gereksiz veri akışlarından kurtulmak için yapıların kullanılması tavsiye edilir. Benim nacizane fikrime göre

Peter, kendi stilinde bir GUI kitaplığı yaratmakla harika bir iş çıkardın. Ancak bu vakayı yayınlamayı planlıyorsanız, yine de başka bir teknoloji için her şeyi yeniden yapmaya değer. Bu konuda size yardımcı olmaya ve adım adım kitaplığınızın tüm gücünü yeni bir yöne aktarmaya hazırım.

Biliyor musun, burada kendimin ve diğer insanların kararlarının uygulanması hakkında o kadar çok tartıştım ki yoruldum. )) Basitçe, gerçekten yorgun. Benim düşüncem matrikse daha uygun, diğerlerinin düşüncesi sınıflara... bu konuda mızrak kırma.

Genel olarak, kuralları değiştirmeye veya basitleştirmeye, genel rotadan sapmaya, kendiminkini başkasınınkine üstün tutmaya meyilliyim. Beni değiştirme.

Teklif için teşekkürler. GUI geliştirmede kendi yolunuza gidebilirsiniz. Ben zaten yolumu yaptım ve farklı bir üslupla tekrarlamanın bir anlamı göremiyorum. Bir biçimlendirme dili var, görsel düzenleyiciye birkaç adım ve yayınlanmadan yaklaşık bir hafta önce. Görev çubuğunu yeniden yapmak ve küçük hataları yakalamak için kalır. O zaman benim çalışmamı değerlendireceksin. Umarım herkes için faydalı olur.

not. Gönderdikten sonra, çözümler hakkında daha fazla ayrıntıya girebileceğim ve bu, derslerde bir muadili oluşturmanıza yardımcı olabilir.
 
Реter Konow :
Biliyor musun, burada kendimin ve diğer insanların kararlarının uygulanması hakkında o kadar çok tartıştım ki yoruldum. )) Basitçe, gerçekten yorgun. Benim düşüncem matrikse daha uygun, diğerlerinin düşüncesi sınıflara... bu konuda mızrak kırma.

Genel olarak, kuralları değiştirmeye veya basitleştirmeye, genel gidişattan sapmaya, başkasınınkine karşı kendiminkini öne sürmeye meyilliyim. Beni değiştirme.

Teklif için teşekkürler. GUI geliştirmede kendi yolunuza gidebilirsiniz. Ben zaten yolumu yaptım ve farklı bir üslupla tekrarlamanın bir anlamı görmüyorum. Bir biçimlendirme dili var, görsel düzenleyiciye birkaç adım ve yayınlanmadan yaklaşık bir hafta önce. Görev çubuğunu yeniden yapmak ve küçük hataları yakalamak için kalır. O zaman benim çalışmamı değerlendireceksin. Umarım herkes için faydalı olur.

Sizin durumunuzda, bu bir basitleştirme değil, gerçek bir komplikasyondur. Benim nacizane fikrime göre