Eclipse[3:クラスに関する基礎知識(クラスとインスタンスとパッケージ)]Java、Eclipse、JUnitに関連した技術情報のブログです。Java超入門スポンサードリンクJavaといえば、「オブジェクト指向」とのイメージがとっても強いですよね。間違いなく「オブジェクト指向」です。今回は「オブジェクト指向」の根幹をなす「クラス」に関する基礎知識の説明をさせていただきます。言っても、本エントリーは、クラスの概要、クラスとインスタンスの関係、パッケージの説明となります。次回に、修飾子と、及び今回扱えなかったクラスに関する基礎知識の説明をさせていただきます。本エントリーの内容は以下の通りです。クラスとオブジェクト(インスタンス)クラスの説明でよく例に出されますが、クラスはあくまでもひな形であり、ひな形を利用してオブジェクト(インスタンス)を作成する。これがクラスとオブジェクト(インスタンス以降ではインスタンスとします。例をあげると、たい焼きを焼く型(器具)ありますよね、あれが「たい焼き」クラスで、その型で焼きあがった「たい焼き」がインスタンスです。たい焼きを焼く型を作るひな形もあるだろう!、と言われると話がややこしくなるのでツッコミ厳禁でお願いします。以降では、たい焼きを例に、クラスの宣言方法を超簡単な例で説明をさせていただきます。シンプルなクラスの宣言方法の例は以下の様になります。{}が最もシンプルな宣言方法です。分かりやすさ重視で日本語にしています。クラスを宣言するにあたって、決定しなければならない事柄が3つあります。1つ目がクラスの中身で、2つ目がパッケージ、3つ目がクラスの修飾子です。クラスの中身とは、クラスが保持する定数、変数、メソッドです。クラスのパッケージと修飾子については、後ほど詳細な説明をさせていただきますので、とりあえず考えないでOKです。(修飾子については第四回となります。)定数、変数、メソッドについても「第四回」で詳しく説明させていただきますが、ザックリとした感じを見ていただくために、シンプルな定義例を先に説明させていただきます。定数は、定まった数ですので、箱の中身の値を変更できない箱となります。この箱を作成するためにconst修飾子を利用します。すいません、修飾子は無視してくださいと言いながら・・・const修飾子を付けると変更不可な変数、すなわち定数になります。(実質的にfinal修飾子でも同様のことが実現可能)同じ型で焼かれたたい焼きのサイズ(身長?、体長?)はほぼ同じですよね。このサイズを定数として定義してみます。たい焼きクラスに型:int、名前:SIZE、値:15を追加してみます。15;}定数の名前は全て大文字とし、複数単語で表現したい場合は間をアンダースコアで連結します。変数のちゃんとした説明を行わずにここまできていますが、今までの通り箱として認識ください。たい焼きの値段は、つぶあん、こしあん、クリーム等の中身により異なりますよね。いう事で、たい焼きクラスに型:int、名前:price、値:指定無しを追加してみます。あ!、そう言えばプリミティブ型のデフォルト値の説明してなかったですね、intは0がデフォルト値です。price;}メソッドついに出ました。メドッドとは何からの「動作」に相当する物です。メソッドには戻り値や引数が指定できますが、とりあえずなので、戻り値は、戻り値が無いことを意味するvoidを、引数は指定無しのメソッドを追加します。泳ぐしかないですよね。メソッド名:swimを追加しました。中身が空では寂しいのでコンソールに”泳いでいます。”と表示するようにしています。System.out.println("泳いでいます。{System.out.println("泳いでいます。");}}以上が、クラスのザックリとした宣言方法です。一般的なクラスはインスタンスを作成してから利用します。作成されたインスタンスを、同じたい焼き型の変数に代入します。swim();を記述します。以下のコードがクラスの作成とswimメソッドを呼び出す例となります。たい焼き();taiyaki.swim();このコードについても、クラスのパッケージと修飾子が実際は影響しますが、一番シンプルな例が上記コードとなります。先ほど説明した「たい焼きクラス」ですが、机上で考えただけの例でしたので、まだjavaプロジェクトも.javaファイルも未作成ですので、Eclipse上にプロジェクトと.javaファイルの作成を行います。Eclipseの環境作成につきましては「第一回」をご覧ください。プロジェクトとクラスの作成プロジェクトの作成TaiyakiSampleと言う名前のJavaプロジェクトを作成します。「パッケージ・エクスプローラー」で右クリック表示されたメニューの[新規]>[Javaプロジェクト]をクリックし表示された画面の「プロジェクト名」にTaiyakiSampleと入力し、「完了」ボタンをクリックしてください。作成されたプロジェクトを「パッケージ・エクスプローラー」で開いてsrcフォルダを選択後に右クリック表示されたメニューの[新規]▶︎[クラス]をクリックし表示された画面の「名前」にTaiyakiを入力し、「完了」ボタンをクリックしてください。ここからはクラス名は「たい焼き」ではなくTaiyakiにします。生成されたTaiyaki.javaは以下の通りです。classの前にpublicとの修飾子が記載されています。これは、全てのクラスから参照可能との修飾子です。詳細は、他の修飾子と合わせて「第四回」で説明させていただきます。{}packageとはパッケージの役割Javaのパッケージは、クラスを管理しやすくするために存在しています。同じ様な責務のクラスを同一のパッケージ指定にする。パッケージ名は階層構造を表す事ができ、機能のつながり等を表すことができる。パッケージの概念が存在することにより同じ名前のクラスを作成することができる。上記の項目3を逆読みすると、パッケージ名を明示しないとクラス名は解決できないことになります。BarTest();とのコードを書いた時に、どちらのパッケージのクラスをnewするのか冗長になってしまいます。セミコロン(;)を記載すればOKです。先ほども少し触れましたが、階層構造を持ったパッケージ名はドットで各文字列を連結して表記します。サブ機能名みたいな物をよく見かけます。利用する方法として以下の3つがあります。フルパッケージ名とは、そのクラスのパッケージ名+.+クラス名と記載することを意味します。利用するクラスと時クラスのじパッケージを同じにする。import文を書いて利用するクラスを指定する。コードの利用する部分、部分でクラスをフルパッケージ名で指定する。クラスAからクラスBを利用する場合で説明させていただきます。方法1は、方法と言うより、結果的にクラスAとクラスBのパッケージが同一になる時の事を指しています。;と記載する事で、クラスAの名前がコンパイラに認識されます。;と個別のクラス名ではなく、’*’一文字にすることも可能ですが、クラスAのパッケージ名と同じパッケージに属するクラスが全て見えるようになってしまい、参照している名前空間が大きくなり、クラス名の衝突等の問題が発生しやすくなりますので、利用には注意が必要です。・方法3の説明クラスAを利用する箇所全てで、フルパッケージ名を記載する方法です。インスタンスを生成する際は。クラスAのパッケージ名.クラスA();と記載します。これによってコンパイラが迷う事がなくなります。指定方法は分かったけど、じゃあ実際にはどうやって利用するの?、って感じですよね。実際の利用方法をこれから説明させていただきます。・TaiyakiCreatorクラスの作成まだ.javaファイルが1つしか存在していませんので、もう1つ追加します。しないとパッケージを利用する意味がありません。Taiyaki.javaと同様の手順でTaiyakiCreator.javaを新規追加してください。生成されたTaiyakiCreator.javaは以下の通りです。{}・TaiyakiCreatorクラスからTaiyakiクラスを利用まずは、mainメソッドをTaiyakiCreatorクラスに追加し、TaiyakiCreatorクラスを実行可能なクラスにします。VM」が実行してくれるんだぐらいでお考えください。{}}次に、Taiyakiクラスのインスタンス作成処理を追加します。Taiyaki();}}追加後に、TaiyakiCreatorをセーブします。Eclipseがセーブ時に自動的にコンパイルを実行しますが、コンパイルエラーは発生していません。先ほど「利用するクラスのパッケージ名の指定方法」で説明させていただいた3つの方法のどれにも当てはまらないように見えます。Javaにはデフォルトパッケージという考え方がありまして、パッケージの指定が無い状態がこれにあたります。現状のTaiyaki、TaiyakiCreator共にデフォルトパッケージですので、同じパッケージ名と認識されて問題なくコンパイルが通っています。Eclipseのパッケージ・エクスプローラーでもデフォルト・パッケージに格納されています。・Taiyakiクラスのパッケージ名を変更Taiyakiのパッケージ名をhoge.fooに変更してみます。やり方は何通りかあるのですが、私がオススメの方法でやってみます。hoge.foo;をTaiyakiの1行目に追加し、セーブします。するとコンパイルエラーが発生します。一致しません」となります。Taiyakiのパッケージ名(hoge.foo)がEclipse上で管理されているパッケージと不整合を起こしています。Eclipseには、エラーの修正機能が存在していますので、この修正機能を使って不整合を解消します。以下の画像の赤枠の部分をクリックします。すると以下のような小画面が2つ表示されます。左の小画面は、エラーの修正方法の候補です。どちらかの候補を選んで「リターン」キーを押すことで修正が行われます。‘hoge.foo’に移動」を選んだまま「リターン」キーを押してください。すると、パッケージ・エクスプローラーでもTaiyakiはhoge.fooパッケージの配下に格納されました。今度はTaiyakiCreatorからTaiyaki型が解決できないとのエラーが発生します。Eclipseのエラー修正機能を使います。import文をTaiyakiCreator.javaに追加してもらうつもりです。問題が発生している行の左側(以下の画像の赤枠部分)をクリックします。するといくつかの画面が表示されます。行いたいのは「Taiyakiをimportします」ですので、何も変更せずに「リターン」キーを押してください。この操作の結果TaiyakiCreator.javaは以下のようになり、コンパイルエラーは無くなりました。Taiyaki();}}Eclipseの修正候補に存在しないのですが、taiyakiをフルパッケージ指定で表現すると以下のようになります。hoge.foo.Taiyaki();}}「Java超入門[3:クラスに関する基礎知識(クラスとインスタンスとパッケージ)]」は以上です。スポンサードリンク関連記事JUnit入門その9[@RunWithアノテーションを利用したテストの作成]今回は@RunWithアノテーションを利用したテストの作成方法を説明させていただきます。今回のエントリーは、利用すると生産性が格段に向上するEclipseのショートカット集となります。指定できる場所の概説と関数型インタ記事を読むJUnit入門その8[Eclipse4.4のJUnitプラグインのテストケースのカバレッジをEclEmmaを利用して測定してみる]今回は「EclEmma」を使って、テストのカバレッジの測定を行うエントリーとなります。Suite)の環境作成と簡単なWebアプリの作成]Struts1ももう過去の遺物になり、SAStrutsもEOLとなりもう半年以上が経過しました。コメントをキャンセルメールアドレスが公開されることはありません。(4.7.1)を利用してJUnit5の公式ガイドの内容を実践してみる。JUnit5が本格的に利用できる環境が整ってきました。Eclipse[3:クラスに関する基礎知識(クラスとインスタンスとパッケージ)]Java、Eclipse、JUnitに関連した技術情報のブログです。