public であるかなど.
各関係はどのパターンのどの関係にあたるかを含む
参照・集約については変数の項目で取り扱う
課題としては,関係の逆を(継承される側など)どうするか, 複数の RoleRelation が含まれる可能性があるのか (継承については機能が多重化することが考えられるが,変数は?), など.
各関数はどのパターンのどの関数にあたるかを含む.
これも,変数と同様に機能が多重化することがあり得るかが問題.
Class :- name, lang, package: Identifier;
access: AcceSpec; otherspecs: Specifiers;
roles: Roles; relations: Relations;
members: Members
Roles :- Role*
Role :- patternname, rolename: Identifier
Relations :- Relation*
Relation :- Inheritance | Creation
Inheritance :- target: Identifier; rolrels: RoleRelations
Creation :- target: Identifier; rolrels: RoleRelations
RoleRelations :- RoleRelation*
RoleRelation :- patternname, relationname: Identifier
Members :- Member*
Member :- Variable | Method
Variable :- type, name, initval: Identifier;
access: AcceSpec;
otherspecs: Specifiers;
rolerels: RoleRelatons
Method :- type, name: Identifier;
access: AcceSpec;
otherspecs: Specifiers;
args: Args; roleops: RoleOperations
code: Code
Args :- Arg*
Arg :- type, name: Identifier;
specs: Specifiers
RoleOperations :- RoleOperation*
RoleOperation :- patternname, rolename, operationname: Identifier
AcceSpec :- specifier: String
Specifiers :- specifiers: String
Code :- code: String
Identifier :- name: String