[課題3]一流のJavaソースをみて色々感じた事があるでしょう。
このように一流のjavaソースファイルを何も参考にしなくても、自分なりの仮説が沢山箇条書きできたでしょう。
正しい単語とその意味を理解していなくても、法則性が何となくご理解頂けたと思います。
本講義では、Javaの基本スタイル、javacコマンド、オブジェクト指向の正しい知識、javaソースの記述方法など基本的な事を説明します。
最初に日本のJavaにおける全サイト及び書籍では、Hello Worldを最初に試すと思います。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
このサンプルは、関数型の言語のサンプルにもみえます。私達が学ぶのはオブジェクト指向言語です。
Javaプログラムの一流を目指したスタイル又は、現場で使えるスタイルを学ぶ事が重要です。
日本のJava教育が余り優れていないのは、このpublic static void main(String[] args) {
内に
文法を教えるときに、全てのロジックをこのmainメソッドに記述します。
それは、学習者が簡単にコンパイルして間違いが起きにくいからです。
でもこのmainメソッドで全てを記述する方法で学んだ人は、javaはmainメソッドに処理を記述するものだと誤解します。
Webシステムで全ソースファイルが1000個あるとしましょう。
mainメソッドがでてくるjavaソースファイルは、あって1~10個程度です。
また最初の段階で、関数型のサンプルを大量に作った後でオブジェクト指向言語の正しいスタイルに脳を切替るのが大変です。
少し行数や記述量が多くても、最初から正しいスタイルを記述した方が理解も速く現場で使えるスタイルが身に付きます。
一流目指して100や200のコンパイルエラーにめげずにオブジェクト指向言語Javaを是非楽しみましょう。
以下のソースを基本スタイルとして下さい。もしくは、[課題3]一流のJavaソースで 貴方が取り纏めた内容を基本スタイルとして下さい。
初めてのJava
/**
* Copyright 2017 hoge.
* 本ソースファイルの著作権は株式会社hogeに所属します。
* 株式会社hogeの許可なくして、本ソースファイルの
* 配布、改修、コピー、利用を禁止します。
* 会社名 :株式会社hoge
* 組織名 :システム開発部
* プロジェクトコード :education
* バージョン :1.0
* 最終更新日時 :2017/02/10 17:21
*/
//package宣言部
package jp.co.yourcompany.education.samples;
//import 宣言部
/**
* このクラスは、Javaの全体の構成を分かり易くした
* 標準出力にメッセージを出力するクラスです。
*
* @author Raita.Kuwabara
*
*/
public class HowToWriteJava {
//定数宣言部
/**
* デフォルト値として設定されるメッセージ
*/
public static final String MESSAGE_DEFAULT_JA = "こんにちは 日本へ";
/**
* エラーメッセージ
*/
public static final String MESSAGE_ERROR_JA = "メッセージが指定されていません。";
/**
* 主処理の終了メッセージ
*/
public static final String MESSAGE_END_JA = "-------- END outputMessage method------------";
//static実行部 今は気にしない
//メンバーフィールド宣言部
private String message;
/**
* デフォルトコンストラクタ
*/
public HowToWriteJava() {
message = MESSAGE_DEFAULT_JA;
}
/**
* デフォルトコンストラクタ
* 指定したメッセージをmessageフィールドに初期設定する。
*
* @param message 出力するメッセージ
*/
public HowToWriteJava( String message ) {
//クラスのメンバフィールドに値を設定しています。
this.message = message;
}
/**
* 主処理
* messageプロパティに設定されたメッセージを出力します。
*/
public void outputMessage() {
if( isNotNullMessage() ){
outputCurrentMessage();
} else {
outputErrorMessage();
}
outputEndMessage();
}
/**
* メッセージを初期化する。
*/
private void init() {
message = null;
}
/**
* メッセージフィールドのメッセージがnullでないことをチェックする。
* @return true:値あり false:値なし
*/
private boolean isNotNullMessage() {
return ( message != null );
}
/**
* messageフィールドに設定された文字列を出力する。
*/
private void outputCurrentMessage() {
System.out.println( message );
}
/**
* エラーメッセージを出力する。
*/
private void outputErrorMessage(){
System.out.println( MESSAGE_ERROR_JA );
}
/**
* 主処理終了時のメッセージを出力する。
* @return true:値あり false:値なし
*/
private void outputEndMessage() {
System.out.println( MESSAGE_END_JA );
}
/**
* 決まったユーティリティのような定型の関数のようなメソッドだけをstaticにする。
* クラスメソッド(静的メソッド)の例
* クラスの定型メッセージを出力します。
*/
public static void outputClassMessage() {
System.out.println( HowToWriteJava.MESSAGE_DEFAULT_JA );
}
/**
* javaコマンドで起動されるmainメソッド
* @param args javaコマンドで引き渡しされる引数
*/
public static void main( String[] args ) {
//sample1-1 デフォルトのメッセージ
HowToWriteJava howToWriteJava = new HowToWriteJava();
howToWriteJava.outputMessage();
//sample1-2 outputErrorMessageが実行されるケース
howToWriteJava.init();
howToWriteJava.outputMessage();
//sample2 引数を渡すケース
HowToWriteJava howToWriteJava2 = new HowToWriteJava("インスタンス2のHello");
howToWriteJava2.outputMessage();
//sample3
HowToWriteJava.outputClassMessage();
}
}
実行結果
c:\projects\education>sample1.bat
こんにちは 日本へ
-------- END outputMessage method------------
メッセージが指定されていません。
-------- END outputMessage method------------
インスタンス2のHello
-------- END outputMessage method------------
こんにちは 日本へ
c:\projects\education>