【Ruby入門】クラスをコーディング(2) オブジェクト指向
  • facebookページ
  • twitterページ
  • 2017.12.18

    【Ruby入門】クラスをコーディング(2) オブジェクト指向

    今回の解説は継承から始まり、オブジェクト指向の基礎まで踏み込みます。

    クラスを継承やインスタンス化するだけでは、オブジェクト指向の旨味を存分に味わえません。

    また他人が作った、あるいはフレームワークに備わっているクラスを使うことは多々ありますので、継承やオブジェクト指向はとても大事です。

    それでは解説を始めましょう。

    継承をソースベースで解説

    継承とは何かというのは、前記事「【Ruby入門】クラスの継承、オーバーライド」で解説しました。

    ここではRubyでどう実装するかというのをやってみましょう。具体例として、今までの解説で出てきたBookクラスを使います。

    Bookクラスは以下のとおりです。在庫に関連するものを追加し、説明に関係ないものを消しました。

    またBookクラスを親クラスとして、言語(つまり本は何語で書かれているのか)まで管理する子クラスBookLangクラスを定義しました。

    インスタンス化までを以下にまとめたので、そのままコピペして実行できます。

    [実行結果]

    引数で渡したものが表示されただけですが、なんとか動きました!!

    Bookクラスを基本として、言語のあつかいだけを追加できました。

    ここで注目して欲しいのは、親クラスに子クラスの要素は一切ないということです。

    子クラスに親クラスでもつインスタンス変数へのアクセサを記述する必要がないことも注目してください。

    親クラスに手を加えることなく子クラスだけで拡張できるというすごさを実感できましたか?

    ただし、解説をしていない箇所がたくさんあります。以降、その解説をします。

    インスタンス化

    今まで解説したとおり、クラスを実体化する行為です。

    基本書式は以下です。

    先ほどのソースでは以下を書きました。

    以降参照用変数を経由して、あたかもインスタンスをさわっているかのようにあつかえます。

    もちろん、親クラス単体でもインスタンス化できます。

    オーバーライド

    Bookクラスでは、「図書館における本館の閲覧場所だけの在庫数を計算する」と仮定しました。

    ある日、新たに別館の在庫数も合わせた合計で計算する必要が出てきたとしましょう。

    Bookクラスにあまり手を入れたくないし、さあどうしましょうか。

    そこで継承をうまく使ってやってみましょう。

    本館と別館の総数を計算するBookAmountというクラスを定義します。

    Bookクラスはそのままで結構です。

    [実行結果]

    結果の4に注目です。

    stockというメソッドをサブクラスBookAmoutで上書きしました。

    その結果、stockという変数に4という値が入りました。

    上書き(つまりオーバーライド)されて4になったこと、おわかりいただけたでしょうか?

    ※ここではオーバーライドの解説をメインとしているので、本館と別館をどうやって合計するのか?というロジックは考えていません。

    ポリモフィズム

    ポリモフィズムとは、オブジェクト指向的には問題ある解説かもしれませんが、要は「呼ぶ側は呼ばれる側のことは一切考える必要がなく、同じ呼び方でよい」というものです。

    先ほどの別館もカウントするバージョンに加えて「在庫が閲覧場所と奥の倉庫に分散している」バージョンを作ってみましょう。

    これで基本のBook、別館との総計のBookAmount、閲覧場所と奥の倉庫の総数のBookFrontandBackが出揃いました。

    呼び出しましょう。

    まずは基本クラスです。

    次に、別館との総計バージョンです。

    さらに、閲覧場所と奥の倉庫の総計バージョンです。

    お気づきでしょうか?

    「p book.count」はまったく同じです!

    これがポリモフィズムです。

    仮に呼び出し先がまだできていないとしても、この呼び出し方は同じなので先に作ることができます。

    便利ですよね。

    まとめ

    これでクラスやオブジェクトの基本解説は終わりです。

    お疲れさまでした!

    本来は奥深い概念ですが、あまりに深く解説すると余計に分かりづらくなるので、難解なことなるべくさけて解説しました。

    最低限のプログラミングはこれで大丈夫かと思います。

    もちろん興味を持たれた方は、どんどん深掘りしてみてくださいね!


    Ruby on Railsのフリーランスは高収入でおすすめ!

    Rubyができる方は多くはいないのが現状です。 プロジェクトは右肩上がりで増えているので、エンジニアが全く足りておりません。 Rubyの実務経験が1年以上ある方はフリーランスになることもできるので、ぜひご興味があればポテパンの無料カウンセリングをご利用下さいませ! Ruby案件に関する情報は下記にまとまっていますのでぜひご覧下さい。

    Ruby on Rails案件のイマがわかる!知って見つかる最適案件


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE