2022.09.02

IT用語

迷路56

オブジェクト指向(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コンソール出力しています。

関連コンテンツ

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

そもそもプログラミングってどういう意味?

2022.08.09

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

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

2022.08.03

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

自然数と整数って何が違う?

2020.03.23

Javaの演算子'/'を使って割り算を行った結果と注意点などについて説明。

2020.03.23

割り算で「割り切れる」、「割り切れない」ってどういうこと?

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

IT分野でアクセスするってどういう意味?インターネットにアクセス、データベースにアクセスのように使われますが・・・

2022.07.14

文字列の途中で改行する方法って?詳しくは、記事を。

2021.02.02

指定した基準座標から、指定したマンハッタン距離にある座標に●を描画!

2023.02.15

Swingパッケージを使ってxy-座標とグリッド(格子)を描画するプログラムをクラスを作成しました。

2023.01.27

Graphicsオブジェクトにxy-座標とグリッド(格子)を描画するクラスを作成しました。Javaのソースコードで詳しく解説しています。

2023.01.24

Calendarクラスを使って月末の日付を求める方法を解説しています。

2022.10.31

Swingパッケージを使って数式のグラフを表示する方法を解説します。サイン(sin)カーブを表示するJavaソースコードを紹介しています。

2019.09.14

画像の一部を切り出して、新しい画像に保存する方法を解説しています。ソースコード付きです。

2023.02.23

Calendarクラスを利用して、閏年か平年かを判定するプログラムを紹介しています。

2022.11.16

広告