SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Eclipse 3.4からはじめるIDE入門

Eclipse 3.4のコード生成&リファクタリング機能(続)~Eclipse 3.4入門~

第9回


フィールドのカプセル化

 「フィールドのカプセル化」機能は、指定したフィールドをprivateにすると共に、このフィールドへのアクセスをチェックし、GetterおよびSetterを経由していないものがあれば書き換えるリファクタリング機能です。

 では、この機能を試してみましょう。ソースエディタまたはパッケージエクスプローラでHelloStaffクラスのageフィールドを選択状態にします。

図27:HelloStaffクラスのageフィールドを選択状態にする
図27:HelloStaffクラスのageフィールドを選択状態にする

 メニューの[リファクタリング(T)]‐[フィールドのカプセル化(S)]を実行します。

図28:[リファクタリング]‐[フィールドのカプセル化]を実行
図28:[リファクタリング]‐[フィールドのカプセル化]を実行

 「フィールドのカプセル化」ウィンドウが表示されます。今回は変更しないので、このまま[プレビュー(W)]をクリックします。

 なお、「setterとgetterの使用」を「フィールド参照の保持」に変更することも可能です。また、今回の対象であるageフィールドにはすでにsetterとgetterがあるため選択不可になっていますが、存在しない場合はこの処理で自動作成することができるので、その挿入位置やアクセス修飾子を設定します。また、異なる名前のsetterやgetterを作成することもできます。

図29:[プレビュー]をクリック
図29:[プレビュー]をクリック

 すると、プレビュー画面に切り替わります。今回の場合も、スーパークラスとサブクラスのそれぞれに変更が加わるので、[実行される変更]で1つずつ確認しましょう。

 まず、サブクラスであるHelloEmpkyuhukin()メソッドの内容です。ageフィールドを直接参照している2カ所がgetter経由に書き換えられることが分かります。

図30:サブクラスの変更を確認
図30:サブクラスの変更を確認

 次に、[実行される変更]でスーパークラスであるHelloStaff.javaをクリックします。HelloStaffクラスのコンストラクターのageフィールドを直接設定している箇所がsetter経由に書き換えられること、ageフィールドのアクセス修飾子がprotectedからprivateに変わることが分かります。確認できたら[OK]をクリックしてカプセル化を実行します。

図31:スーパークラスの変更を確認して[OK]をクリック
図31:スーパークラスの変更を確認して[OK]をクリック

 エディタービューに戻るので、プレビューのとおりに2つのクラスが変更されていることを確認します。

 「フィールドのカプセル化」ウィンドウのところで説明したとおり、「フィールドのカプセル化」処理はsetterとgetterが存在しない場合に自動作成することができます。その意味では、前回説明した「GetterおよびSetterの生成機能」を含んでいるとも言えますが、細かい指定はできるので、先に「GetterおよびSetterの生成機能」で生成しておく方が良いでしょう。

次のページ
ローカル変数をフィールドに変換

修正履歴

この記事は参考になりましたか?

Eclipse 3.4からはじめるIDE入門連載記事一覧

もっと読む

この記事の著者

平野正喜@ランドッグ・オーグ(ヒラノマサキ)

フリーのIT系執筆者&講使(※)の「ランドッグのマウ」こと平野正喜(HIRANO Masaki)です。【略歴】 1962年札幌市生まれ。今で言うIT企業のシステムエンジニア、プロジェクトリーダー、システムコンサルタント、採用担当などを経て独立し、2002年11月にランドッグ・オーグ平野正喜事務所(h...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4088 2010/05/14 15:34

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー