プログラミング言語
この節の解説動画はプレミアム限定です。プレミアムなら全科目・全節が見放題!
プレミアムで見る現代のプログラミングの主流はオブジェクト指向!カプセル化・継承・多相性の3本柱を押さえよう!
簡単にいうと
現代のプログラミングの主流はオブジェクト指向!カプセル化・継承・多相性の3本柱を押さえよう!
① オブジェクト指向の基本的な考え方
オブジェクト指向プログラミング(OOP: Object-Oriented Programming)は、プログラムをオブジェクトの集まりとして捉える設計手法です。オブジェクトとは、データ(属性)とそのデータを操作するメソッド(手続き)をひとまとめにしたものです。
たとえば「自動車」というオブジェクトを考えると、色・排気量・現在速度といったデータと、アクセルを踏む・ブレーキをかける・ハンドルを切るといったメソッドが一体化されています。
オブジェクト同士はメッセージを送り合うことでやり取りします。あるオブジェクトが別のオブジェクトに「この処理をしてください」とメッセージを送ると、受け取った側が自分のメソッドを実行して応答します。この仕組みにより、各オブジェクトが独立して責任を持ち、プログラム全体の見通しがよくなります。
オブジェクトの設計図にあたるものをクラスと呼びます。クラスは「どんなデータを持ち、どんなメソッドがあるか」を定義したテンプレートで、クラスをもとに生成された実体がオブジェクト(インスタンス)です。
② カプセル化(Encapsulation)
カプセル化とは、オブジェクト内部のデータやメソッドの詳細を外部から直接見えないように隠蔽(情報隠蔽)する仕組みです。外部からは公開されたメソッド(インタフェース)を通じてのみデータにアクセスできます。
カプセル化のメリットは主に2つあります。
③ 継承(Inheritance)
継承とは、既存のクラス(親クラス/スーパークラス)が持つ属性やメソッドを、新しいクラス(子クラス/サブクラス)がそのまま引き継ぐ仕組みです。子クラスは親クラスの機能をベースにしつつ、独自の属性やメソッドを追加・変更できます。
たとえば「乗り物」クラスから「自動車」クラスや「自転車」クラスを派生させると、「乗り物」が持つ共通機能(移動する、停止するなど)を重複して記述せずに済みます。これによりコードの再利用性が大幅に向上し、開発効率と保守性が高まります。
④ 多相性(ポリモーフィズム / Polymorphism)
多相性とは、同じメッセージ(操作の呼び出し)を送っても、受け取るオブジェクトの種類によって異なる動作を実行する性質です。
たとえば「面積を計算せよ」というメッセージを送ったとき、「円」オブジェクトはの計算を行い、「長方形」オブジェクトはの計算を行います。呼び出し側は相手が円なのか長方形なのかを意識せず、同じ「面積計算」メッセージを送るだけでよいのです。
多相性により、新しい図形クラスを追加しても既存のコードを修正する必要がなく、拡張性の高いプログラムを構築できます。
具体例
オブジェクト指向の3つの概念を、「スマートフォン」を使って整理してみましょう。
カプセル化: スマートフォンの内部にはCPU・メモリ・バッテリーなど複雑な部品が詰まっていますが、ユーザーは画面をタッチするだけで操作できます。内部構造を知らなくても使える。これがカプセル化です。内部の回路設計が変わっても、タッチ操作の方法が変わらなければユーザーには影響がありません。
継承: 「携帯電話」という親クラスから「スマートフォン」が継承され、さらに「iPhone」や「Android端末」が派生しているイメージです。「通話する」「メールを送る」といった基本機能は親クラスから受け継ぎつつ、「アプリをインストールする」「顔認証でロック解除する」といった独自機能が追加されています。
多相性: 「音楽を再生する」というメッセージをiPhoneに送ればApple Musicが起動し、Android端末に送ればYouTube Musicが起動する。同じ命令でもオブジェクト(端末)ごとに振る舞いが異なる。これが多相性です。
試験のポイント
動画・テキスト・過去問・AI添削まですべて網羅!
予備校代の1/10以下で、独学の不安をまるごと解決できます
プレミアムプラン
¥14,800/ 購入日から1年間有効(税込)
決済はStripe(世界最高水準・PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。