Il mio approccio. Il nucleo è il motore. - pagina 6

 
Peter, hai l'OLP come uno straccio rosso davanti a un occhio di bue. Nessun altro thread discute di OOP tanto quanto voi. E questo nonostante il fatto che non hai scritto un solo programma in questa stessa OOP. Non trovate tutto questo strano?
 
Vasiliy Sokolov:
Peter, hai OOP come uno straccio rosso davanti a un occhio di bue. Nessun altro thread discute di OOP tanto quanto voi. E tutto questo nonostante il fatto che non hai scritto un solo programma in questa stessa OOP. Non trovate tutto questo strano?

Sto semplicemente rispondendo ai suggerimenti di usare OOP nel mio approccio. Questi approcci non sono compatibili.

Quindi, continuerò a spiegare il mio approccio, senza spiegare perché non uso la sintassi OOP al suo interno.


Se non lo uso, allora non ce n'è bisogno.

 
Dmitry Fedoseev:

Entrambe le tesi sono false.

Non trascinare il topicstarter qui già per 6 pagine, ma non è chiaro cosa vuole mostrare, è chiaro che è tutto sul kernel ))))

ci mostrerà un esempio e poi lo convinceremo che OOP fa risparmiare tempo nello sviluppo del software ;)

 
Sei pagine di niente. Per i commercianti, la cosa principale è fare un profitto. :) Che il codice abbia OOP o meno è di secondaria importanza.
 
Реter Konow:

Se non lo uso, allora non c'è bisogno di usarlo.

Se non si capisce qualcosa, non ci sarà mai bisogno di usarla. Quindi, qualsiasi cosa abbiate in corso nelle vostre mega-librerie, "non sarà necessaria" per OOP.

 
Vasiliy Sokolov:

Se non si capisce qualcosa, non ci sarà mai bisogno di usarla. Quindi, qualunque cosa abbiate nelle vostre mega-librerie, non c'è "bisogno" di OOP lì.

 

Quindi, cominciamo con uno facile. Creiamo un elemento prototipo all'interno del proto-kernel:

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

E così, l'elemento è rappresentato nel proto-core in forma espansa e tabellare.

La rappresentazione tabellare ha i suoi vantaggi. Principalmente in loop.


Scriviamo ora una funzione che creerà un elemento.

Ma prima, definiamo le proprietà dell'oggetto tramite le definizioni, così è facile fare riferimento ad esse.

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

Scriviamo una funzione che creerà un pulsante:

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


Naturalmente, alcuni diranno che il kernel non è necessario. Una chiamata come questa sarà sufficiente:

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

e tutto sarà uguale. Sì, ma solo all'inizio. Il problema di una tale chiamata è che non può essere sviluppata adeguatamente.


Abbiamo bisogno che le proprietà di ogni elemento siano organizzate nella memoria globale e accessibili nel modo più semplice.

Motivazione: