Re: POO et MacOS X
Publié : mer. 29/mai/2019 10:34
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
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
)
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()
