- ベストアンサー
クラスについて~根本的なことなんですが
プログラムの経験はCOBOL程度で、 先月からJAVAの勉強を始めました。 プログラムを作成する上での機能や定義や、 サンプルプログラムの流れや処理内容を理解することは 出来てきたのですが、 実習問題で ・CheckDataクラスのCheckNumber()メソッドは、引数に渡された数値の 正負を判定し、正の場合trueを返します。 ・以下の実行結果になるようにプログラムを作成してください。 <実行例> -1 is a negative number. 2 is a positive number. -50 is a negative number. 100 is a positive number. <CheckData.java> public class CheckData { public boolean checkNumber(int data) { if (data >= 0) { return true; } else { return false; } } } <UsePackage.java> class UsePackage { public stativ void main(String args[]){ int num[] = {-1, 2, -50, 100}; } } <条件> ・確認する数値は、UsePackageクラスに定義されたnum配列の整数を使用する。 ・CheckDataクラスはhoge.pkglabsにパッケージする という問題が出たときに、 どちらのクラスに System.out.println(正負の表示); 等の処理を入れればいいのか、 どの処理は何処のクラスに入れればいいのか等が ちんぷんかんぷんです。 新たなクラスをファイルを作るべきなのかも分からなく、 実際上の問題で新たなクラスファイルを作ろうとしてました。 実際一から作る時が来るかと思いますが、その時を考えると 焦ってしまいます。 私がオブジェクト指向の考え方を分かったつもりで、 実は正しく理解出来ていないのかもしれません。 Javaを習い始めた時に同じ問題にぶつかった方、 乗り越えた方がいらっしゃいましたら、 是非その勉強法(?)、クラスやプログラムの組み方を教えていただきたいのです。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
う~ん、あまりオブジェクト指向の勉強に適した問題とも思えない。 そもそもクラスにする必然性の無いクラスだし、クラス名からして 手続き指向丸出しの名前ですしね。 ですので、 > どちらのクラスに System.out.println(正負の表示); > 等の処理を入れればいいのか、 については、どちらでもよいです。 多分出題者の意図としては、CheckData#checkNumber()の 返値を受け取ってUsePackageクラスの中で出力させようと しているんだと思いますけど、そうしなければならない 理由は無いと思います。 一般的には、一つのクラスは一つの「概念」に対応するのだと 考えると概ねうまくいきます。個々のインスタンスはその 概念に属する「物(オブジェクト)」というわけです。
その他の回答 (1)
- watapen
- ベストアンサー率10% (5/48)
自分もJavaを習い始めたばかりなのですが、 とりあえず意見として書いてみます。 CheckDataクラスができることはかなり汎用度が高いものだと思われます。しかも引数の値しか使っていないところをみると CheckDataの public boolean checkNumber(int data)は public static boolean checkNumber(int data) にしてもいいのだと思います。 特にCheckDataクラスのインスタンスを作らなくてはいけない必要を感じませんので。 System.out.println(正負の表示); は呼び出しが戻り値を標準出力に出したいのかどうかの判断をすればいいのでUsePackageクラスに実装しておけばいいのだと思います。もしかしたらそのうちファイルに出力なんてこともあるかもしれないのでCheckDataに実装してしまうとできませんから。 >Javaを習い始めた時に同じ問題にぶつかった方、 >乗り越えた方がいらっしゃいましたら、 >是非その勉強法(?)、クラスやプログラムの組み方を教>えていただきたいのです。 自分はまだ乗り越えてはいませんが、 とりあえずひたすら書くっていうのが一番いいかなぁなんて思います。たくさん書いているうちに自分のなかでこっちの作りのほうがいいなぁとかあの作りはこうすべきなのではなんて考えるチカラがついたような気がします。 ちょっとへんな意見になってしまうのですが、 プログラムというか仕様は動いてなんぼだと思います。 とりあえず動くものを作って、そのあとに正しく動くことを維持したまま修正を加えていったほうがいいのかなぁっって。 もちろんコーディング前に設計ができるのであれば、その方がいいと思いますけど、作ってみて初めてわかることもありますし。。。
お礼
有り難うございます。 この問題自体は 「パッケージとインポートが理解できているか」 を課題ポイントにしている物なのですが、 実用的なプログラムを使った方が分かりやすいのかも しれませんね。