Class/enum/abstract entities
Classes entities
in lutaml dsl class is defined with keyword class:
class Pet {}
Class attributes
Full syntax:
[visibility][/][attribute] name [:type][multiplicity][=initial value][{attribute body}]
where:
visibility can be equal to - - private, + - public, # - protected, ~ - friendly
attribute - attrbute keyword
/ - symbolizes a derived attribute.
multiplicity - Multiplicity is in square brackets (e.g. [1..*]).
initial value - Default value specifies the initial value of the attribute.
{attribute body} - Body of attribute, additional properties for attribute
One can use explicit or implicit syntax for attribute definition
explicit syntax:
class A {
attribute my_attribute
}
enum A {
entry my_val2
}
implicit syntax:
class A {
my_attribute
}
enum A {
my_val2
}
Attribute visibility. Syntax for defining visibility: [+|-|#|~] [attribute] attribute_name. LutaML uses these modificators to define attribute(entry) visbility:
+ => public
- => private
# => protected
~ => package
example:
class Figure {
// Public attribute `radius`
+ radius
// private attribute `filled`
- filled
// protected attribute `length`
# length
}
Also there can be used definition attribute in order to add annotations to attribute
class Figure {
+ radius {
definition {
Radius of the Figure
}
}
}
Enum entities
Enumerators entities can be defined with enum keyword:
enum A {}
Enum values can be represented with the same syntax attribute` notation as class
Data_type entities
Data types are defined with data_type keyword:
data_type "Banking Information" {
"art code"
}
Primitive entities
Primitive entities can be defined with primitive keyword:
primitive Integer