はじめに
オブジェクトって何だろう?実際の業務でオブジェクトやら配列やら文字列やら・・・いろいろな言葉が飛び交います。実際に、オブジェクトとは何だろう?と思ったので、記事にしてみます。
オブジェクトとは・・・?
オブジェクトとは「モノ」に相当するものだそうです。なんだかふわっとした表現ですが、オブジェクトとはそういうことだそうです。プログラミング的にはクラスやインスタンスがオブジェクトに相当するようで、厳密にいうとクラスやインスタンスを包括してオブジェクトと言っているそうです。つまり、何かをがばっとまとめたものをオブジェクトというのかな?と思います。
クラスやインスタンスとは・・・?
少し話がそれてしまいますが、クラスやインスタンスの話を使用と思います。端的にいうと、クラスというのは設計図や概念でインスタンスは作成物や物体と考えられるようです。例えば、人は何かを作るとき、設計図を作成し、設計図をもとに実際にものを作るわけです。これを言い換えると、クラスという設計図があり、クラスをもとにインスタンスというものを作るわけです。そして、これらをまとめてオブジェクトと呼ぶ。
オブジェクト指向
オブジェクトという考え方はオブジェクト指向で出てきます。オブジェクト指向とは、インスタンスのまとまりであるクラスを部品として扱い、その部品を組み合わせてプログラムを組んでいくというものです。ちなみに、オブジェクト指向で押さえておきたいのは「継承」「多様性(ポリモーフィズム)」「カプセル化」の3つです。
継承
継承とは元となるものから何かしらを受け継いだ新しいもののことです。例えば、人は親から生まれます。そして、一般的に子供は親の特徴を引き継ぐものだと思います。言い換えると、親クラスの何かを、子クラスで継承することを指します。これによって、いちいちクラスを作らなくても、クラスを継承したものがあることで動作を変えることが容易にできます。
多様性(ポリモーフィズム)
多様性とは同じ呼び出しに対して応答が異なることです。例えば、鳴けという命令に対して、猫は「にゃー」と鳴き、犬は「ワン」と鳴く。言い換えると、cryメソッドを呼び出した際にインスタンスによって「にゃー」と返ってきたり、「ワン」と返ってきたり、応答が異なることを言います。これによって、同じオブジェクトなのに、ものによっては動作を変えることができます。
カプセル化
カプセル化とは内容を外部から見られないように隠ぺいすることです。例えば、誰にも秘密はあるものです。しかし、その秘密が他の人にしられないように隠すことです。言い換えると、内容がわからないようにアクセス修飾子をつけて公開範囲を限定することです。これによって、外部から内容を容易に見られないようにしています。
参考文献