Javaオブジェクト指向プログラミング講座

クラススコープについて

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
クラススコープについて解説します。
講師:
08:37

字幕

このレッスンではクラススコープについて解説します。クラススコープを説明する前にちょっとこんな例を考えてみましょう。顧客というクラスを作りました。では顧客数というクラスはどこに持ったら良いでしょう。顧客が何人いる。これを顧客というクラスの中に入れることはできるでしょうか。それともそれは別のクラスが持つべきでしょうか。例えば「顧客」というクラスに顧客番号、顧客名、ここに「顧客数」と入れることができるでしょうか。どうなるでしょうか。もしもここに顧客数を入れたとしたら顧客のインスタンスですね、顧客番号 1001 の宮本太郎さんここに顧客数を 100。1002 番の佐々木花子さんここにも顧客数を 100。顧客番号 1100 番ここにも顧客数。全部が顧客数を持っていることになります。そうすると顧客がもしも1人増えたらこれ全部の顧客数の値を掛け合わせなければならないですね、何かあまり効率良くないですね。もっと何か良い方法はないでしょうか。そこで「クラススコープ」という考え方があります。クラスが値を持つ。クラススコープ属性。この「顧客数」を普通は属性というのはそのオブジェクト、インスタンスの値を持つわけですね。 しかしクラスが値を持つこともできるのです。その場合はここに顧客数、下線を引きます。下線を引くとクラススコープ属性になります。つまりこの顧客数はクラスが持つ。番号とか名前は、インスタンスつまりオブジェクトが値を持つ。これはクラスが持つ。そんなことができるんです。クラスが保持する属性を「クラススコープ属性」と呼びます。クラスが実行する操作を「クラススコープ操作」と呼びます。従来の普通の属性とか操作は「インスタンススコープ属性」「インスタンススコープ操作」と呼びます。わざわざこういうことは言いません、こちらは普通です。普通の操作です。わざわざ「インスタンススコープ」とは言いません。次に Java でどうなるか。UML では顧客数に下線を付けたらこれがクラススコープ属性、クラスが値を持ちます。Java では static というキーワードを付けます。例えば顧客番号まあ顧客数ですね、それを仮に kokyakuNumber とすればその前に static と付けたらこれはクラスが保持する値になります。顧客のインスタンスはこの値を持ちません。クラスが持っています。代表として持っているわけです。ではここの値はどんなふうに使うのでしょうか。 これは static フィールドですね。今度 static メソッドというものがあります。UML では「顧客数取得」に下線が付いています。下線が付いているとクラススコープ操作です。これはこのクラスが持っている顧客数を取得するための操作です。顧客というオブジェクト、インスタンスには聞きません。聞いても分かりません私知りませんと答えます。クラスが持っています。Java の場合はgetKokyakuNumber というメソッドですね。これは return KokyakuNumberこの値を返します。これは static というキーワードを付けます。この static を付けるとクラスに対してこういうメソッドを発行します。static メソッドといいます。ではどうやって呼び出すでしょうか。まあクラス Kokyaku ですね。static フィールドstatic メソッドだとします。そうするとこの呼び出し方ですね。Kokyaku というクラスに対して.getKokyakuNumber今まではここにオブジェクトを指定しました。オブジェクトではなくてクラス名を書きます。クラス名.getKokyakuNumberそうするとこの static のkokyakuNumber を get することができます。 static メソッドの呼び出し方法はクラス名.メソッド名です。プログラムを動かしてみましょう。NetBeans で「新規プロジェクト」。ここはデフォルトのままで「次>」へ、そして scope とします。場所は java/ch04このままで OK です。「メイン・クラス」を Main とします。それでまず顧客を作ります。顧客番号、顧客名を追加します。次に今回は顧客番号ですね、今まではコンストラクタで 1001、1002 と入れていましたが今回は自動発番できるように最後の顧客番号を覚えておくことにします。新しい顧客はそれプラス1というふうになっていきます。そこでlastId というものをstatic で持ちます。最後の顧客番号、一番最初の状態は 1000 ですね。つまり最初に誰か顧客を作ったら1001 にさせていくという形にします。これを static にします。次に顧客番号ですがこのコンストラクタにちょっと仕掛けをしておきます。コンストラクタでは顧客名だけを入れるようにします。顧客番号は lastId の前に ++ を付けます。つまり最後の顧客 lastId 1000 に1足したもの、それをこの新しい顧客の顧客番号にします。 print メッセージは同じです。顧客番号と顧客名を表示します。この static の lastId を取得するメソッドgetLastId これゲッターですけれどもstatic です。つまりクラスの static の lastId を取得するゲッターを作っておきます。こうしておいて次に Main にいきます。顧客を生成します。ここで顧客番号要らないんです、名前だけで良いです。自動的に顧客番号が発番されます。2人目を作ります。そうすると宮本太郎さんは 1001番、佐々木花子さんは 1002番になります。このコンストラクタが呼ばれた時にここで lastId...++lastId が id になります。これで print してみます。k0.print k1.printこれを実行かけてみます。すると1001 宮本太郎1002 佐々木花子と表示されます。次に現在の LastId を表示させてみましょう。kokyaku.getLastIdこれは static メソッドですので前はクラス名を付けます。これを実行してみましょう。すると 1002 になります。だから次にもう一人顧客を追加すると今度は 1002+1 で 1003 となるわけですね。 このレッスンではクラススコープと Java の static について解説しました。

Javaオブジェクト指向プログラミング講座

このコースではオブジェクト指向プログラミングの3大特徴である「カプセル化」「継承」「多態性」を、UMLモデルとJavaプログラムを対比しながら解説します。「カプセル化」ではコンストラクタや可視性、「継承」ではUML汎化関係とJavaの関係、「多態性」では継承およびインタフェースによるプログラミング方法などを説明します。

3時間23分 (36 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2016年09月27日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。