Javaプログラミングの基礎:オブジェクト向けの理解
Davidが天コードキャンプで発表
オブジェクトベース
Javaはオブジェクト向け言語であり、Javaプログラムは一連のオブジェクト(Object)の集合であり、オブジェクトはメソッド呼び出しによって互いに協力して特定の機能を完成する.
オブジェクト向けは人間の思考に非常に合致するプログラミング方法であり、現実世界はオブジェクトとオブジェクトの相互作用によって構成されているため、現実世界をソフトウェア開発にマッピングしやすい.
実は私たちはJava言語を普通の言語と見なすことができて、英語を学ぶのは世界と交流するためで、Javaを学ぶのはコンピュータと交流します.私たちは自分の思考をJava言語で表現し、コンピュータに理解させる必要があります.
まず,オブジェクト向けのいくつかの重要な概念を理解する.
クラス#クラス#
クラスは、オブジェクトのステータスと動作を記述するテンプレートです.クラスを1つの携帯電話の設計図として想像することができ、この携帯電話の設計図に基づいて生産された1つの携帯電話がクラスの実例であり、これらの実例を対象としている.
私たちがブログアプリケーションを作るよりも、各ブログに類似の状態と動作がある場合は、
メンバー変数
1つのオブジェクトのステータスは、メンバー変数の値によって決まります.例えば、どのブログにも独自のタイトルと内容があります.したがって、
メンバー変数には、データ型があります.ここで、
Java言語の様々なデータ型については後述します.
メンバーメソッド
メソッドはクラスの動作を定義し、1つのクラスには多くの方法があり、メソッドでは論理を記述し、データを操作し、特定の動作を実行することができます.メソッドを関数と呼ぶこともあります.
例えば、
メソッドには、戻り値とパラメータがあります.たとえば、次の方法を定義できます.
上記の方法では、
コンストラクタ
オブジェクトはクラスのインスタンスです.オブジェクトが作成されると、クラスのコンストラクション関数(またはコンストラクションメソッド)を呼び出す必要があります.これは特殊なメンバーメソッドです.コンストラクション関数はクラスと同じ名前の関数であり、戻り値はありません.クラスには1つ以上のコンストラクション関数があります.
同じ名前の関数を持ち、その関数パラメータのタイプや個数が異なる現象を関数リロードと呼ぶ.
たとえば、
最初のコンストラクション関数は、パラメータのないコンストラクション関数です.2番目のコンストラクション関数には、
2番目のコンストラクション関数では、
コンストラクション関数を定義していない場合、Javaコンパイラは自動的にパラメータのないコンストラクション関数を生成します.任意の形式のコンストラクション関数を自分で定義した場合、コンパイラは生成しません.
オブジェクトの作成と使用
宣言オブジェクトのタイプを
ここで作成した
今では
パッケージとImport
開発の過程で、クラスの数はますます多くなり、パッケージ(Package)でクラスを組織することができます.パッケージの命名は一般的に1つの組織のドメイン名の逆書きで始まります.例えば、天コードキャンプのドメイン名は
この行のコードは、現在のクラスに対応するパッケージを表します.
同様に,領域論理に関連するコードが含まれていることを示す
このとき、
クラスを参照する場合は、クラスのフルネームを指定したり、ワイルドカードを使用したりできます.たとえば、
詳細については、天コードキャンプのWebサイトを参照してください.
オブジェクトベース
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
である.メンバー変数には、データ型があります.ここで、
title
とcontent
は、文字列で表される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;
このとき、
Post
とHelloWorld
は異なるパッケージに存在し、他のパッケージのクラスを使用する必要がある場合は、import
キーワードを使用してクラスを導入する必要があります.これにより、Javaコンパイラは使用するクラスを見つけることができます.クラスを参照する場合は、クラスのフルネームを指定したり、ワイルドカードを使用したりできます.たとえば、
import com.tianmaying.domain.*;
を使用しても同様の効果が得られます.*
は、com.tianmaying.domain
パッケージのすべてのクラスを導入することを示すためです.詳細については、天コードキャンプのWebサイトを参照してください.