プログラミング

【初心者向け】オブジェクト指向とは?わかりやすく解説

object

プログラミング初心者の方がぶつかる壁の一つは「オブジェクト指向とは?」という問いに明確な答えを得られないことでしょう。

私も当時は?マークがつきっぱなしで、オブジェクト指向に対する理解に混乱してました。

オブジェクト指向を学ぶべき理由も踏まえて、本記事ではオブジェクト指向についてわかりやすく解説していきたいと思います。

たろう
たろう
本記事を最後まで読むことでオブジェクト指向の基礎について理解できるはずです♪
engineer-job-change
【厳選】エンジニアにおすすめの転職スカウトサービス7選エンジニアにおすすめの転職スカウトサービスは?本記事では現役エンジニア目線でエンジニアにおすすめしたい転職スカウトサービスを厳選して紹介しております。...
エンジニア向け副業エージェント
【土日在宅OK】エンジニアにおすすめの副業エージェント7選エンジニアにおすすめの副業エージェントは?本記事では数ある副業案件を扱うエージェントの中から現役エンジニアである筆者が厳選して7社紹介しております。副業に興味のあるエンジニアは要チェックです。...

オブジェクト指向とは?わかりやすく解説

learning-site

オブジェクト指向とは、ソフトウェアを開発するときに用いる”部品化”の考え方です。

オブジェクト指向では(※)手続き型プログラミングと異なり、確固たる根拠に基づいてプログラムの部品化を行います。

(※)手続き型プログラミングとは、コンピューターが実行すべき命令や手続きを上から順番に実行していくもの。

オブジェクト指向とは、ソフトウェアを開発するときに用いる部品化の考え方。

 

オブジェクト指向でなぜつくるのか?

company

前章でオブジェクト指向とは部品化の考え方ということは理解できたことでしょう。

本章ではそんなオブジェクト指向で開発する理由についてお伝えするために、オブジェクト指向という部品化の考え方が誕生した経緯を簡単におさらいできればと思います。

オブジェクト指向が誕生するまでは手続き型プログラミングで開発が行われていました。

これでも理論上はどんなに大きなプログラムでも記述できるのですが、ソースコードが長く複雑になるにつれて開発者自身が把握しきれなくなるという問題が出てきてしまいます。

つまり、人間がプログラム開発のボトルネックになってしまったという訳です。

そこで誕生したのがオブジェクト指向という考え方になります。

オブジェクト指向という部品化の仕組みに従ってプログラムを書くことで、大規模なシステムも比較的簡単に開発できるようになりました。

オブジェクト指向で開発する理由は、人間が把握しきれない複雑さを克服するため。

 

オブジェクト指向の考え方

programming

ではどうしてオブジェクト指向という部品化の考え方を用いるだけでどうして複雑さを克服できるのでしょうか?それはオブジェクト指向の考え方を知れば理解できます。

私たちが開発するプログラムは現実世界における活動を自動化するためのものです。

言ってみれば現実世界とは無関係に単独で存在しているプログラムはほとんどありません。

オブジェクト指向プログラミングではいきなりコードを書くことはせず、まずは現実世界の観察を行い設計図を描きます。

そこに登場する人や物、つまりオブジェクト単位でプログラムを分割するのです。

部品化の考え方

現実世界に出てくる人や物を一つの単位としてプログラムを分割する。

ここでプログラマが考えなければならないのは、オブジェクトをどのように作りどのように連携させるかということです。(現実世界の振る舞いを模倣すれば良い)

要するに、我々がよく把握している現実世界を模倣して作られたプログラムもまた我々にとって把握しやすいので、オブジェクト思考を用いることで複雑さを克服できるのです。

オブジェクト指向の考え方として、現実世界の振る舞いをプログラム上で再現することが挙げられる。それによって複雑さを克服できる。

 

今後のオブジェクト指向学習について

users

ここまで「オブジェクト指向とは?」という基礎の基礎について初学者でもわかるようなるべくわかりやすく解説してきました。

しかし、これまでの内容を理解できたところでオブジェクト指向を用いた開発ができるようになるといったらそうではありません。

今後のオブジェクト指向学習が大切です。

オブジェクト指向について効率的に学べるよう、重要項目それぞれについて記事を書いたので参考にしてみてください。

  • クラスとインスタンス
  • カプセル化
  • 継承
  • 多態性/ポリモーフィズム

オブジェクト指向のクラス/インスタンス

”クラス”とは、いわばインスタンス(オブジェクト)の設計図になります。

「オブジェクト」という言葉は曖昧で、クラスのことを指す場合もあるが、基本的にはクラスから生み出されるインスタンスのことだと思ってもらえればOK。

そして、このクラスという設計図に対して具体的な属性値を与え、メモリ上に生成してポコリと実態化させたものを”インスタンス”と呼びます。

