TBoldElement¶
TBoldElement is the abstract base class for all elements in the Bold framework. It provides common functionality for string representation, comparison, assignment, and subscription.
Class Definition¶
TBoldElement = class(TBoldSubscribableObject)
public
// String representation
property AsString: string;
property DisplayName: string;
function GetStringRepresentation(Representation: TBoldRepresentation): string;
procedure SetStringRepresentation(Representation: TBoldRepresentation; const Value: string);
// Comparison
function CompareTo(BoldElement: TBoldElement): Integer;
function IsEqual(BoldElement: TBoldElement): Boolean;
// Assignment
procedure Assign(Source: TBoldElement);
function IsEqualAs(CompareType: TBoldCompareType; BoldElement: TBoldElement): Boolean;
// OCL evaluation
function EvaluateExpression(const Expression: string): TBoldElement;
function EvaluateExpressionAsNewElement(const Expression: string): TBoldElement;
// Mutability
property Mutable: Boolean;
end;
Inheritance¶
classDiagram
TBoldSubscribableObject <|-- TBoldElement
TBoldElement <|-- TBoldDomainElement
TBoldElement <|-- TBoldSystem
TBoldDomainElement <|-- TBoldObject
TBoldDomainElement <|-- TBoldMember
TBoldElement : +AsString
TBoldElement : +CompareTo()
TBoldElement : +EvaluateExpression()
click TBoldSystem href "../TBoldSystem/" "TBoldSystem documentation"
click TBoldObject href "../TBoldObject/" "TBoldObject documentation"
click TBoldMember href "../TBoldMember/" "TBoldMember documentation"
Properties¶
AsString¶
Universal string representation:
DisplayName¶
Human-readable name for display purposes:
Mutable¶
Indicates whether the element can be modified:
Methods¶
CompareTo¶
Compare two elements:
var
Result: Integer;
begin
Result := Element1.CompareTo(Element2);
// Result < 0: Element1 < Element2
// Result = 0: Element1 = Element2
// Result > 0: Element1 > Element2
end;
IsEqual¶
Check equality:
Assign¶
Copy value from another element:
EvaluateExpression¶
Evaluate an OCL expression with this element as context:
var
Customer: TBoldObject;
OrderCount: TBoldElement;
begin
OrderCount := Customer.EvaluateExpression('self.orders->size');
ShowMessage('Orders: ' + OrderCount.AsString);
end;
EvaluateExpressionAsNewElement¶
Evaluate and return a new element (caller owns it):
var
Customer: TBoldObject;
ActiveOrders: TBoldObjectList;
begin
ActiveOrders := Customer.EvaluateExpressionAsNewElement(
'self.orders->select(status = ''Active'')'
) as TBoldObjectList;
try
// Use ActiveOrders
finally
ActiveOrders.Free;
end;
end;
String Representations¶
Bold supports multiple string representations for different purposes:
| Representation | Constant | Purpose |
|---|---|---|
| Default | brDefault |
General display |
| Short | brShort |
Compact display |
| Long | brLong |
Detailed display |
// Get specific representation
var
ShortName: string;
begin
ShortName := Element.GetStringRepresentation(brShort);
end;
Derived Classes¶
| Class | Description |
|---|---|
| TBoldSystem | The Object Space manager |
| TBoldDomainElement | Base for objects and members |
| TBoldObject | Domain object instances |
| TBoldMember | Attributes and references |
| TBoldAttribute | Simple values |
| TBoldObjectList | Collections |
See Also¶
- TBoldSystem - Object Space manager
- TBoldObject - Domain objects
- Subscriptions - Change notification