LoginSignup
3
2

More than 3 years have passed since last update.

オブジェクト指向とは?

Posted at

10年くらいJavaのシステム開発に携わってきました。
何度かオブジェクト指向とは?という話を、現場で話したり、本を読んだり、ネットで調べたり。

そんな中、現場面接でオブジェクト指向の良い所は?と聞かれました。
その時は、??ってなったので、改めて思考を整理して、言語化してみました。

私と同じように、現場経験が長いけど、オブジェクト指向とは?と改めて聞かれると、??となる方。
そんな方の思考整理のキッカケになればと思います。

参考サイト

整理する前のオブジェクト指向とは?

現実世界の考え方、見え方、をプログラミングの世界にそのまま持ってきている。
それゆえに、オブジェクト指向で作られたプログラムは、直感的に分かり易い(=現実世界と似ているから)

と思っていました。

でも、あれ?ほんとう?今まで見たプログラムってそうだった?
と自問自答した結果、別の結論に至りました。

整理後のオブジェクト指向とは?

参考サイトのお言葉をお借りします。

「オブジェクト指向では全体の機能を一枚岩ととらえずに,データと手続きを持った「オブジェクト」の集まりとしてとらえる」

これにつきます。

それゆえに、オブジェクト指向で作られたプログラムは、個々の部品の独立性が高いので、保守性や再利用性が高くなり、開発工数、改修工数が従来より少なくなり、生産性が上がるという結論に至っています。

「オブジェクト指向では全体の機能を一枚岩ととらえずに,データと手続きを持った「オブジェクト」の集まりとしてとらえる」

私の理解を付け加えると、
「データ」・・・ 属性
「手続き」・・・振る舞い
を持った「オブジェクト」が、「集まったなら出来ること」が、それが「機能」。

開発工数、改修工数が従来より少なくなり、生産性が上がるという結論

オブジェクトは、独立しています。独立性が大切。

開発工数を少なくできる(再利用性)

独立した「たろすけオブジェクト」は、A機能にも、B機能の集合にも参加できます。
それって、A機能を作る時に、「たろすけオブジェクト」を作れば、B機能を作るときに、改めて作らずに済む。

改修工数が少なくなる(保守性)

独立した「たろすけオブジェクト」は、A機能にも、B機能の集合にも参加しているので、
A機能、B機能に共通した「手続き」を直す場合、「たろすけオブジェクト」の1か所の修正で済む。

上記をベースに3大特徴を自分の言葉で整理すると

ポリモーフィズム

指示する側が楽チン。

具体的に言うと、「ユーザ管理画面を作ってほしー」って思った時に、
指示する相手が、「たろすけ」だろうが、「からすけ」だろうが「ユーザ管理画面を作ってください」って指示すれば、作ってくれるということ。
中身は、「たろすけ」と「からすけ」で、個性に富んだ「ユーザ管理画面」が出来ます。

更にいえば、「ものすけ」が出てきても、同じ指示で大丈夫です。

継承

共通の親分類にお任せ。

具体的に言うと、「たろすけ」と「からすけ」で同じ手続きは、「すけ分類」の「親」、「おやすけ」を作って、そこにお任せする。
という感じですかね。

これも良い所は、「ものすけ」が出てきても、その手続きを使えるということ。

カプセル化

指示する側は、具体的な作業の中身を知らなくてよい。
これは、システム開発現場では、丸投げに当たりそうなので、お勧めできませんが、プログラム開発においては楽チンです。

ポリモーフィズムで、お話した「ユーザ管理画面を作ってほしー」って思った時に、
指示する相手が、「たろすけ」だろうが、「からすけ」だろうが「ユーザ管理画面を作ってください」って指示すれば、作ってくれる。

指示する側は、作り方を知らなくても良い。

というお話。

あれ?結局、オブジェクト指向って何が良いの?

独立性が高いから、開発工数、改修工数が従来より少なくなり、生産性が上がる。
かな。

とはいえば、世の中には、銀の弾丸があるわけでは無いです。
あれば、みんな使っています(笑)
なので、全てにカッチリ当てはまるとは思っていません。

ただ、便利な手法の1つとして、捉える。
使える所で使う。
っていうのが、良いかと思います。

駄文

頭で整理できた!って思って、言語化すると、色々詰まりますw
言語化は大切ですねw

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2