[Lazarus] Circular references
Graeme Geldenhuys
graemeg at opensoft.homeip.net
Fri Aug 14 09:02:37 CEST 2009
Michael Van Canneyt wrote:
>
> This is the world upside down. Better tell us exactly why you think
> this must be possible. the 'Sometimes there is a valid design for
> something like that' is not an argument at all. Maybe there are other
> - more valid - ways to accomplish what you want.
I can give you loads of examples where I had to implement workarounds in
Object Pascal to get around that "limitation".
Have ever tried to write code in a similar fashion as Java does? One
class per unit. You will hit that issue very quickly. What about having
two-way referencing in objects: Customer.GetOrders and
Order.GetCustomer. Or Many-to-Many relationships.
For all these you need to revert to Interfaces or use base classes
(TObject or TtiObject) and do lots of casting in the implementation
section. These are all workarounds for a language (compiler) limitation,
which does not exist in other languages like C++ or Java. Alternatively
you have to use one HUGE model.pas unit and all your various business
classes in there - and maybe even structured via include files and have
lots of forward declaration at the top of the model.pas unit. Problem
then is that any class can reference any Private or Protected fields in
other classes. :-(
Regards,
- Graeme -
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
More information about the Lazarus
mailing list