SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Cでわかるオブジェクト指向

【第5回】委譲


委譲の実行サンプル

 それでは、拡張した機能を確認してみましょう。

リスト7:委譲の実行サンプル
#include "Member.h"

/* エントリポイント */
int main(int argc, char* argv[])
{
    Member* member = Member_new(1, "snoozer05", "ブロンズ");
    member->changeServiceStautsTo(member, "ゴールド");
    Member_delete(member);
    return 1;
}
リスト8:実行結果
>gcc main.c User.c Member.c ServiceStatus.c
>a.out
現在のサービスステータスは ブロンズ です
現在のサービスステータスは ゴールド です

 changeServiceStautsToメッセージが、メンバオブジェクトからサービスステータスオブジェクトへ委譲されて、処理が実行されていることが確認できました。

 委譲を用いたプログラミングでは、このように他のさまざまなオブジェクトから必要な機能をピックアップして再利用して、独自の機能を持つ、新たなオブジェクトを作り出していきます。 また、委譲を使うことで、より柔軟で再利用可能な機構を構築することも可能です。たとえば、この委譲先の部分に、前回解説したような多態性を持たせると動的に委譲先を切り替えることが出来、より柔軟な構造を実現することが出来ます。

おわりに

 これまでの連載記事を通じて、C言語によるOOPを通してオブジェクト指向の基本的な概念について解説してきました。いかがだったでしょうか。「カプセル化」や「継承」など、用語こそCプログラマの皆さんに耳慣れない言葉だったかと思いますが、言葉の意味や実現しようとしていることは、どれも皆さんが普段普通に考えているようなことだったのではないでしょうか。

 オブジェクト指向というアプローチの中で使われているさまざまな用語は、どれもプログラミングという問題領域における考え方や手法に名前を与えたものです。恐れずに、普段している作業や思考と照らし合わせて、是非理解を進めていっていただければと思います。

 本稿が、少しでも皆さんのオブジェクト指向の理解に貢献できたのなら幸いです。最後になりますが、短い間でしたが連載にお付き合いくださった皆様に心より感謝いたします。どうもありがとうございました。それでは、また別の記事でお会いしましょう。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Cでわかるオブジェクト指向連載記事一覧

もっと読む

この記事の著者

島田 浩二(Ruby札幌)(シマダ コウジ)

1978年生まれ。電気通信大学電気通信学部情報工学科卒業後、メーカ系ソフトウェア会社にて携帯電話の開発業務に従事した後、2006年より札幌にてフリーのプログラマとして活動。2009年7月に株式会社えにしテックを設立し、同社代表取締役に就任。 日本Rubyの会理事、一般社団法人LOCAL理事、Ruby札幌主宰。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3710 2009/03/17 13:14

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー