Javaプログラミングの基礎:オブジェクト向けの理解


Davidが天コードキャンプで発表
オブジェクトベース
Javaはオブジェクト向け言語であり、Javaプログラムは一連のオブジェクト(Object)の集合であり、オブジェクトはメソッド呼び出しによって互いに協力して特定の機能を完成する.
オブジェクト向けは人間の思考に非常に合致するプログラミング方法であり、現実世界はオブジェクトとオブジェクトの相互作用によって構成されているため、現実世界をソフトウェア開発にマッピングしやすい.
実は私たちはJava言語を普通の言語と見なすことができて、英語を学ぶのは世界と交流するためで、Javaを学ぶのはコンピュータと交流します.私たちは自分の思考をJava言語で表現し、コンピュータに理解させる必要があります.
まず,オブジェクト向けのいくつかの重要な概念を理解する.
クラス#クラス#
クラスは、オブジェクトのステータスと動作を記述するテンプレートです.クラスを1つの携帯電話の設計図として想像することができ、この携帯電話の設計図に基づいて生産された1つの携帯電話がクラスの実例であり、これらの実例を対象としている.
私たちがブログアプリケーションを作るよりも、各ブログに類似の状態と動作がある場合は、Postクラスをこれらのブログのテンプレートとして定義することができます.
public class Post {
    private String title;
    private String content;

    public void print() {
        System.out.println(this.title);
        System.out.println(this.content);
    }
}
publicは、外部がこのクラスにアクセスできることを示す修飾子であり、HelloWorldプログラムで出会ったことがあります.Postの状態および動作は、内部で定義されたメンバー変数およびメンバーメソッドに反映される.
メンバー変数
1つのオブジェクトのステータスは、メンバー変数の値によって決まります.例えば、どのブログにも独自のタイトルと内容があります.したがって、Postクラスで2つのメンバー変数を定義し、通常は属性とも呼ばれます.
    private String title;
    private String content;
privateも修飾子であり、この2つの属性が外部から直接アクセスできないことを示しています.オブジェクト向けプログラミングでは一般的に情報非表示が必要であるため、クラスのメンバー変数の多くはprivateである.
メンバー変数には、データ型があります.ここで、titlecontentは、文字列で表されるString型の属性です.
Java言語の様々なデータ型については後述します.
メンバーメソッド
メソッドはクラスの動作を定義し、1つのクラスには多くの方法があり、メソッドでは論理を記述し、データを操作し、特定の動作を実行することができます.メソッドを関数と呼ぶこともあります.
例えば、Postクラスは、ブログの内容を印刷する方法を提供します.
public void print() {
    System.out.println(this.title);
    System.out.println(this.content);
}
printメソッドは、戻り値とパラメータがないメソッドです.戻り値がない場合は、voidで表します.
メソッドには、戻り値とパラメータがあります.たとえば、次の方法を定義できます.
public int printWithAuthorName(String authorName) {

    System.out.println(authorName);
    System.out.println(this.title);
    System.out.println(this.content);

    return this.content.length();
}

上記の方法では、printWithAuthorNameは、ブログコンテンツの長さを表す整数を返し、StringタイプのパラメータauthorNameが入力され、入力者名とともに印刷できることを示す.
コンストラクタ
オブジェクトはクラスのインスタンスです.オブジェクトが作成されると、クラスのコンストラクション関数(またはコンストラクションメソッド)を呼び出す必要があります.これは特殊なメンバーメソッドです.コンストラクション関数はクラスと同じ名前の関数であり、戻り値はありません.クラスには1つ以上のコンストラクション関数があります.
同じ名前の関数を持ち、その関数パラメータのタイプや個数が異なる現象を関数リロードと呼ぶ.
たとえば、Postオブジェクトを作成できるように、2つのコンストラクション関数を追加できます.

public class Post {
    private String title;
    private String content;

    //        ,
    public Post() {

    }

    //        ,       
    public Post(String title, String content) {
        this.title = title;
        this.content = content;
    }

    public void print() {
        System.out.println(this.title);
        System.out.println(this.content);
    }
}

最初のコンストラクション関数は、パラメータのないコンストラクション関数です.2番目のコンストラクション関数には、Postオブジェクトを作成するときにタイトルとコンテンツを初期化する必要があることを示す2つのパラメータが含まれています.
2番目のコンストラクション関数では、this.title = title行のコードのthisが現在のオブジェクトを表します.クラスが独自のプロパティおよびメソッドにアクセスする必要がある場合、一般にthisが使用されます.この行のコードは、titleというパラメータの値を現在のオブジェクトのtitleプロパティに割り当てることを意味します.
コンストラクション関数を定義していない場合、Javaコンパイラは自動的にパラメータのないコンストラクション関数を生成します.任意の形式のコンストラクション関数を自分で定義した場合、コンパイラは生成しません.
オブジェクトの作成と使用HelloWorldクラスに戻り、mainメソッドでPostオブジェクトを作成および使用できます.
public class HelloWorld {  

    public static void main(String[] args) {

        Post Post = new Post("      ", "         "); //       
        Post.print(); //       

    }
}

宣言オブジェクトのタイプをPostとし、コードにPostと命名する必要があります.次に、newキーワードを使用してPostのコンストラクション関数の1つを呼び出す必要があります.ここでは、ブログのタイトルと内容を入力します.
ここで作成したPost変数は、関数内のローカル変数であり、メンバー変数とは異なり、オブジェクトに属しず、一時変数であり、メソッドの実行が終了すると変数は機能しません.1つのメソッドで宣言された変数は、ローカル変数に属します.
今ではPostオブジェクトがあります.共通の方法にアクセスできます.Post.print()という行のコードはブログを印刷することができます.プログラムを実行すると、次の出力が表示されます.
      
         

パッケージとImport
開発の過程で、クラスの数はますます多くなり、パッケージ(Package)でクラスを組織することができます.パッケージの命名は一般的に1つの組織のドメイン名の逆書きで始まります.例えば、天コードキャンプのドメイン名はtianmaying.comで、天コードキャンプが開発したコードは、パッケージ名は一般的にcom.tianmayingで始まります.com.tianmayingのパッケージ名を作成します.srcフォルダを右クリックし、「New」->「Package」をクリックし、com.tianmayingと入力します.作成に成功しました.HelloWorld.javaをパッケージにドラッグします.このファイルを開くと、Eclipseにコードが1行追加されました.
package com.tianmaying

この行のコードは、現在のクラスに対応するパッケージを表します.
同様に,領域論理に関連するコードが含まれていることを示すcom.tianmaying.domainパケットを作成した.次いで、Post.javaをバッグ内にドラッグする.これらの操作を行った後、HelloWorld.javaを再び開き、Eclipseにコードが1行追加されたことを発見しました.
package com.tianmaying
import com.tianmaying.domain.Post;

このとき、PostHelloWorldは異なるパッケージに存在し、他のパッケージのクラスを使用する必要がある場合は、importキーワードを使用してクラスを導入する必要があります.これにより、Javaコンパイラは使用するクラスを見つけることができます.
クラスを参照する場合は、クラスのフルネームを指定したり、ワイルドカードを使用したりできます.たとえば、import com.tianmaying.domain.*;を使用しても同様の効果が得られます.*は、com.tianmaying.domainパッケージのすべてのクラスを導入することを示すためです.
詳細については、天コードキャンプのWebサイトを参照してください.