支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Java オブジェクト指向とは

はじめに

Javaを使って何かを開発するためにもちろん必要な知識が基本文法や様々なAPIの知識ですが、ただそれらだけを学習しただけでは大規模な開発をする際に余計な時間がかったり、不具合だらけのプログラムになってしまう可能性があります。なぜなら作っている人間の頭が複雑なシステム構造に追いつけなくなってしまうからです。そこで生まれたのがオブジェクト指向プログラミングという考え方です。この考え方を知っていると大規模な開発がより楽に出来るようになります。Javaはその考え方を実現できる「オブジェクト指向言語」に分類されます。オブジェクト指向は初心者の方がよくつまづきやすい部分でもあるので、出来るだけ分かりやすく解説します。

オブジェクト指向を理解するコツ

Javaの基本文法を学習するということはJavaを書く上でのルール、つまり書き方の「正解を学ぶ」ことと同じです。そのため、そのルールを記憶すれば基本的なコーディングはできるようになります。しかしオブジェクト指向を習得するためにはただ「知識を記憶」するということではなく、「正解に辿り着くための考え方」を学ぶことになります。

オブジェクト指向とは

オブジェクト指向の「オブジェクト」には「もの」という意味があります。つまりオブジェクト指向プログラミングは一つのソフトウェアを開発する際にプログラムの機能や役割をそれぞれ部品(もの)として考え、それを組み合わせることによって一つのソフトウェアを作ります。例えば銀行のATMでお金を振り込むには大きく分けると、ATMで何をするか決める「受付」機能、振り込み元や振込先の口座を照会する「口座」機能、結果を通帳に印刷する「印刷」機能などに分けることができ、それらを組み合わせることで「ATM」というシステムが作られています。上であげた例のようにオブジェクト指向とは現実世界のある活動を人間に代わって自動化するので、現実世界と密接に関係しています。従って、現実世界をを基に作られたシステムは開発する上でも楽に作ることが出来ますし、バグが発生した際もどの部品を修正すればいいのかすぐに把握できるのです。

クラス、インスタンス

オブジェクト指向で重要なキーワードは「クラス」、「インスタンス」です。「クラス」、「インスタンス」について簡単に説明します。

クラスとは

クラスとはオブジェクトの設計図になります。そのオブジェクトが持つべき「情報」(フィールド)や「振る舞い」(メソッド)を記述し、オブジェクトのひな型としての役割を果たします。例えば先ほどのATMの「口座」クラスには、口座番号を情報として記憶しておくフィールドや、その口座にアクセスするメソッドが定義されています。

インスタンスとは

クラスを定義するだけではそのクラスが持っているフィールドやメソッドを利用することが出来ません。そのクラス(設計図)をもとに実体(インスタンス)を生成することによってそれらの機能を利用することができるようになります。クラスからインスタンスを作り出すことを「インスタンス化」と呼びます、(インスタンス化の事をオブジェクト化と呼ぶ場合もあります。)

クラスの定義方法

それでは先ほども述べたATMの「口座」クラスの定義方法を見てみましょう。下図のようにクラスの設計内容を上から「クラス名」、「フィールド」、「メソッド」の一覧として並べる書き方は、クラス図という設計図のルールに準じています。クラス図は世界共通の設計図として定義されたUML(Unified Modeling Language)で定められている図の1つです。

インスタンスの生成方法

次に上記のクラスを元にインスタンスを生成してみましょう。

このように右辺の「new クラス名( )」でインスタンスを生成し、左の「クラス型 変数」に「=」を使って代入します。

インスタンスのフィールド利用法

生成したインスタンスのフィールドに情報を保存するには、以下のように値を代入すればそのインスタンスは代入した情報を保持することができます。

インスタンスのメソッド利用法

生成したインスタンスのメソッドを利用するには、以下のように記述することでメソッドを呼び出し、利用することができます。

クラスを定義する意味

上で記したようにインスタンスを生成することによって、そのインスタンスが持っているフィールドやメソッドを利用することが出来ます。ではなぜわざわざ①クラスを定義、②インスタンスを生成というように工程が分かれているのでしょうか。それは大規模開発する際にインスタンスを大量に生成する必要がある状況があるためです。先ほど例にあげた「口座」インスタンスはそのATMを利用する人数分必要になります。その都度、人数分のインスタンスを作っていたら膨大な作業をしなくてはならなくなります。そのため「口座」クラスという設計図を作ることによって、そのクラスを元にインスタンスを生成すれば何百、何千というインスタンスを生成することが可能になるので、さきほどのようにインスタンスを一つずつ作るという作業が必要なくなります。そのため①クラスを定義、②インスタンスを生成という工程に分かれているのです。

おわりに

Javaを学習したての頃はオブジェクト指向をマスターするのは難しいと思いますが、必ず身につけなくてはならないスキルなのでこの記事をスタートに引き続き学習を頑張ってください!