【初心者向け】オブジェクト指向の属性とは?

ZAICOでは、Android・iOS・Rubyエンジニアを絶賛募集中です! 詳しくは、採用ページをご覧ください。

好きな場所で働こう

こんにちは、ZAICO開発チームです。

筆者は地元の短大でプログラミングの講義を一部担当しており、プログラミング言語Javaを中心として、オブジェクト指向の基本について教えています。その中でお伝えしたことを少しだけまとめました。

突然ですが、オブジェクト指向におけるオブジェクトは基本的に

  • 属性
  • 操作(振る舞い)

を取り持ちます。オブジェクトによっては属性がなかったり、操作がなかったりすることもあるかもしれません。

例えば、「パソコン」をオブジェクトとして考えるとこのようになります。

  • 属性:CPU、メモリ、OS
  • 操作:起動する、終了する

操作のほうは「動詞」を洗い出せばいいので想像がつきやすいですが、属性のほうを洗い出すのは初心者にとって難しいかもしれません。

次に「自動車」をオブジェクトとして考えるとどのようになるでしょう。

  • 属性:車種、トヨタ
  • 操作:前進する、後進する

試しに上のように洗い出してみましたが、これは属性に誤りがあります。
すべての自動車がトヨタでしょうか?たしかにシェアNo.1かもしれませんが、ホンダやスズキなど色んなメーカーがあります。

その自動車のメーカーが〇〇ということです。

ですので、

  • 属性:車種、メーカー

と洗い出すのが正しいです。

続いて、こちらはどうでしょうか。

  • 属性:車種、メーカー、ハンドル
  • 操作:前進する、後進する

これは一見正しそうですが、これも属性に誤りがあります。
ハンドルは自動車の部品で、すべての自動車に備わっています。
しかし、部品は属性としてはふさわしくないことが多いです。

先ほど「その自動車のメーカーが〇〇」と書きましたが、同じように当てはめてみると「その自動車のハンドルは〇〇」という文になります。
この文は成り立たないでしょう。もしかしたらハンドルにも種類があるかもしれませんが、一部品として洗い出したなら正しくありません。

それなりの経験年数を持つプログラマーやシステムエンジニアにとっては難しいと思いませんが、プログラミングがはじめての方にとっては、属性についてすぐ理解できるのは大変かもしれません。
初心者の方だけではなく、新入社員研修などでオブジェクト指向の基本を教える立場にいる方にも、この記事が参考になれば幸いです。
以上、オブジェクト指向の属性とは?という内容でした。

ZAICOでは、新しいテクノロジーの力でモノの状態・流れを把握する仕組みに一緒に取り組む仲間を募集しております。
詳しくは、採用ページをご覧ください。

好きな場所で働こう