SHOEISHA iD

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

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

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

マンガで分かるプログラミング用語辞典

「オブジェクト」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(40)

解説

 今回は、オブジェクトの触り部分を紹介します。

 オブジェクトは、オブジェクト指向プログラミングで出てくる、プログラムの部品です。オブジェクト指向では、データと内部処理を、オブジェクトという入れ物の中に隠蔽して1つの単位として扱います。この、中身を隠してひとまとめにすることをカプセル化と言います。

┏オブジェクト━┓
┃ 隠 蔽   ┃
┃┏━━━┓  ┃
┃┃データ┃  ┃
┃┗━━━┛  ┃
┃  ↑    ┃
┃  |利用  ┃
┃  |    ┃
┃┏━━━┓  ┃ ┏━━━━━━━━━━┓
┃┃処 理┠──╂─┨外部から利用する命令┃
┃┗━━━┛  ┃ ┗━━━━━━━━━━┛
┗━━━━━━━┛

 オブジェクト指向の実現の仕方は、プログラミング言語によって違います。多く見られるオブジェクト指向では、データをオブジェクト内の変数で、処理をオブジェクト内の関数で表現しています。

┏オブジェクト━┓
┃  隠 蔽  ┃  公 開
┃┏━━━━┓ ┃
┃┃ 変 数 ┃ ┃
┃┗━━━━┛ ┃
┃   ↑    ┃
┃   | 利用 ┃ ┏━━━┓
┃   |    ┃┏┫引 数┣┓
┃┏━━━━┓ ┃┃┗━━━┛┃
┃┃    ┗━━┛     ┃
┃┃内部処理         ┃
┃┃    ┏━━┓     ┃
┃┗━━━━┛ ┃┃┏━━━┓┃
┃ 関数    ┃┗┫戻り値┣┛
┗━━━━━━━┛ ┗━━━┛

 このように、隠蔽部分と公開部分に分かれているのは、オブジェクト指向の特徴の1つです。外部に公開した部分の仕様を変更しない限り、内部のデータや処理を書き換えても、外部からは同じようにそのオブジェクトを利用することができます。

 そうすることで、オブジェクト内部の開発と、オブジェクトを利用する側の開発を別々に行い、それぞれ別途に改良していくことが可能になります。こういった仕組みは、大規模のプログラムを開発する際に非常に有用です。

 こういった仕組みは、電化製品の電源ソケットが規格化されているのに似ています。家の電気工事を行っても、電化製品は買い替える必要はありません。同じように、電化製品を買い替えても、家の電気配線を更新する必要がありません。

 オブジェクト指向プログラミングでは、こういった電化製品の仕組みと同じように、外部との接触部分を規格化することで、別途の更新が可能になっています。

 また、上記の例では、関数だけを外部に公開していました。外部に公開可能なのは、関数だけでなく変数も公開可能です。

┏オブジェクト━┓
┃  隠 蔽  ┃  公 開
┃┏━━━━┓ ┃
┃┃ 変 数 ┃ ┃
┃┗━━━━┛ ┃
┃┏━━━━━━━━━━━━━┓
┃┃ 変 数          ┃
┃┗━━━━━━━━━━━━━┛
┃   ↑    ┃
┃   | 利用 ┃ ┏━━━┓
┃   |    ┃┏┫引 数┣┓
┃┏━━━━┓ ┃┃┗━━━┛┃
┃┃    ┗━━┛     ┃
┃┃内部処理         ┃
┃┃    ┏━━┓     ┃
┃┗━━━━┛ ┃┃┏━━━┓┃
┃ 関数    ┃┗┫戻り値┣┛
┗━━━━━━━┛ ┗━━━┛

 オブジェクトの実際の利用の仕方は、次回以降で紹介していきます。

サンプル

 オブジェクトの典型的な形が分かるコードを、代表的なオブジェクト指向のプログラミング言語であるJavaで簡単に書いてみます。

 クラスやインスタンスについては、次回以降話をするので、ここではオブジェクトの基本構造のみを示します。

com/crocro/MyObject.java
package com.crocro;

public class MyObject {
    // データ部分
    int no = 0;

    // 処理部分
    public int add(int addNo) {
        no += addNo;
        return no;
    }
}
フィードバックお待ちしております!

 ご感想、解説して欲しい用語、解説内容のアドバイスなどございましたら、FacebookTwitterなどでお気軽に編集部までお寄せください。よろしくお願いいたします。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7421 2013/11/05 14:00

おすすめ

イベント

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

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

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

メールバックナンバー