クラスとインスタンス

オブジェクト指向では、クラスという設計図を基に実体であるインスタンスが生成されるという関係をまずは押さえておきましょう。

class-instance
【決定版】オブジェクト指向のクラスとインスタンスについてわかりやすく解説オブジェクト指向のクラスとインスタンスについて初心者向けにわかりやすく解説。クラスは設計図。設計図であるクラスから生み出せれた実体がインスタンス。...

クラスとインスタンスの詳しい内容につきましては上の記事を参考にしてみてください。

オブジェクト指向のカプセル化

”カプセル化”とは、データの読み書きやメソッドの呼び出しを制御する機能です。

カプセル化とは

大切なデータを外から簡単に書き換えられるプログラムだと恐ろしいですよね?そんな恐ろしい事態を防ぐための機能がカプセル化になります。

capsule
【超入門】オブジェクト指向のカプセル化とは?わかりやすく解説オブジェクト指向のカプセル化について初心者向けにわかりやすく解説。カプセル化とはデータの読み書きやメソッドの呼び出しを制御する機能で、想定しないクラスの利用防止や問題が発生した際に原因の特定を容易化できる。...

カプセル化の詳しい内容につきましては上の記事を参考にしてみてください。

オブジェクト指向の継承

”継承”とは既存のクラス(親)に基づき新たなクラス(子)を定義するための機能です。

継承とは?

継承という機能を使うことで、親クラスのメンバ(データ・メソッド)は自動的に引き継がれるため、子クラスでは差分だけを記述すればOK。

inheritance
【完全版】オブジェクト指向の継承についてわかりやすく解説オブジェクト指向の継承について初心者向けにわかりやすく解説。継承とは、既存のクラスに基づき新たなクラスを定義するための機能で、継承の目的はis-aの関係を明示的に表すことになります。...

継承の詳しい内容につきましては上の記事を参考にしてみてください。

オブジェクト指向の多態性

”多態性/ポリモーフィズム”とは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行う特性を指します。

例えば以下のような図形クラスから継承によって作られた子クラス群があるとしましょう。

多態性/ポリモーフィズム

各子クラスは親クラスから継承したWriteメソッドをオーバーライドしているとします。

そして、これらの子クラス群に同じ命令を送ると・・・以下の図のように動作するのです。

多態性/ポリモーフィズム

このように同じ呼び出し方なのに異なる動作をするという特性から多態性/ポリモーフィズムという名前がつけられています。

polymorphism
オブジェクト指向の多態性(ポリモーフィズム)についてわかりやすく解説オブジェクト指向の多態性(ポリモーフィズム)について初心者向けにわかりやすく解説。多態性/ポリモーフィズムとは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行うという特性を指します。...

多態性/ポリモーフィズムにつきましては上の記事を参考にしてみてください。

オブジェクト指向とは?【まとめ】

本記事のまとめ
  • オブジェクト指向とは、現実世界の振る舞いをプログラム上で再現するための部品化の考え方を指す。
  • オブジェクト指向のメリットは人間にとって把握しやすい現実世界の振る舞いを模倣することによるプログラムの複雑さを克服できること。
  • オブジェクト指向とは?という基本が理解できた後はオブジェクト指向の重要機能であるカプセル化・継承・多態性について学んでいこう。

オブジェクト指向はとにかく理解することが大切なので、本記事を何回も読み返すなり参考書籍を読むなりして理解を深めていきましょう。

以下の記事でオブジェクト指向について学べる両所を紹介しているので、気になる方は併せて読んでみてください(^^)

programming-people
【2022年版】オブジェクト指向のおすすめ本5選オブジェクト指向を学ぶのにおすすめの本を初心者向けに紹介。どの本も良書なので一冊を繰り返し読み返すことでオブジェクト指向をマスターすることができるでしょう。...

オブジェクト指向で躓く人は多いですが、理解さえできれば大きなメリットを享受することができるので頑張ってください!

本記事がオブジェクト指向の理解促進に少しでもお役に立てたのなら幸いです。ではっ!

engineer-job-change
【厳選】エンジニアにおすすめの転職スカウトサービス7選エンジニアにおすすめの転職スカウトサービスは?本記事では現役エンジニア目線でエンジニアにおすすめしたい転職スカウトサービスを厳選して紹介しております。...
エンジニアなら絶対に押さえておきたい定番書30選
【脱初心者】エンジニアなら絶対に押さえておきたいおすすめ本30選エンジニアの方におすすめしたい本を厳選して30冊ご紹介。技術書はもちろん、エンジニアに必要なロジカルシンキングやコミュニケーションスキルについて学べるビジネス書も紹介しております。...
こちらの記事もおすすめ!

COMMENT

メールアドレスが公開されることはありません。