クラスの連携 つづき |
実行形式(exe)
プログラムの
場合の話ね。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
ここでちょっとプログラムの話。
大まかなクラスの設計が
できた訳だけど、
このクラスをプログラムで使う場合
大きな問題があるんだ。
それは、プロジェクトを開始してから
どうやって最初のオブジェクトを
作るかってことだ。
今回の場合で言うと、
メイン工場オブジェクトを
どうやって作るかってことね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えー?
なに?なに?
別に普通に作れば
いいんじゃないかな?
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
どゆこと?
完成じゃ
ないの? |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ほら、今までの説明では
ぽんちょなり外部オブジェクトが
既に存在すると仮定して、
クラスから自動車とかの
インスタンスを生成してただろ。
でも実際は、プロジェクトの
開始時には何もオブジェクトは
存在しない。
最初のオブジェクトを作って
くれるオブジェクトは存在
しないんだ。
その状態で、
誰がメイン工場クラスを使って
最初のメイン工場オブジェクトを
作るのか。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっ、
ぽんちょいないんだ!
うーん、そっかあ・・・
作る人がいなきゃ
始まらないね。
これじゃ
クラス使えないよー・・・ |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
コンピューターの
中の話だからね。
ムリー |
 |
|
 |
あたしが
作ったんじゃ
だめ? |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これがオブジェクト指向の
「考え方」の話なら
最初のオブジェクトを作るのは
プロジェクトの設計図を使う
「誰か」でいいかもしれない。
厳密にしないで
おまえでも、社長でも、
かっぱでも、誰でもね。
でも、コンピューターの場合は
そうはいかない。
プログラムでは明確に
最初のオブジェクトを
作る方法や決まりがないとね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
かっぱのぱー |
|
かっぱ? |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
うーん。
コンピューターの場合は
どうやったら
最初のオブジェクトを
作れるのかな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そこで、プログラムでは
プロジェクトを開始した時に
メソッドを自動実行させる仕組みが
あるんだ。
これを「メインメソッド」って言うよ。
これは言わば
プロジェクトの実行開始命令。
今回の場合で言うと、
メイン工場クラスに
メインメソッドを作って、
そこで最初のオブジェクトを
作らせるようにするんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
メインメソッド?
今まで使ってた
「メイン関数」のことだね!
そうだよ、メイン関数は
自動実行されるよね!
よかった!
自動的にメインメソッドを
実行して、オブジェクトを
作らせるんだね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
カードでは
メインメソッド
の方が文字
小さいけど。。。
|
 |
|
 |
あー!
準備処理の上は
メインメソッド
だったんだ! |
|
|
|
 |
|
卵が先か
鶏が先か
みたいに
なってるー。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
・・・あれ?
待って、待って!
何かおかしくない?
今問題なのは
最初のオブジェクトを
どうやって作るかって
ことでしょ?
メインメソッドを使うには
先にメイン工場が
インスタンス化してなきゃ
使えないよ。
これじゃ、メインメソッドは
使えないってことだよね。
何も問題解決してないよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
大丈夫。
メインメソッドは
staticにする決まり
なんだ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ここで
static
登場ー |
|
|
 |
|
|
 |
やったあ! |
|
|
|
|
 |
|
|
|
|
 |
 |
 |
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
メインメソッドはstaticだから
インスタンスが生成されて
いない状態でも
実行することができる。
そのメインメソッドの中で
最初のオブジェクトを
作るんだよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そうか!!
staticは設計図にくっついてる
からインスタンス化しない
でも使えるんだね!
これで何も無い状態からでも
メソッドを自動実行できるんだ。
staticって
こんな使い方もできるんだね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えーと、今までやった
コードでは・・・
やっぱり、
今までのメイン関数にも
static付いてる!
おまじないは
そう言うことだったんだね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
詳しいstaticの使い方は、
Javaのクラスの使い方を
学習する時にまたやる
からね。
今は確認だけね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
ほらほらー
mainの前に
static
付いてるねー |
 |
|
 |
あー
IDE起動
しちゃった。
いいけどー |
|
|
|
 |
|