Benim yaklaşımım. Çekirdek - Motor.

 

Bu başlıkta, programlamaya yaklaşımımdan bahsetmek istiyorum. Sizi önceden uyarıyorum - GUI hakkında herhangi bir tartışma olmayacak. Bunun hakkında konuşacaksam, o zaman sadece çözümlerimin çalışmasına bir örnek olarak .

İlk başta, OOP benim için anlaşılırdı ve hatta yakındı. Felsefi bağlamda "Nesne", "Yapı", "Sınıf"ın ne olduğunu biliyordum. Programlamanın felsefeye doğru derinleşmesini gerçekten sevdim ve ilgiyi ateşledi. Ve neredeyse ciddi bir çalışma yaptım ... Ama bu süreçte dirençte bir artış hissettim. Başkasının felsefesini reddetmek. Ve bu kırgınlık büyüdü.

Çocukluğumdan beri felsefi düşünmeye alışkınım. Ve programlamada bir felsefe buldum. Bir noktada ondan hoşlandım. Ama benim düşüncem her zaman başka birinin konseptini kırmaya çalıştı. Onunla dövüş. Ne için? - kazanmak ve siparişinizi oluşturmak için.

Çok eski zamanlardan beri, felsefi kavramlar birbirleriyle "savaştı". Ve doğuştan bir filozof olarak benim için OOP kavramı kişisel bir meydan okuma haline geldi.


Ancak bu sadece bir ön izleme.

Ve böylece, her şey neredeyse 4 yıl önce başladı.

Daha sonra basit bir prosedürel tarzda paneller oluşturdum. Ve grafik nesnelerin özelliklerini tek bir dizide birleştirme fikri aklıma geldi. Uygun olacağını düşündüm. Ne için?

  1. Nesneler arasında dolaşın ve özelliklerini değiştirin.
  2. Nesneleri birbirine bağlayın.
  3. Yalnızca bir diziye erişerek nesne özellik değerlerini alın.

"Çekirdek" fikri böyle doğdu.

OOP'de "Çekirdek" kavramı yoktur. OOP, bir sınıflar ve yapılar topluluğu oluşturmayı önerir, ancak programın asıl merkezini sağlamaz. Sadece koşullu. OOP'deki nesneler aslında referanslardır. Açıklama araçları ve erişim anahtarları. Bir grup sınıf, karmaşık bir merkezi olmayan ağa benzer. OOP, programın mimarisini oluşturma konusunda keskinleştirilmiştir. Yani, DOĞRU PROGRAM MİMARİSİ OLUŞTURMAK OOP'NİN TEMEL AMACIDIR.

Yaklaşımım da bir Nesne kavramına sahiptir. Ancak benim yaklaşımımda "Nesne" çok daha somut. Bu bir özellikler topluluğudur. Bunu yaparken, yaklaşımım belirli bir Program Mimarisinin önemini görmezden geliyor. Mimari, programcının rahatlığına göre değil, programın verimliliği gereksinimlerine göre oluşturulmuştur. Bu, sözdizimini basitleştirir ve kural sayısını azaltır.

Doğada, Çekirdek kavramı her yerde mevcuttur. Vücudun her hücresinde bir çekirdek vardır. Gök cisimlerinin çekirdeği vardır. Dünya'da, Güneş'te. Çekirdek, yeni bitkilerin ortaya çıktığı bitkilerin meyvelerindedir. Ve Doğanın HER YERİNDE, Mimarlık Verimliliğin üzerindedir. Bu nedenle Doğa düz çizgiler oluşturmaz ve canlılar bloklardan oluşmaz. Ancak, bir kişi Doğadan daha zayıftır ve unutulmaz şemalara, düzenlemeye, sınıflandırmaya ihtiyaç duyar. İnsan dünyayı parçalar halinde algılar ve onu parçalar halinde de yeniden üretir.

OOP kavramı insan doğasını çok iyi yansıtır.

Ancak, yaklaşımıma geri dönelim:

  • Ve böylece, bir NESNE bir özellikler topluluğudur.
  • Çekirdek, Nesnelerin bulunduğu bellek alanıdır.

Pratikte, - Çekirdek bir matristir. Nesne bir vektördür.

Matris birçok vektör içerebilir. Ve bu benim yaklaşımımın temel kurallarının sınırıdır. Daha sonra, onunla neler yapabileceğinize dair örnekler göstereceğim.







 
Hemen soru şu: açık kaynak nerede?
 
Vladimir Karputov :
Hemen soru şu: açık kaynak nerede?

Kodu ve örnekleri yayınlayacağım. Bu önsöz.

 
Реter Konow :

Kodu ve örnekleri yayınlayacağım. Bu önsöz.

Açık kaynak?

 

İçinde! Hadi Peter, yaklaşımınla da ilgileniyorum. Kodsuz da olsa (Vladimir kişiyi rahatsız etme, önce dinleyelim).

 
Yine harçta su
 

İçimde bir deja vu hissi var.

Ama o zamandan beri şimdi okumak için özel bir şey yok, Peter'ın bir sonraki konusu gayet iyi olacak.

 

Zhenya, Vasya, sabırsızsınız... Bırakın adam konuşsun!

 
Georgiy Merts :

Zhenya, Vasya, sabırsızsınız... Bırakın adam konuşsun!

Hayır, neden sabırsız. Size söylüyorum - bu oldukça önemli bir konu, ancak Peter muhtemelen bu konuşmaya katıldığı her tartışmayı ortaya çıkarmaya çalışıyor.

 

Çekirdekte sunulan bir grafik öğesinin bildirimine bir örnek:

_OBJECTS_SET,BUTTON,
//------------T------X----Y----W-----H----B_TYPE-- MOB---PXL-----------G------------C----SG--SC--OBJSCR--NEUTRAL----GRADIENT--A1--B1--C1-----------A2----B2--C2----------A3----B3--C3--------A4--B4--C4-------OBH--OBI--C5--D5--E5--------------------------------------------------------------------------------------------------------------ACT-STATUS--CURRENT-----CURRENT---LAST--------------------------------------------
//Основание кнопки--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,   0 ,   100 ,   25 ,  _STRIP, _CNVS, 1 ,  _aw1,BUTTON,   0 ,_MOB,     0 ,    _aw1, C'245,245,245' ,  FR_32,  _C2C,_CNVS, 0 ,  FR_33,  _C2C,_CNVS, 0 ,   FR_32, 0 ,     0 ,   0 ,   A4, 0 , 0 ,   0 ,    A5, 0 ,   0 ,   0 ,   0 ,   0 ,   A6,   0 ,    A7, 0 ,       0 ,         0 ,         0 ,         0 ,       FR_32,        FR_33,       0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,   A8,   0 ,   0 ,   0 ,  

             A9, CLICKED_RELEASED, C'230,230,230' ,   0 ,  _C_PIXEL,  _C_PIXEL,    _C_PIXEL,    _C_PIXEL,     C'245,245,245' ,   _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Лейбл кнопки--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,     0 ,   0 ,   0 , _LABEL, _CNVS,   0 ,  _aw3,BUTTON,  _EL,   0 ,   0 ,    _aw1, _NS_gr1,   A1, _X2X, _aw1,   7 ,   A2,  _C2C,  _aw1,   0 ,  A3,   0 ,     0 ,   0 ,   A4,   0 , 0 ,   0 ,      A5, 0 , 0 , _aw1,   0 ,   0 ,   A6,   0 ,    A7, 0 ,     0 ,         0 ,         0 ,         0 ,         0 ,         0 ,     0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,   A8,   0 ,   0 ,   0 ,  

             A9, 0 , 0 ,   0 , 0 ,   0 ,   0 ,     0 ,     0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,     _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Текст наименования кнопки --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,   5 ,     0 ,   0 ,     0 ,   0 ,  _TEXT_, _CNVS,   0 ,  _aw2,BUTTON,_OCN,   0 ,     0 ,    _aw1, 0 ,     A1,  _C2C,_aw1,   0 ,   A2, _C2C,_aw1, 0 ,     A3,   0 ,     0 ,   0 ,   A4,   0 , 0 ,   0 ,    A5, 0 ,   0 ,   0 ,   0 ,   0 ,  A6,   0 ,  A7, 0 ,       0 ,         0 ,         0 ,         0 ,         0 ,         0 ,         0 ,       0 ,       0 ,       0 ,         0 ,         0 ,       0 ,       0 ,   A8,  Microsoft_JhengHei_Light, FW_NORMAL ,   8 ,   

             A9, 0 , 0 ,   0 , C'100,100,100' ,   C'100,100,100' ,   0 ,     0 ,     0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   2 , 1 , 1 ,   1 , 0 ,  _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_END_,

  1. Öğe Bildirimi: _OBJECTS_SET,BUTTON,


2. Bir Öğenin İçinde Bir Nesne Bildirme - _NEW_OBJECT

Ayrıca, Nesnenin bildirilmesinden sonra özellik değerleri vardır. Farklı durumlar için boyutlar, renkler, nesnelerin birbirine bağlanmaları...


Bütün bunlar birlikte bir öğenin prototipidir - Düğmeler.

Bu prototip, yapım aşamasında Çekirdeğe yazılır. Daha sonra yapıcı dosyası okunur ve bu değerlerin üzerine özel değerler yazılır.

Ana şey, benim yaklaşımımda Eleman ve Nesnenin temsil şeklidir. O tabular. Bu, Nesne verilerini sıkıştırmanıza ve çok sayıda özelliği küçük bir alana sığdırmanıza olanak tanır. OOP Kurallarına göre yazarsanız kocaman bir ayak örtüsüne dönüşecektir.




 
Реter Konow :

OOP'de "Çekirdek" kavramı yoktur. OOP, bir sınıflar ve yapılar topluluğu oluşturmayı önerir, ancak programın asıl merkezini sağlamaz ...

OOP çok esnek bir metodolojidir, bu nedenle "çekirdek" kavramı gibi apriori fikirleri yoktur. Ancak, OOP kullanarak, burada tartışılan çekirdeğin modelini çok iyi oluşturabilirsiniz. Bu nedenle, ifade tamamen doğru değildir.