2022.09.02

IT用語

オブジェクト指向(object-oriented)

オブジェクト指向とは、プログラムを作るための考え方の一つで、「物(オブジェクト)」を組み立てるようなイメージでプログラミングするものです。

役割を持った「物」を作成し、「物」と「物」の間でメッセージを送り合うことでデータを操作し、処理を進めていきます。

プログラミング言語JavaC++、C#は、オブジェクト指向型の開発方式を仕様として持っています。これらの言語では、「物」はクラス、メッセージはメソッド、データはプロパティメンバ変数フィールド変数)として定義できます。

それでは、Javaソースコードを使って解説していきます。

Javaソースコード

オブジェクト指向を説明するためのJavaソースコードです。

2つの整数値を与えて、その値の和(足し算)、差(引き算)、積(掛け算)、割り算)を計算するオブジェクトを作成しています。

Object_Oriented1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
// 2つの値の計算が行える「オブジェクト」
class Calculator2 {
	// 2つの値を格納する「プロパティ」
	private int value1 = 0;
	private int value2 = 0;

	// 2つの値を設定する「メソッド」
	public void set( int a, int b )
	{
		value1 = a;
		value2 = b;
	}

	// 1つ目の値を取得する「メソッド」
	public int value1()
	{
		return value1;
	}


	// 2つ目の値を取得する「メソッド」
	public int value2()
	{
		return value2;
	}


	// 2つの値の和を戻す「メソッド」
	public int add()
	{
		return value1 + value2;
	}


	// 2つの値の差を戻す「メソッド」
	public int sub()
	{
		return value1 - value2;
	}


	// 2つの値の積を戻す「メソッド」
	public int mul()
	{
		return value1 * value2;
	}


	// 2つの値の商を戻す「メソッド」
	public int div()
	{
		return value1 / value2;
	}
}


// メイン
public class Object_Oriented1 {
	public static void main( String[] args ) {
		// インスタンス化(実体の作成)
		Calculator2 obj = new Calculator2();

		// 2つの値を設定
		obj.set( 12, 4 );

		// 計算結果をコンソール出力
		System.out.println( "値1: " + obj.value1() );
		System.out.println( "値2: " + obj.value2() );
		System.out.println();	// 改行
		System.out.println( "和 : " + obj.add() );
		System.out.println( "差 : " + obj.sub() );
		System.out.println( "積 : " + obj.mul() );
		System.out.println( "商 : " + obj.div() );
	}
}

実行結果

2つ値「12」と「4」を使った計算

C:\talavax\javasample>java Object_Oriented1

出力結果

値1: 12
値2: 4

和 : 16
差 : 8
積 : 48
商 : 3

Javaソースコードの解説

ここから2つの整数値を使って計算を行う「物」を定義していきます。

001
002
// 2つの値の計算が行える「オブジェクト」
class Calculator2 {

「物(オブジェクト)」をクラスで定義しています。クラス名をCalculator2としています。

003
004
005
	// 2つの値を格納する「プロパティ」
	private int value1 = 0;
	private int value2 = 0;

計算に使用する2つの値を宣言しています。int型整数value1value2で、これがプロパティです。

intの前の「private」はアクセス演算子の1つで、クラス内部からだけのアクセスを可能にしています。よって、このソースの場合、プロパティの変更は、以下で説明するメソッドを呼び出すことでして参照と変更が出来ないようになっています。

value1value2の初期値として0を代入しています。

007
008
009
010
011
012
	// 2つの値を設定する「メソッド」
	public void set( int a, int b )
	{
		value1 = a;
		value2 = b;
	}

計算に使用する2つの値を設定するメソッドです。引数abを、それぞれvalue1value2に代入しています。

intの前の「public」はアクセス演算子の1つで、クラス内部と外部の両方でアクセスを可能にしています。このメソッドを呼び出すことで、「private」のvalue1value2の値を変更することができます。

以降のメソッドアクセス演算子も「public」なので、クラス外部から呼び出すことができます。

014
015
016
017
018
	// 1つ目の値を取得する「メソッド」
	public int value1()
	{
		return value1;
	}

プロパティvalue1return文で戻すメソッドです。

021
022
023
024
025
	// 2つ目の値を取得する「メソッド」
	public int value2()
	{
		return value2;
	}

プロパティvalue2return文で戻すメソッドです。

028
029
030
031
032
	// 2つの値の和を戻す「メソッド」
	public int add()
	{
		return value1 + value2;
	}

プロパティvalue1value2を足した値をreturn文で戻すメソッドです。

035
036
037
038
039
	// 2つの値の差を戻す「メソッド」
	public int sub()
	{
		return value1 - value2;
	}

プロパティvalue1からvalue2を引いた値をreturn文で戻すメソッドです。

042
043
044
045
046
	// 2つの値の積を戻す「メソッド」
	public int mul()
	{
		return value1 * value2;
	}

プロパティvalue1value2を掛けた値をreturn文で戻すメソッドです。

049
050
051
052
053
	// 2つの値の商を戻す「メソッド」
	public int div()
	{
		return value1 / value2;
	}

プロパティvalue1value2で割った値をreturn文で戻すメソッドです。

以上が、クラスの定義です。

次に、このクラスを使って計算を行う方法を説明します。

057
058
// メイン
public class Object_Oriented1 {

クラス名を、Javaソースファイル名と同じObject_Oriented1としています。

059
	public static void main( String[] args ) {

Javaの場合、mainメソッドがエントリーポイントで、このメソッドに書かれたコードからプログラムを開始します。

060
061
		// インスタンス化(実体の作成)
		Calculator2 obj = new Calculator2();

ソースの先頭で定義したCalculator2クラスを、new演算子を使ってインスタンス化しています。

インスタンス化とは、実体を作ることで、このソースの場合、objが実体化されたオブジェクトになります。このobjメソッドを呼び出すことで2つの値の計算をすることができます。

063
064
		// 2つの値を設定
		obj.set( 12, 4 );

実体化されたobjのsetメソッドで、2つの値を設定してます。

ここでは、1つ目の値を12、2つ目の値を4としています。

066
067
068
		// 計算結果をコンソール出力
		System.out.println( "値1: " + obj.value1() );
		System.out.println( "値2: " + obj.value2() );

objに設定された2つ値をprintlnコンソール出力しています。2つの値は、それぞれvalue1メソッドvalue2メソッドで取得しています。

069
		System.out.println();	// 改行

引数なしのprintln改行しています。

070
071
072
073
		System.out.println( "和 : " + obj.add() );
		System.out.println( "差 : " + obj.sub() );
		System.out.println( "積 : " + obj.mul() );
		System.out.println( "商 : " + obj.div() );

objaddメソッドsubメソッドmulメソッドdivメソッドで、和差積を取得し、printlnコンソール出力しています。

関連コンテンツ

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

広告