Page 2 sur 2

Re: POO et MacOS X

Publié : mer. 29/mai/2019 10:34
par microdevweb
Perso je trouve qu'avec les macros dans ce cas-ci même si le code paraît plus clair cela devient difficile de gérer l'héritage et on perd complètement l'avantage de l’auto complétion.

Autre exemple

Code : Tout sélectionner

EnableExplicit
; MACRO OOP
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
  Macro PROC_SIZE:4:EndMacro
CompilerElse
  Macro PROC_SIZE:8:EndMacro
CompilerEndIf

Macro METHODE(CLASS)
  DataSection
    S_#CLASS:
  EndMacro
  
  Macro END_METHOD(CLASS)
    E_#CLASS:
    EndDataSection
  EndMacro
  Macro SET_METHODE(METHODE)
    Data.i @METHODE
  EndMacro
Macro CLASS(NAME)
  Structure NAME 
    *methods
  EndMacro
  Macro NEW_CLASS(CLASS)
    Protected *this.CLASS = AllocateStructure(CLASS)
  EndMacro
  Macro END_CLASS
    EndStructure
  EndMacro
  
  Macro PUSH_METHOD(CLASS)
    *this\methods = AllocateMemory(?E_#CLASS-?S_#CLASS)
    *this\methods = ?S_#CLASS
  EndMacro
  
CLASS(_draw)
  name.s
  END_CLASS
  
  Procedure draw_setName(*this._draw,name.s)
    With *this
      \name = name
    EndWith
  EndProcedure
  Procedure.s draw_getName(*this._draw)
    With *this
      ProcedureReturn \name 
    EndWith
  EndProcedure
  
  Procedure.i new_draw(name.s)
    NEW_CLASS(_draw)
    METHODE(_draw)
    SET_METHODE(draw_setName())
    SET_METHODE(draw_getName())
    END_METHOD(_draw)
    PUSH_METHOD(_draw)
    *this\name = name
    ProcedureReturn *this
  EndProcedure
  
  Interface draw
    setName(name.s)
    getName.s()
  EndInterface
  
  Define myDraw.draw = new_draw("teste")
  Debug myDraw\getName()
  
  

Maintenant je ne vais pas relancer la polémique, mais l'oop sous Pb ressemble plus à de la poo (Falsam comprendra j'en suis sure :wink: )

Re: POO et MacOS X

Publié : mer. 29/mai/2019 15:29
par falsam
microdevweb a écrit :Falsam comprendra j'en suis sure
Je ne commenterais pas ^^

Re: POO et MacOS X

Publié : mer. 29/mai/2019 15:37
par G-Rom
microdevweb a écrit : Maintenant je ne vais pas relancer la polémique, mais l'oop sous Pb ressemble plus à de la poo (Falsam comprendra j'en suis sure :wink: )
J'ai aussi compris et je le rejoins aussi sur ce point.

Re: POO et MacOS X

Publié : jeu. 12/sept./2019 21:47
par Philippe_GEORGES
Pour en revenir au problème d'origine, la variable id n'était pas du bon type, il faut la déclarer en double.

Code : Tout sélectionner

  Structure _struct
    *methods
    id.d ; d pas l !!! sinon plantage sur mac os x
    dbName.s
  EndStructure
Maintenant, le code fonctionne !

Phil