パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

非オブジェクト指向な「Javaプログラミング能力認定試験」」記事へのコメント

  • 私感だけど、
    オブジェクト指向というのは、再利用するライブラリを作成する場合は威力を発揮するのはよく分かる。
    しかし、再利用しない場合は不要だし、多人数で開発する場合は他人とのインタフェース部分だけオブジェクト指向的にすれば十分だと思う。
    他人に見せない内部まで生真面目にオブジェクト指向で作ったら、むしろコードサイズが大きくなり。処理が分散することで、かえって可読性が落ちる。

    • by Anonymous Coward

      オブジェクト指向というのは、再利用するライブラリを作成する場合は威力を発揮するのはよく分かる。

      発揮しません。再利用性で重要なのは、汎用性のある仕様です。オブジェクト指向で作ろうが、使えないものは使いたくありません。

      他人に見せない内部まで生真面目にオブジェクト指向で作ったら、むしろコードサイズが大きくなり。処理が分散することで、かえって可読性が落ちる。

      オブジェクト指向というか、カプセル化はきっちりした方がいいですよ。一人で書く場合も重要。書いているうちに共通部分が次第に見出せてくるので、そういうものをクラスに分離。そうして

      • by Anonymous Coward
        > 特にいらないのがアクセサ。アクセサなんか作ったら、データと処理を分離して書くことが可能になってしまうため、カプセル化の意味がありません。
        カプセル化という意味では、クラスが持っているデータを直接触らせないというのは非常に重要です。
        例えばgetHoge()というアクセサを用意した場合、hogeがどうやって得られるかをオブジェクトのユーザに意識させずに済むわけです。インスタンス変数かもしれないし、定数かもしれないし、別モジュールへ問い合わせた結果かもしれないし、何らかの計算結果かもしれないけど、とりあえずgetHoge()すればhogeが得られる。
        さらに重要なのは、何らかの理由でクラスの仕様を変える必要が発生して、例えばいままでクラス変数として保持していたのを別のモジュールへの問い合わせに変更したとしても、getHoge()の仕様さえ変わらなければオブジェクトのユーザのコードは変える必要がないということですね。

        アクセサ介さずにデータまでpublicとして見せるのはオブジェクトのユーザが、オブジェクトの具体的なデータ構造まで意識したい場合くらいですね。
        • by Anonymous Coward

          アクセサ介さずにデータまでpublicとして見せるのはオブジェクトのユーザが、オブジェクトの具体的なデータ構造まで意識したい場合くらいですね。

          逆だよ。アクセサを使うときは、オブジェクトの具体的なデータ構造まで意識したい場合。

          例えば、符号無しの多倍長整数を扱うクラスを作るとしよう。メンバ変数は、何らかの形で表現されたunsigned intの配列と、必要ならその配列の長さを保持するint型の変数としよう。そのとき、アクセサは必要?

          表示のためには、文字列を返すメソッドを作ればいい。四則演算はそのためのメソッドを作ればいい。それ以外の演算に

          • by Anonymous Coward on 2011年01月12日 10時17分 (#1886628)

            逆だよ。アクセサを使うときは、オブジェクトの具体的なデータ構造まで意識したい場合。

            この段落以降や#1886499 [srad.jp]あたりをよむと、アクセサの公開ではオブジェクトの具体的なデータ構造は(メンバ変数の公開ほどは)意識させない。メンバ変数の公開はオブジェクトの具体的なデータ構造まで意識してでも効率的に動かしたい場合に使う、という使い分けしてるように読めるんだが。

            親コメント

犯人はmoriwaka -- Anonymous Coward

処理中...