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

 
Peter, boğa gözünün önünde kırmızı bir paçavra gibi OOP var. Başka hiçbir başlıkta sizinle olduğu kadar çok OOP tartışması yok. Ve bu, tüm bu zaman boyunca bu OOP üzerine tek bir program yazmamış olmanıza rağmen. Bütün bunları tuhaf bulmuyor musun?
 
Vasiliy Sokolov :
Peter, boğa gözünün önünde kırmızı bir paçavra gibi OOP var. Başka hiçbir başlıkta sizinle olduğu kadar çok OOP tartışması yok. Ve bu, tüm bu zaman boyunca bu OOP üzerine tek bir program yazmamış olmanıza rağmen. Bütün bunları tuhaf bulmuyor musun?

Ben sadece önerileri yanıtlıyorum, yaklaşımımın içinde OOP kullanın . Bu yaklaşımlar uyumlu değildir.

Bu nedenle, neden içinde OOP sözdizimini kullanmadığımı açıklamadan yaklaşımımı daha fazla açıklamaya devam edeceğim.


Ben kullanmıyorsam buna gerek yok.

 
Dmitry Fedoseev :

Her iki tez de yanlıştır.

konu başlatıcıyı sürüklemeyin! zaten 6 sayfa ve göstermek istediği şey henüz net değil, her şeyin çekirdekle ilgili olduğu açık )))

bir örnek gösterecek, sonra onu OOP'nin yazılım geliştirme süresini azalttığına ikna edeceğiz;)

 
Altı sayfa hiçbir şey. Tüccarlar için asıl mesele, bir kar olacağıdır. :) Ve kodda OOP olsun ya da olmasın, bu ikincildir.
 
Реter Konow :

Ben kullanmıyorsam buna gerek yok.

Bir şeyi anlamıyorsanız, onu kullanmanıza asla gerek yoktur. Bu nedenle, mega-kütüphanelerinizde ne yaparsanız yapın, OOP'ye "ihtiyaç" olmayacaktır.

 
Vasiliy Sokolov :

Bir şeyi anlamıyorsanız, onu kullanmanıza asla gerek olmayabilir. Bu nedenle, mega-kütüphanelerinizde ne yaparsanız yapın, OOP'ye "ihtiyaç" olmayacaktır.

 

Öyleyse, basit başlayalım. Proto-çekirdeğin içinde bir eleman prototipi oluşturun:

 int P_CORE[ 3 ][ 5 ] = {
//Основание кнопки.-----------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{   100 , 100 ,     200 ,     50 ,     C'245,245,245' },
//---------------------------------------------- 
//Текст кнопки.---------------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{   120 , 120 ,     0 ,       0 ,       C'245,0,0' },
//---------------------------------------------- 
//Иконка кнопки.-------------------------------- 
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
{   140 , 140 ,     16 ,     16 ,           0 },
//---------------------------------------------- 
};


P_CORE - массив. Я называю его прото-ядром, потому что он содержит прототип элемента, который далее будет изменен.

Элемент кнопка состоит из 3-ех объектов. Каждому из них мы предоставили 5 свойств.
 

Ve böylece, eleman proto-çekirdekte genişletilmiş, tablo biçiminde sunulur.

Tablo görünümün avantajları vardır. Her şeyden önce - döngüler halinde.


Şimdi bir eleman oluşturacak bir fonksiyon yazalım.

Ama önce, kolayca erişilebilmesi için öğenin özelliklerini tanımlar aracılığıyla tanımlayalım.

 
#define BASE        0
#define TEXT        1
#define ICON        2
//-------------------
#define X           0
#define X_SIZE      1
#define Y           2
#define Y_SIZE      3
#define BG_COLOR    4
#define TEXT_COLOR  4
//-------------------
//Вот как будут выглядеть обращения к свойствам элемента:

P_CORE[BASE][X]
P_CORE[BASE][Y]
P_CORE[BASE][X_SIZE]
P_CORE[BASE][Y_SIZE]
P_CORE[BASE][COLOR]

P_CORE[TEXT][X]
P_CORE[TEXT][Y]
P_CORE[TEXT][X_SIZE]
P_CORE[TEXT][Y_SIZE]
P_CORE[TEXT][COLOR]

P_CORE[ICON][X]
P_CORE[ICON][Y]
P_CORE[ICON][X_SIZE]
P_CORE[ICON][Y_SIZE]
P_CORE[ICON][COLOR]
 

Bir buton oluşturacak bir fonksiyon yazıyoruz:

 void Create_element( string name, string Text)
{
 ObjectCreate ( 0 ,name, OBJ_BUTTON , 0 , 0 , 0 );
 ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,P_CORE[BASE][X]);
 ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,P_CORE[BASE][Y]);
 ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE ,P_CORE[BASE][X_SIZE]);
 ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE ,P_CORE[BASE][Y_SIZE]);
 ObjectSetString ( 0 ,name, OBJPROP_TEXT ,Text);
 //----------------------------------------------
 ObjectSetInteger ( 0 ,name, OBJPROP_BGCOLOR ,P_CORE[BASE][BG_COLOR]));
 ObjectSetInteger ( 0 ,name, OBJPROP_COLOR ,P_CORE[TEXT][TEXT_COLOR])); 
 //----------------------------------------------
 ObjectSetInteger ( 0 ,name, OBJPROP_CORNER , CORNER_LEFT_UPPER );
 ObjectSetInteger ( 0 ,name, OBJPROP_ANCHOR , ANCHOR_LEFT_UPPER ); 
}


Elbette, biri çekirdeğe ihtiyaç olmadığını söyleyecektir. Böyle bir çağrı yeterlidir:

Create_element(name,x,y,x_size,y_size,text,anchor,corner...)

ve her şey aynı olacak. Evet, ama sadece başlangıçta. Böyle bir meydan okuma ile ilgili sorun, normal olarak geliştirilememesidir.


Her elemanın özelliklerinin global bellekte sıralanmasını ve bunlara en basit şekilde erişilmesini istiyoruz.