Mi enfoque. El núcleo es el motor. - página 6

 
Peter, tienes a la OLP como un trapo rojo frente a una diana. En ningún otro hilo se habla tanto de OOP como en el suyo. Y esto a pesar de que no has escrito ni un solo programa en esta misma OOP. ¿No te parece extraño todo esto?
 
Vasiliy Sokolov:
Peter, tienes a OOP como un trapo rojo frente a una diana. En ningún otro hilo se habla tanto de OOP como en el suyo. Y todo esto a pesar de que no has escrito ni un solo programa en esta misma OOP. ¿No te parece extraño todo esto?

Simplemente respondo a las sugerencias de utilizar la POO dentro de mi enfoque. Estos enfoques no son compatibles.

Así que pasaré a explicar mi enfoque, sin explicar por qué no uso la sintaxis OOP dentro de él.


Si no lo uso, no es necesario.

 
Dmitry Fedoseev:

Ambas tesis son falsas.

No arrastre el topicstarter aquí por 6 páginas ya, pero no está claro lo que quiere mostrar, está claro que es todo sobre el núcleo ))))

nos mostrará un ejemplo y entonces le convenceremos de que la POO ahorra tiempo en el desarrollo de software ;)

 
Seis páginas de nada. Para los operadores, lo principal es obtener beneficios. :) El hecho de que el código tenga OOP o no es de importancia secundaria.
 
Реter Konow:

Si no lo uso, entonces no hay necesidad de usarlo.

Si no se entiende algo, nunca puede haber necesidad de utilizarlo. Así que lo que sea que tengas en tus megabibliotecas, "no será necesario" para OOP.

 
Vasiliy Sokolov:

Si no se entiende algo, nunca puede haber necesidad de utilizarlo. Así que, sea lo que sea lo que tengas en tus megabibliotecas, ahí "no hay necesidad" de OOP.

 

Así que, empecemos con una fácil. Vamos a crear un elemento prototipo dentro del proto-núcleo:

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 свойств.
 

Y así, el elemento se representa en el proto-núcleo en forma expandida y tabular.

La representación tabular tiene sus ventajas. Principalmente en los bucles.


Escribamos ahora una función que cree un elemento.

Pero primero, vamos a definir las propiedades del elemento mediante defines, para que sea fácil referirse a ellas.

 
#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]
 

Escribimos una función que creará un botón:

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); 
}


Por supuesto, algunos dirán que el núcleo es innecesario. Una llamada como esta será suficiente:

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

y todo será igual. Sí, pero sólo al principio. El problema de esta convocatoria es que no se puede desarrollar adecuadamente.


Necesitamos que las propiedades de cada elemento estén organizadas en la memoria global y sean accesibles de la manera más sencilla.

Razón de la queja: