ここまでで、実現機能の実装に向けた準備は一通り終わりました。
ここからは、この実装レベルのクラス図に対してリファクタリングしていきます。
ポイントは、カプセル化とエラー処理です。
カプセル化とは、データとそれを操作する手続きを一体化して「オブジェクト」として定義することを言いますが、私はクラスや属性、振舞に対する隠蔽(アクセス修飾)を含めてカプセル化という認識を持っています。また、クラスをグループ化して管理する機構であるパッケージについてもカプセル化の概念と捕らえます。
以上のことを考慮してパッケージ構造と、アクセス修飾について考えて見ましょう。
制御のためのクラス(client)とそのため計算機を構成する部品については明らかに目的が違いますので、ここでパッケージ分けることにします。
また、数値クラスは、制御クラスから直接操作させるべきものではないので、数値クラスでpublicとしていたメソッドのアクセス修飾をprotectedに変更します。