Java静的メソッド、クラス変数、インスタンス変数の説明

今日同僚からJavaの静的メソッド、クラス変数、インスタンス変数の説明をするときは煉瓦と煉瓦の型枠の話をするといいと言われインスピレーションを得た。
私の今まで考えついた説明の中で一番だ。

class_and_instance.png

staticメソッド「比重計算」を行使するためには、赤鬼瓦も緑鬼瓦も世界に一つしかない魔法の指輪の力を借りなければならないのだよ。

	public enum 瓦工場 {
	    //彼の瓦は気泡が少なくまた品質が整っておりひずみも小さい。しかし割れやすい欠点がある。
	    陶器瓦職人_乃木野馬鹿野郎 {
		@Override
		瓦 瓦づくり() {
		    return new 瓦 ( 0..5 /*気泡度*/,  90..92 /*剛性値*/, 2..10 /*ひずみ*/,  0 /*弾力度*/ );
		    );
		}
	    },
	    //彼の作る瓦は気泡が多く、また歪みも一般に大きく使い物にならない。しかし比重は小さくなる。
	    セメント瓦職人_野郎二葉亭四迷 {
		@Override
		瓦 瓦づくり() {
		     return new 瓦 ( 60..70 /*気泡度*/,  4..60 /*剛性値*/, 70..80 /*ひずみ*/,  10..12 /*弾力度*/ );
		}
	    },
	    //クソ
	    鬼瓦職人_磯野カツオ {
		@Override
		瓦 瓦づくり() {
		    return new 瓦 ( 1..100 /*気泡度*/,  70..100 /*剛性値*/, 6..20 /*ひずみ*/,  20..22 /*弾力度*/ );
		}
	    },
	    //ひよこサブレ職人の大達人のうちひとりであり、瓦せんべい制作を将来的には会得する可能性が高い。
	    ひよこサブレ職人_俺氏 {
		@Override
		瓦 瓦づくり() {
		    throw new UnsupportedOperationException("Not supported yet."); 
		}
	    };

	    /**
	     * 無名の瓦を返す.
	     */
	    abstract  瓦 瓦づくり();
	}

	class ニュンベルグの瓦 extends 瓦 {
	    public static final String 日本工業規格規格番号 = "JIS T403";
	    
	    private final double 気泡度;
	    private final double 剛性値;
	    private final double ひずみ;
	    private final double 弾力度;

	    public 瓦(double 気泡度, double 剛性値, double ひずみ, double 弾力度) {
		this.気泡度 = 気泡度;
		this.剛性値 = 剛性値;
		this.ひずみ = ひずみ;
		this.弾力度 = 弾力度;
	    }
	    
	    /**
	     * この瓦の持つパラメータより、信頼耐久性指数を内部計算し返す.
	     * @return 信頼耐久性指数
	     */
	    public double 信頼耐久性指数計算 () {
		return ( this.気泡度 * 4 +  this.ひずみ * 0.2 ) / Math.abs( this.剛性値 - this.弾力度 );
	    }
	    
	    /**
	     * 我々瓦には比重を評価する能力がある。あなたにはその価値があるから。
	     * ゼウスより瓦に与えられたニュンベルグの指輪の力により比重を返す.
	     * @param 体積 unit: cm3
	     * @param 重量 unit: g
	     * @return 比重 (水=1)
	     */
	    public static double 比重計算 (final double 体積,  final double 重量) {
		return 重量/体積;
	    }
	}

1.png
2.png

	
	public enum 瓦工場 {
	    //彼の瓦は気泡が少なくまた品質が整っておりひずみも小さい。しかし割れやすい欠点がある。
	    陶器瓦職人_乃木野馬鹿野郎 {
		@Override
		瓦 瓦づくり() {
		    return new 瓦 ( 0..5 /*気泡度*/,  90..92 /*剛性値*/, 2..10 /*ひずみ*/,  0 /*弾力度*/ );
		    );
		}
	    },
	    //彼の作る瓦は気泡が多く、また歪みも一般に大きく使い物にならない。しかし比重は小さくなる。
	    セメント瓦職人_野郎二葉亭四迷 {
		@Override
		瓦 瓦づくり() {
		     return new 瓦 ( 60..70 /*気泡度*/,  4..60 /*剛性値*/, 70..80 /*ひずみ*/,  10..12 /*弾力度*/ );
		}
	    },
	    //クソ
	    鬼瓦職人_磯野カツオ {
		@Override
		瓦 瓦づくり() {
		    return new 瓦 ( 1..100 /*気泡度*/,  70..100 /*剛性値*/, 6..20 /*ひずみ*/,  20..22 /*弾力度*/ );
		}
	    },
	    //ひよこサブレ職人の大達人のうちひとりであり、瓦せんべい制作を将来的には会得する可能性が高い。
	    ひよこサブレ職人_俺氏 {
		@Override
		瓦 瓦づくり() {
		    throw new UnsupportedOperationException("Not supported yet."); 
		}
	    };

	    /**
	     * 無名の瓦を返す.
	     */
	    abstract  瓦 瓦づくり();
	}

	class ニュンベルグの瓦 extends 瓦 {
	    public static final String 日本工業規格規格番号 = "JIS T403";

	    public ニュンベルグの瓦 (double 気泡度, double 剛性値, double ひずみ, double 弾力度) {
		super(気泡度, 剛性値, ひずみ, 弾力度);
	    }
	    
	    /**
	     * 我々特別な瓦には比重を評価する能力がある。あなたにはその価値があるから。
	     * ゼウスより瓦に与えられたニュンベルグの指輪の力により比重を返す.
	     * @param 体積 unit: cm3
	     * @param 重量 unit: g
	     * @return 比重 (水=1)
	     */
	    public static double 比重計算 (final double 体積,  final double 重量) {
		return 重量/体積;
	    }
	}

	class 瓦 {
	    private final double 気泡度;
	    private final double 剛性値;
	    private final double ひずみ;
	    private final double 弾力度;

	    public 瓦 (double 気泡度, double 剛性値, double ひずみ, double 弾力度) {
		this.気泡度 = 気泡度;
		this.剛性値 = 剛性値;
		this.ひずみ = ひずみ;
		this.弾力度 = 弾力度;
	    }
	    
	    /**
	     * この瓦の持つパラメータより、信頼耐久性指数を内部計算し返す.
	     * @return 信頼耐久性指数
	     */
	    public double 信頼耐久性指数計算 () {
		return ( this.気泡度 * 4 +  this.ひずみ * 0.2 ) / Math.abs( this.剛性値 - this.弾力度 );
	    }
	}

	class Main {
	    private void 瓦をテスト作成して勇者なら魔王様に報告() {
		瓦 名も無き瓦 = 瓦工場.ひよこサブレ職人_俺氏.瓦づくり();
		if (名も無き瓦 instanceOf ニュンベルグの瓦) 魔王様に報告;
		else この瓦は比重計算は使えない。雑魚だ。
	    }
	    public static void main(String[] args) {
		new Main().瓦をテスト作成して勇者なら魔王様に報告();
	    }
	}
    last modified: 16 July 2016 [ View wiki source Close ]
     
SEARCH DIFFERENCE ATTACHMENT RECENT POST