Parlare dell'OLP nel salone - pagina 8

 
Maxim Dmitrievsky:

Probabilmente perché difficilmente capisco questo codice :)

Mi dispiace, sono un programmatore dilettante... conosco solo l'OOP ad un livello base

Beh, non sei l'unico che non lo capisce, non sei l'unico... Questo stile - stipare ciò che non può essere stipato in una macro - ha i suoi vantaggi e svantaggi. Per quantoho notato, il mio collegafxsaber mostra solo vantaggi (flessibilità, multipiattaforma, ecc.). E il fatto che non si possa controllare tale codice nel debugger, cos'è? Beh, la leggibilità di tale stile è piuttosto discutibile. Ma, come si dice, il padrone è il padrone...

 
Комбинатор:
In C++, classe e struttura sono le stesse, solo alcuni default sono diversi.

Sì, come si prende un puntatore a una struttura?

 
Vasiliy Sokolov:

Quindi bisogna imparare dagli esempi giusti. E non ce ne sono a SB. Prendete CObject per esempio - non fornisce il controllo del tipo, non fornisce lavoro a livello di interfaccia con gli oggetti, ma contiene metodi senza senso come Save() e Load(), che non sono mai sovrascritti nella pratica. I puntatori m_prev e m_next sono usati in una singola classe CList, ma sono presenti come zavorra per tutte le sue classi discendenti. Il più utile è il metodo Comparer(). In realtà viene sovrascritto il più delle volte. Ma nel modo normale Comparer() è un'interfaccia, sarebbe meglio definirla non in un CObject, ma come una classe separata.

Per favore, spiegatemi il controllo, non capisco. Che tipo di oggetti? In generale, questa dovrebbe essere una classe fittizia senza campi o metodi. Il suo unico scopo è quello di fornire un antenato comune per altre classi. È un grosso errore che gli sviluppatori lo abbiano riempito di spazzatura.

Non ci dovrebbe essere alcun Confronto. Dovrebbe essere una classe fittizia.

 
Alexey Volchanskiy:

Spiegare il controllo, non capisco. Con quali oggetti? Dovrebbe essere una classe fittizia senza campi o metodi. Il suo unico scopo è quello di fornire un antenato comune per altre classi. È un grosso errore che gli sviluppatori lo abbiano riempito di spazzatura.

Non ci dovrebbe essere alcun Confronto. Dovrebbe essere una classe fittizia.

Questo non è SmallTalk, tutta la pratica (e anche la teoria) ha dimostrato che emettere un albero oggetto da Adam è un male meschino. E ST è autorizzato a farlo, è nel suo proprio succo (la sua macchina virtuale).

A giudicare dal caldo, aspettatevi un tentativo di cattura per l'8 marzo? :-) Sarà una festa di donne, naturalmente, ma sarà un peccato non bere.

 
Maxim Kuznetsov:

Questo non è SmallTalk, tutta la pratica (e anche la teoria) ha dimostrato che derivare l'albero oggetto da Adamo è un male crudele. E ST è autorizzato a farlo, è nel suo stesso succo (la sua macchina virtuale).

A giudicare dall'entusiasmo, entro l'8 marzo potremmo aspettarci un try-catch-throw ? :-) Naturalmente sarà la festa delle donne, ma sarà un peccato non bere.


No, non ci saranno vacanze, ha detto Renat - nessuna eccezione. Vedihttps://www.mql5.com/ru/forum/168361 , qualcuno l'ha tirato fuori. Mi sono chiesto io stesso se ci sono piani per gli exeptses o cosa? La risposta è stata ahimè no.

Ma nel compilatore abbiamo un'importante casella di controllo - controlla i divisori ))))). In attesa della casella di controllo "controlla i limiti dell'array..." entro l'8 marzo. E poi vedremo altre 25 pagine con caselle di controllo simili. Non sappiamo come fare un estratto, vero?

SZY: Guardato la classe base Object in C#, anche minima. Immagine da msdn


Почему в MQL5 нет исключений?
Почему в MQL5 нет исключений?
  • 2017.01.29
  • www.mql5.com
Не нужны, надо все условия руками проверять, по старинке оно надежнее Нужны, почему нет - не знаю А что это такое? Хочу посмотреть...
 
Dennis Kirichenko:

Beh, non sei l'unico che non capisce, non sei l'unico... Questo stile - per stipare ciò che non si può stipare nelle macro - ha i suoi vantaggi e svantaggi. Per quantoho notato, il mio collegafxsaber dimostra solo vantaggi (flessibilità, multipiattaforma, ecc.). E il fatto che non si possa controllare tale codice nel debugger, cos'è? Beh, la leggibilità di tale stile è piuttosto discutibile. Ma come si dice, il padrone è il capo.

Perché attribuire a un esempio concreto ciò che non contiene?

Maxim Dmitrievsky:

Quali modelli si possono usare per imparare a programmare esattamente allo stesso modo? :) sembra molto bello.

Sono un autodidatta, per questo non lo seguo da nessuna parte. Ho un approccio Tupolev: "Solo gli aerei belli volano bene!".

 
Maxim Kuznetsov:

Questo non è SmallTalk, tutta la pratica (e anche la teoria) ha dimostrato che derivare l'albero oggetto da Adamo è un male crudele. E ST è autorizzato a farlo, è nel suo proprio succo (la sua macchina virtuale).

A giudicare dal caldo, ci aspettiamo di provare a prendere il lancio entro l'8 marzo? :-) Certo, sarà una festa di donne, ma è un peccato non bere qualcosa.


Il punto di una classe base vuota è che possiamo scrivere una cosa del genere. Dico subito che l'esempio non è utile, l'ho inventato al volo. Il punto è che possiamo ridurre qualsiasi classe derivata a CObject*.

CObject* objarr[12];

void OnStart()
{
    objarr[0] = new CAccountInfo;
    // еще что-то подобное, кладем в массив указатели на объекты абсолютно разных классов, но с одним предков
    objarr[11] = new CDealInfo;
    // обращаемся и работаем
    CAccountInfo * ai = (CAccountInfo*)objarr[0];
    //
    
    for(int n = 0; n < 12; n++)
        if(CheckPointer(objarr[n]) == POINTER_DYNAMIC)
            delete objarr[n];
       
}

*

 
Alexey Volchanskiy:

Sì, come si prende un puntatore a una struttura?

Onestamente non capisco la domanda, ma in ogni caso è lo stesso che per la classe
 
Комбинатор:
Sinceramente non capisco la domanda, ma in ogni caso è la stessa della classe

Mi scusi, nel contesto di quale lingua sta traendo questa conclusione? :-)



 
Комбинатор:
Onestamente non capisco la domanda, ma in ogni caso è lo stesso che per la classe

class C {};
struct S {};

void OnStart()
{
    C *_c = new C; // так можно
    S *_s = new S; // указатели на структуру не допускаются 
}