オブジェクト「指向」って何よ?(笑)
プログラミングの学習を始めると最近よく聞く言葉です。
オブジェクト指向
こんにちは。ディーキャリアITエキスパート名古屋丸の内オフィスの志村です。
○○○「指向」というのは、「○○○を意識した」・・・とか、「○○○の考え方を用いた」・・・という意味のようです。
だから、オブジェクト指向プログラミングは『オブジェクトの考え方を用いたプログラミング』ということです。
ところで、「オブジェクト」って何じゃい?・・・です(笑)
新しいプログラミングではオブジェクトが問題になるのです。
「オブジェクトとは何か?」という質問がまずあるものですから、オブジェクトとはどういうものかの説明がプログラミングの参考書に出てくるようになりました。
うん、それでね・・・これが何か難しいのです(苦笑)
曰く、世の中はオブジェクトでできているそうです。
いや、世の中のあらゆるものを「オブジェクト」で表現するのだと・・・ある人は説明します。
逆に言えば「オブジェクト」は世の中を表現できる概念なんですね。
システムやプログラムは、世の中の何か(業務とか仕組みとか)をプログラム化している訳だからオブジェクトによって作れるのですよ。
スゴイねぇ、難しいねぇ。
そういう説明があるかと思えば、いきなりシステムを考えるところから入る場合もあります。
例えば、まず学生管理システムを考えてみましょう、となる。
これは・・・「フェイスブック」ですね。(^_^)V
フェイスブックは元々、学生を「管理する」・・・正確には学生のカリキュラムを管理したり、学生が交流したりできるシステムをザッカーバーグ君(SNSサイト「Facebook(フェイスブック)」を立ち上げた)が作ったシステムです。
だからね、まずは学生管理システムを作ってみようと言う。
学生にはどんなデータ(属性)があるかを考えます。氏名とか性別とか生年月日とか学生番号とか・・・・。
それをどう処理するかの処理も考えます。処理を「メソッド」(要するに関数・functionのことです)と云います。
その属性と処理を一つにまとめたらね・・・扱いやすいでしょう。
それがオブジェクトで、これを設計したものが「クラス」なんだよ・・・・とか教える訳です。
何となく「オブジェクト」が分かってきましたか?
そういう考え方をするのが・・・オブジェクト指向プログラミングです、と言います。(^_^)V
・・・はい、皆さんの「頭・考え方」・・・段々、オブジェクト指向になってきましたでしょうか?(^_^)
まだ?無理?困ったねぇ・・・(笑)
さて、そうこう言っているとね(^_^)・・・今時のプログラミング言語(スクリプト系言語)ではこんなふうに学習していきます。
プログラムに「配列」ってあるじゃないですか。
配列は順番にデータにアクセスするまとまったデータの集まり・かたまりです。
「○番目のデータ」という考えをします。順番をインデックスとか言います。
でもね、順番じゃなくて「キーワード」を使いたい場合があるでしょ。
データの集まりなんだけれど、そのデータに「キーワード」が付いている。
「順番・インデックス」でデータにアクセスするのではなくて、キーワードでアクセスします。
配列だったらね、0番目(プログラムの多くで最初の順番は0番目だと習います。これはC言語プログラミングが広めた考え方です。1番目からじゃないのね・苦笑)が”リンゴ”というデータで、1番目が”みかん”、2番目が”バナナ”・・・とします。
キーワードでアクセスするやり方はね、「apple」だったら”リンゴ”で、「orange」だったら”みかん”で、「banana」だと”バナナ”・・・というふうになります。(今、適当にキーワードを英単語にしました・笑)
あるプログラミング言語だと、これを「連想配列」とか「ハッシュ」とか言います。
キーワードでデータにアクセスするって考え方はいいね。
それがね、JavaScript(ジャバスクリプト)というプログラミング言語だと、これを「オブジェクト」と言います。
まあ、JavaScriptでも「連想配列」という言葉を使う人もいますけれどね、JavaScriptでは連想配列をもっと拡張して考えます。
データをキーワードでアクセスするという部分に加えて、関数・メソッドもひと纏めに使うから「オブジェクト」なんです。
最初の説明と繋がりましたか?(^^)
オブジェクトはね、いろいろなアプローチで理解することができます。
データをひと纏めに扱う「連想配列」的な考え方に、さらにそのデータを扱うための処理・関数・メソッドも一緒にまとめてしまう・・・。
そういう、データのまとまりから考えると・・・理解しやすくないですか?
それがオブジェクトです。
だからね、プログラムが扱うデータが何か・・・それをキーワードでアクセスできるようにまとめておく。
学生を管理するシステム・プログラムだったら、まず学生を扱うためのデータを「学生番号、氏名、生年月日、性別、選択している科目・・・など」をキーワードとして一つにまとめるわけです。
それでその学生番号を登録したり編集したりする処理(メソッド)を用意してオブジェクトの中にいれておく。
氏名を登録したり編集したりする処理(メソッド)もです。
この学生のオブジェクトが科目を選択する処理(メソッド)も作っておきます。
オブジェクトは親子関係を作ることができます。
「継承」と言いますが、プログラミングの効率化ができます。プログラミング方式が時代と共にいろいろ変わってきていますが、その大きな原動力は「生産性の向上」です。
つまり効率化です。
「カプセル化」という考え方も重要です。これでオブジェクトの再利用性が高まります。
変更する時に影響する部分を局所化できるので、可変性・メンテナンス性が高まります。
オブジェクト指向の考え方をうまく使うためには設計が重要です。
実際にプログラムを作る段階のちょっと手前で、システムやプログラムをどう作るかの「設計」がオブジェクト指向になっていると、スムーズにシステムを組み上げることができます。
まあ、そういうことを全体的に見渡し、考えることができるエンジニアはかなり力のある技術者ですけどね。
皆さん、頑張って天才エンジニア・・・目指してください。(^o^)
さてそれで、わたしはディーキャリアITエキスパート名古屋丸の内オフィスにいます。どうぞよろしく。(^o^)
ディーキャリアITエキスパート名古屋丸の内オフィス
・電話052-218-4877
・メール it-nagoyamarunouchi@dd-career.com
・所在地:〒460-0002
愛知県名古屋市中区丸の内2-17-22丸の内桜通ビル2階
・HP:https://dd-career.com
ITエキスパート名古屋丸の内のブログ一覧
オフィス情報
ITエキスパート名古屋丸の内オフィス
- アクセス
- 名古屋市営地下鉄 桜通線/鶴舞線「丸の内駅」3番出口すぐ
- 電話番号
- 052-218-4877