ヒビカワル

人生100年時代に向けて日々変わることを決意したオッサンのブログです!

オブジェクト指向について自分の言葉で表現してみた

こんにちは、チャビです。今日はプログラミングに出てくるオブジェクト指向なる考え方をまとめてみようと思います。

言葉の意味を調べてみる

そもそも、「オブジェクト?」って何さ・・・「指向?」とは・・・って感じですよね。私も初めて目にした時に思いました。日本語の意味から確認してみます。

オブジェクト

【object】とは、物、物体、目標物、対象、目的語、客体、などの意味を持つ英単語。

指向

ある方向・目的に向かうこと。

足すと、「対象がある方向や目的に向かうこと」となります。ふむふむそいうことかぁ・・・とはなりませんよね。

私は言葉の意味で理解するのは難しそうなので諦めました。

オブジェクト指向を一言で表すならば

「対象に意味を持たせる考え方」と表現します。

どういうことかと言うと人間が自然の現象を理解したり表現したりする際に言葉を使って構造化するアプローチです。私たちは普段から何気なく名前をつけて特性などに応じて分類することが得意ですが、まさにそれです。

例えば「えんぴつ」です。

名前: えんぴつ

  1. 材質 :(特性)

  2. 長さ :(特性)

  3. 紙に書くことができる:(特性)

  4. 使うと減る:(特性)

このように対象(今回はえんぴつ)に意味を与えて解釈(分類)する考え方をオブジェクト指向と言います。

さらに分類した特性は2つの考え方で分類ができます。

名前:えんぴつ

  1. 材質:(特性→固有の値を持つ=木材)

  2. 長さ:(特性→固有の値を持つ=10cm)

  3. 紙に書くことができる:(特性→振る舞い=紙に書くことができる)

  4. 使うと減る:(特性→振る舞い=使うと減る)

また、オブジェクト指向では

特性に固有の値をもつものをプロパティ(属性、データ)と言います。

特性に振る舞いをもつものをメソッドと言います。

オブジェクト(object)とは

一言で言うと「対象」です。オブジェクト指向におけるプログラミングでは取り扱うもの全てがオブジェクトです。目的を持ってプログラムを組むことにより、アプリやwebサービスと言った成果物が生まれます。記述されているソースコードの全てが構造化した視点で捉えると何かの意味(先ほどのえんぴつの例のような)を持っているということです。

クラス(class)とは

一言で言うと「プログラミングの中で使用する機能や役割、データを分類してまとめたもの」です。よく設計書などと言われています。

文房具クラスに

  • えんぴつ(属性:色 → 値:赤 属性:材質 → 値:木 属性:値段 → 値:60円)
  • 定規  (属性:形 → 値:長方形 属性:材質 → 値:プラスチック 属性:値段 → 値:100円)
  • 筆箱 (省略)
  • 消しゴム(省略)

というオブジェクトとプロパティがあり、

それぞれに書く、長さを測る、文具を収納する、消す、と言ったメソッド(振る舞い)を定義してまとめることができます。

実際にはプログラミングで処理させたい内容をそれぞれのクラスで定義し組み合わせていくことで、成果物を作成します。どのような観点でどういう分類をしてクラスをまとめていくか?がとても重要です。

まとめ

  • オブジェクト指向とは「対象に意味を持たせる考え方」
  • オブジェクトとは一言でいうと「対象」
  • クラスとは一言で言うと「プログラミングの中で使用する機能や役割、データを分類してまとめたもの」

メリットやデメリットなど、また機会があればまとめたいと思います。

おすすめ記事

初心者向けに徹底解説!オブジェクト指向とは?

オブジェクト指向と10年戦ってわかったこと - Qiita