サンプルコードにタイプミスがあると思います。Layout
クラスは、次のようなダイアグラムの内部クラスである必要があります。
class RestuarantClasses extends ClassDiagram {
@Spacing(0.5)
@TopMost(People.class)
@Row({Customer.class, Worker.class})
@Column({People.class, Worker.class,Waiter.class})
@Row({Cooker.class, Waiter.class, Cashier.class})
class RestuarantLayout extends Layout {}
}
StateMachine の説明では、ボックス間の垂直方向の関係も指定する必要があります。アルゴリズムは、行の垂直方向の配置を解決できません。
そうでなければ、ダイアグラムの説明に問題はないと思います。
注 1:Above
、Below
、Left
およびを使用するとRight
、ボックスの直接の隣接を表現できます。Row
andを使用するとColumn
、同じ関係を表す便利な形式になります。
注 2:Payment
状態はどこにも書いていません。図の説明に含まれていないボックスは、デフォルトでは図に表示されません。ボックスについて何も言いたくないが、それを見たい場合は、Show
注釈を使用します。
ダイアグラム記述言語の詳細を読む
何の連想も得られないのは非常に奇妙です。ダイアグラムに表示されるボックス間のリンクは、自動的に配置され、視覚化されます。
モデルを再作成しようとしましたが、正常に動作するはずです:
package restaurant.model;
class People;
class Worker extends People;
class Cooker extends Worker;
class Cashier extends Worker;
class Waiter extends Worker;
class Customer extends People{
initial OpenDoor;
state Waiting;
state StartSelection;
state SaladOrNoodle;
state OrderSteak;
state OrderNoodle;
state OrderSalad;
state Payment;
transition tr1{
from OpenDoor;
to Waiting;
}
transition startSelectionTr{
from Waiting;
to StartSelection;
trigger StartSelectionSignal;
}
transition orderSteakTr{
from StartSelection;
to OrderSteak;
trigger OrderSteakSignal;
}
transition orderSaladOrNoodleTr{
from StartSelection;
to SaladOrNoodle;
trigger OrderSaladOrNoodleSignal;
}
transition orderSaladTr{
from SaladOrNoodle;
to OrderSalad;
trigger OrderSaladSignal;
}
transition orderNoodleTr{
from SaladOrNoodle;
to OrderNoodle;
trigger OrderNoodleSignal;
}
transition payTr1{
from OrderNoodle;
to Payment;
trigger PaySignal;
}
transition payTr2{
from OrderSteak;
to Payment;
trigger PaySignal;
}
transition payTr3{
from SaladOrNoodle;
to Payment;
trigger PaySignal;
}
}
signal StartSelectionSignal;
signal OrderSteakSignal;
signal OrderSaladOrNoodleSignal;
signal OrderSaladSignal;
signal OrderNoodleSignal;
signal PaySignal;