【C#】プログラミングに大切な考え方「オブジェクト指向」とは?

SPONSORED LINK

現在僕は、C#のプログラミング技法を学んでいます。

もちろん構文や条件分岐など覚えなくてはならないことも多いです。そんな中で学習を進めたときに、必ず学ばなくてはならないのが「オブジェクト指向」と呼ばれるプログラミングに欠かせない考え方です。

プログラミングを知っている人ならオブジェクト指向という言葉を聞いたことがあるかもしれませんが、初心者にはさっぱり理解できませんよね。今日はそんな「オブジェクト指向」について理解を深めましょう。

オブジェクト指向とは

オブジェクト指向とは、実務レベルのプログラミングにおいてとても大切な考え方です。一般的にはどう考えられているのか、おなじみのウィキペディアから拾ってきました。

オブジェクト指向(オブジェクトしこう)とは、オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方である。英語の object-oriented (直訳は、「対象物志向の」「目的重視の」という意味の形容詞) の日本語訳である。
オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持つ。複雑なシステム記述、巨大なライブラリ(特に部品間で緊密で複雑な相互関係を持つもの)の記述においては、オブジェクト指向の考え方は必須である。

ふうむ、なんのことだか、って感じですか?

大事なことは太線で指定してみましたが、プログラミングに触れたことがある人じゃないと分からにですよね。そもそもオブジェクトって何?とかそんな感じかもしれません。

ではもうちょっと分かりやすく解説していきます。

 

オブジェクトって?

object-oriented

そもそもオブジェクトとはなんですか?ってところから始めましょう。

オブジェクトとは英語で対象物、目的物などといった意味合いを持っています。

プログラミングをすすめる中で大切なのが「データ」と呼ばれる存在です。そもそもプログラミングは「データ」を処理するために書くことが多いです。売上がどうとか、仕分けがどうとかそういった対象を「どのように扱うのか」という部分で指令を出すのがプログラミングの役割です。

データというのは、本当にそのままで、例えば学校の「クラス」や「出席番号」、「名前」などがデータに当たります。

例としては、クラスの生徒を管理するためのプログラミングを書くとしましょう。最初に名前を入れて、出席番号を入力して、住所を入れて・・・と作業をし、そのクラスをクラス名簿に追加するという作業をするとします。

この作業の中心は学生のデータです。個人情報です。こうした情報を中心として、あるいは対象として処理をすすめるデータ構造をオブジェクトと呼んでいます。

平たくいうとそんな感じです。

ですから、オブジェクト指向というのは、データ構造に寄り添ってプログラミングを組んでいく、という考え方になります。これがオブジェクト指向の中心的な意義になるのです。

 

オブジェクト指向の特徴

データ構造を対象として処理をすすめるのがオブジェクト指向だと説明しました。

よりプログラミング的な言い方をすると「オブジェクトの中身がどうなっているかは隠し、可能な操作と属性のみは公開する」になります。ここでいう可能な操作というのは「メソッド」、そして属性というのは「プロパティ」に当たります。

もうちょっと具体例を挙げるとするならばテレビです。

object-oriented

テレビの可能な操作というのは、例えばチャンネルを変更したり、音量の上げ下げ、そして電源のオンとオフでしょうか。最近はリモコンで操作すれば色々と設定は変更できますが、ざっくりいうと、「テレビに対して行動を起こせる」というのがメソッドということになります。

また、テレビのプロパティといえば、現在映されているチャンネルや音量など、「テレビの状態」のことを指します。

こうしたメソッドやプロパティは、外部の人に知られても良いというのがオブジェクト指向の核の部分です。外部の人が知らないと、テレビの操作もできませんよね。

 

それがプログラミングでも言えます。

外部の人が変更できる項目、さっきの例でいえば、学生の名前や出席番号、住所などはプロパティ、それらを入力する動作をメソッドといえるでしょうか。そうした情報は外部の人が与えないと、プログラミング自体作動しませんからね。

しかし、その内部、例えばテレビの配線や基盤などは外の人に知られる必要はないし、クラス名簿を作成するプログラミングだって、入力したデータがどのように変換されているのか、どういった処理がされているのか、というのは知る必要はありません。

テレビの中身やソースコードというのは、その専門家だけわかれば良いのです。

 

こうした考え方がオブジェクト指向の特徴といえます。

ある意味では「企業秘密」みたいなものかもしれません。どこの会社だって、テレビの内部には工夫が施されているでしょうし、また、プログラミングにおいても書かれたソースコードは会社で保持しておきたいはずです。

そうした考え方がオブジェクト指向なのです。

 

オブジェクト指向のためのプログラミング

object-oriented

もちろん、ただ単にソースコードを書き散らかして処理さえ済めば良い、という考え方にはなりませんよね。処理が正確に行われていても、あちこちが見えてしまうようなソースはだめなソースだと言われています。

テレビだってそうです。テレビの横から基盤がはみ出していたり、スピーカーに繋ぐ配線が飛び出していたりしたらどう思いますか?好ましく思う人は少ないはずです(もちろん一部の人々を除く)。

プログラミングでも同じです。

では、オブジェクト指向を実際に遂行するためには、どんなプログラミングの考え方が必要なのでしょうか。それは例えば、

  • クラスとインスタンス
  • メソッド
  • コンストラクターとデストラクター
  • スコープとローカル変数

などでしょう。ここに書かれている話題は少しづつカバーしていく予定です。一緒にオブジェクト指向について理解を深めていきましょう。

 

まとめ

今回は実務レベルのプログラマーに必要とされる「オブジェクト指向」について解説してみました。

少しは理解して頂けたら嬉しく思います。もちろんプログラミングが本当に初心者であれば難しく感じるでしょう。実際、僕もプログラミングの勉強を始めてから二週間も経ってませんから難しいと感じています。

でも少しづつ、実務レベルに近づけるよう、また人々から尊敬されるようなプログラマーになりたいと思っていますし、システムエンジンになりたいです。

その思いに近づけるよう頑張っていきますので、これからプログラミングを始める人、一緒に頑張っていきませんか?

以上、オブジェクト指向についてでした。

SPONSORED LINK

更新情報はSNSでお届け

コメントを残す

メールアドレスが公開されることはありません。

ABOUTこの記事をかいた人

HIRO

旅・音楽・プログラミング・ブログを愛するコンテンツ・クリエーター、ミニマリスト。ガジェット、海外ドラマ、旅行が好きで、趣味は読書。都内のIT企業でSEとして働いています。※このブログでの発言はすべて個人に帰属し、企業や団体とは一切関連がありません(PRを除く)。