2015/6/28

今日のアップデート:

	luvdart.com にて、
	Java Programming for Kids
	[スタート]


今日のまとめ: クラス/class

1.
class の基本形
	class aClass { }

2.
{ } の中に、
	属性(フィールドとも言います)
	メソッド
を、書きます。

3.
属性/フィールド … 	値 です、単純な数値から、ブーリアンタイプ(○or×)など.
			他に、オブジェクトタイプ も、属性になりえます。
			オブジェクトの場合、その元のクラスが、タイプ/型 です。

4.
メソッド
	JavaScriptが少し分かる方は、「関数」を、思い浮かべるでしょう。
	「関数」との違いは、基本的に、Javaの関数/メソッド は、
	classを基に作られたオブジェクトが、呼び出すことです。
	(staticメソッドであっても、classとの関連付けはあります)
	これによって、たとえ同じ名前のメソッドでも、区別することが出来ます。
	また、メソッドを書き換えたい時、どの部分を見ればいいかは、
	呼び出した、オブジェクトの、元になるclassに書かれているわけですから、
	そこを見ればいいわけです。
	Javaは、基本単位が、classですから、全体のclass関係 によって、
	プログラムが成り立っているわけです。
	これは、プログラムの仕組みを把握しやすいことに繋がるでしょう。
	さらに、もっと、全体の仕組みを把握するための考え方に、
		デザインパターン
	というものがあります。これは、プログラムが大きく複雑になったとき、
	大いに生かされる考え方です。もっとも私の場合、今のところ、
	そんなものは、馬の耳に念仏 ですが。ちょっと違うか?
	ちなみに、フィールド/属性 を、参照する時にも、classとの関連付け
	という考え方は生きています。

おまけ.
	先の話になりますが、今日出てきた、
		PlayStation4クラス
	は、
		class PlayStation4 extends VideoGame{
		
			// VideoGameクラスの、フィールド・メソッドは、すべて受けつがれる.

			
			// 子クラス独自のメソッド
			int hardDiskSize;
				// ハードディスクの使用状況.

			void shareOnFacebook(){
				// Facebookでシェアする.
			}

			void shareOnTwitter(){
				// Twitterでシェアする.
			}
		}
	
	このように、extendsキーワード 
	を使えば、すべてのビデオゲームが持つ共通の、フィールドと、メソッドを、
	受け継ぎつつ、簡単に、新しいclassを、作ることが出来ます。
	

オマケのオマケとして、extendsキーワードを、IntelliJ IDEA で、コーディング
して、試してみた結果を、コピペしておきます。
extendsキーワードや、基本的なJavaの理解がないと、難しすぎますが、
暇でしたら、考えてみてください。
私も、思い出しつつ書いたので、フィールドの呼び出し方など、今ひとつ
自信のない部分があったりしたのですが、さすがの、IDEA のおかげで、
短時間でコーディングできました。もっとも、完全に理解しておかないと、
いけないことですが。

// ExtendsClass.java ///////////////////////////////////////////////////////////////

/**
 * Created by Alarky on 2015/06/28.
 */
public class ExtendsClass {
    public static void main(String[] args){
        PlayStation4 p4Obj = new PlayStation4();
        System.out.println(p4Obj.playerName);
    }
}

class VideoGame {

    String playerName = "alarky";
    int score;

    void start () {
        // ゲームを始めるためのコードを何行か書きます.
    }

    void stop () {
        // ゲームを終えるためのコードを何行か書きます.
    }

    void saveScore(String playerName, int score) {
        // スコアをセーブするためのコードを何行か書きます.
    }
}

class PlayStation4 extends VideoGame{

    // VideoGameクラスの、フィールド・メソッドは、すべて受けつがれる.
    // String playerName = "alarky"; も、存在することになる.

    // 子クラス独自のメソッド
    int hardDiskSize;
    // ハードディスクの使用状況.

    void shareOnFacebook(){
        // Facebookでシェアする.
    }

    void shareOnTwitter(){
        // Twitterでシェアする.
    }
}

/*
実行結果:
alarky
*/

//////////////////////////////////////////////////////////////////////////////

やはり、Javaの場合ルールがとても細かいので、
長い目で見たら、文法はほぼ完璧にしておいた方がいいと、私は思います。

もし、PHPを大分覚えたら、OJCP のためのページを作ったほうが、いいのか、
アンケートをとりたいです。まだ、詳細は、決めていませんが、1年後ぐらいには、
実行できるといいなとは、思っています。
(あくまで、今の考えですの、決めているわけではありません。)

では、来週のアップロードまで。